Поиск  Пользователи  Правила 
Закрыть
Логин:
Пароль:
Забыли свой пароль?
Регистрация
Войти
 
Выбрать дату в календареВыбрать дату в календаре

Страницы: 1
VBA: корректная выборка типа double по ADO из листа excel.
 
Здравствуйте, коллеги!

Столкнулся со следующей ситуацией:
делаю выборку select'ом по листу книги и вставляю результат в другой лист, функционал простой:
Код
    Dim SQLConn As Object, Recordset As Object
    Dim i As Integer
    Set SQLConn = CreateObject("ADODB.Connection")
    SQLConn.CursorLocation = 3
    SQLConn.Open "Provider=Microsoft.Ace.OLEDB.12.0; Extended Properties=""Excel 12.0; HDR=Yes;""; Data Source=" & ActiveWorkbook.FullName
    Set Recordset = SQLConn.Execute("SELECT [TypeNum], [TypeStr] FROM [db$]")
    ReDim arr(Recordset.RecordCount - 1, Recordset.Fields.Count - 1)
    i = 0
    Do While Not Recordset.EOF
        arr(i, 0) = Recordset.Fields("TypeNum")
        arr(i, 1) = Recordset.Fields("TypeStr")
        i = i + 1
        Recordset.MoveNext
    Loop
    ThisWorkbook.Sheets("result").Cells(1, 1).Resize(Recordset.RecordCount, Recordset.Fields.Count) = arr
Если в столбце TypeNum тип числовой, то дробные числа при перечислении выводятся как Null.
Если тип столбца текстовый (как в TypeStr), то все ок.

Можно конечно использовать граблю в виде преобразования столбца в текстовый формат, но я хочу понять сей опус.
Куда смотреть?

Ну и по канону, файл с данными во вложении.
Выпадающий список - исключить определенные элементы из именованного диапазона
 
Добрый день, коллеги!

Ни разу не формулист, гугл плохо помогает - мне необходима подсказка в решении формирования выпадающего списка из сводной на отдельном листе, где присутствуют нежелательные элементы как "(пусто)" или "(blank)", так и "шаверма" в списке фруктов. Их то и надо отсечь.
Список формирую с помощью диспетчера имен на динамическом диапазоне сводной(чтобы в будущем автоматически расширять список).

Файлик с примером прикладываю.

p.s. "(пусто)" или "(blank)" не заменяются пробелом в параметрах сводной.
Условное форматирование для ряда строк с проверкой суммирования значений
 
Приветствую, коллеги!

Нужна помощь в плане формул условного форматирования, если это вообще реально:
Имеется таблица с ID, числовым значениями и суммой.
Когда начинается строка с новым ID, в этой строке прописывается сумма и первое число, в остальных строчках с этим же ID идут просто числа. Какой формулой для условного форматирования можно посчитать СУММУ этих чисел с одинаковыми ID и сравнить с первоначальной суммой в первой строке этого ID? И если сумма на совпадает с суммой чисел, то закрашиваем этот ряд с одинаковыми ID красным.
Может описание слишком запутанное, прикладываю файлик-пример где наглядно показано.

p.s. это конечно можно сделать vb кодом, но меня интересует именно УФ.
p.p.s. без доп.столбцов.
Подключение к базе данных oracle через по connection string
 
Добрый день, коллеги!

Я немного в тупике при попытке подключиться к базе данных, какая там БД мне не известно. Предполагаю, что это oracle.
Есть строка подключения вида:
Скрытый текст
данные {0}, {1}, {2} у меня имеются.
В файле tnsnames.ora вижу запись для Data Source.
Вопрос, как правильно записать connection string в коде? Точнее какой провайдер прописать, если использовать подобную структуру?
Код
Data Source=(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=MyHost)(PORT=MyPort))(CONNECT_DATA=(SERVICE_NAME=MyOracleSID)));
User Id=myUsername;Password=myPassword
Отличить "тонкий" клиент от "толстого". VBA
 
Здравствуйте, уважаемые.

Подскажите пожалуйста, как можно просто(без костылей) определить, с какого клиента выполняется код?
Небольшое отступление: собираюсь делать рассылку писем посредством vba, связкой excel + outlook. В полноценной системе outlook присутствует, в тонком же клиенте - нет, поэтому встала необходимость как-то уведомлять пользователя, что на его клиенте отсутствует outlook. К тому же, на тонких клиентах "хромает русификация" диалоговых окон(каракули в msgbox), соответственно подставлять на тонких клиентах eng перевод.

Как я на данный момент вижу решения:
1. На клиентах определять версии excel(на тонких 2007, на толстых 2013). Не факт, что в будущем, на сервере, который работает с тонкими клиентами, сделают апгрейд excel.
2. Проверка установленного outlook в системе - чтение данных в ветке реестра, либо кодом что-то типа:
Код
On Error Resume Next
Set oApp = CreateObject("Outlook.Application")
If oApp Is Nothing Then Exit Sub
3. Проверка на наличие физического диска?*

*Пока нет возможности проверить все это, я пытаюсь подготовиться заранее. Если у кого-то был подобный опыт, поделитесь пожалуйста.
Сбрасывается назначенный фигуре макрос
 
Добрый вечер, форумчане!
Столкнулся с такой проблемой, не могу понять причину, выручайте.
Есть макрос, который открывает выбранную книгу, далее ищет в родительской книге нужный лист, найдя его, этот лист удаляется и копируется в родительскую книгу из открытой.
Вроде все ничего, но с кнопки(фигура) после всех манипуляций макроса, сбрасывается назначенный на нее этот же макрос.  :sceptic:
В общем, дабы не грузить вас писаниной, прикрепляю архив с двумя файлами(основной - delsheet.xlsm, вторичный - test.xlsm).
Жмете на фигуру и выбираете test.xlsm.
Excel 2007 сборка - 12.0.4518.1014. Грешу на эту сборку экселя и на свою криворукость.
Проверьте пожалуйста, как будет работать у вас.
Вывести данные на другой лист первых десяти видимых ячеек при фильтрации, Формулами
 
Добрый вечер, форумчане!
Формулист из меня никудышный, поэтому обращаюсь за помощью к Вам :)
Имеется 2 листа, в первый поступают данные из второго в виде формул. Формируется топ 10(это если во втором листе сделать сортировку от наибольшего к меньшему) и все путем, формула самая простая: =Лист2!B2, =Лист2!B3 и т.д.
Но, если мне захотелось кроме сортировки еще и фильтр сделать по определенным данным из соседнего столбца, тут такие формулы не прокатят естественно.
Как можно победить сию сложность?
Файл прикрепил, во втором листе уже отфильтровано по значению "2".
p.s. знаю, что можно скриптом, но тема про формулы.
Код
Set Rng = Range(Cells(2, 1), Cells(Cells(Rows.Count, 1).End(xlUp).Row, 1)).SpecialCells(xlVisible)
For Each r1 In Rng.Areas
    For Each r2 In r1
        Debug.Print r2
    Next r2
Next r1
Строка подключения в публичной константе
 
Приветствую, форумчане!

Имеется база данных access, вся работе идет с excel книги.
И дабы не писать каждый раз везде строку подключения, я вывел ее в публичную константу:
Код
Public Const ConnectionString As String = "Provider=Microsoft.ACE.OLEDB.12.0; Data Source=C:\database.accdb; Jet OLEDB:Database;"
Все работает, но мне захотелось сделать привязку пути в строке на ячейку.
Т.е. допустим, в ячейке A1 находится путь C:\database.accdb, соответственно пытался изменить константу на:
Код
Public path As String
Public Const ConnectionString As String = "Provider=Microsoft.ACE.OLEDB.12.0; Data Source=" & path & ";" & "Jet OLEDB:Database;"
Где path принимает строку с ячейки A1.
Выдает ошибку - constant expression required. Понятное дело, что константа она на то константа, что менять ее нельзя. Но неужели ее никак нельзя объявить как типа String один раз и работать постоянно с ней?
Запретить PowerPoint поворачивать рисунок при импорте, Импортировать рисунок "как есть"
 
Добрый вечер! :)

Имеется рабочая книга excel, где заносятся списки фотографий, добавляются данные и впоследствии импортируются в созданную презентацию.
Во вложении обрезанный файл для понимания вопроса темы.

Вопрос:

Если взять любую фотографию(оригинал), которая отснята вертикально и открыть ее стандартным средством просмотра фотографий Windows, то мы увидим изображение как есть, т.е. перевернутым.
Если импортировать эту фотографию в созданную презентацию при помощи VBA, то PowerPoint повернет ее "как ей положено". Верх будет наверху, низ - внизу.
Как можно избежать данный "каприз" PP?

p.s. если в стандартном средстве просмотра развернуть фото и закрыть(произойдет сохранение), снова открыть и вернуть в изначальную позицию и закрыть, то фото импортируется уже перевернутым.

p.p.s простое пересохранение фотографии не помогает.
Отсутствуют надстройки в программно созданной книге
 
Добрый вечер!

Имеется программа, которая делает выгрузку из базы и портирует данные в книгу, создав её.
На этой открытой книге не отображаются надстройки. Если книгу сохранить и открыть, то все ОК.
Файл прикладывать соответственно смысла нет. Уверен, многие сталкивались с этим и искали решения.
Укажите и мне путь :)
p.s. доступа на запись в program files нет. Надстройку кидал в C:\Users\%USERNAME%\AppData\Roaming\Microsoft\Excel\XLSTART
Выполнение кода и раскрытие списка ComboBox
 
Добрый вечер!

Направьте на путь истинный:

На листе имеется ячейка и сам combobox.
Код поиска по введенному значению честно стырен у The_Prist :)

Если ввести в ячейку E7 цифру, скажем "1", то список combobox раскрывается, а вот если ввести циферку в сам combobox, то ничего не происходит, точнее список раскрывается и по окончанию действия кода закрывается(глазу не видно, только по бряку).

Код
Private Sub ComboBox1_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
Dim a
    If ComboBox1 = "" Then Exit Sub
    a = ComboBox1
    If KeyCode = vbKeyReturn Then
        Call Find_Value(a & "*", Sheets("Data").Range("A:A"))
        ComboBox1.Activate
        ComboBox1.DropDown '???
    End If
End Sub

Возможно ли как-то избежать закрытия списка после ввода данных в combobox?
Собственно сам файл-пример прилагается.
Вытянуть данные из html кода страницы, Patterns
 
Здравствуйте, форумчане!

Застрял на данном месте:
Код
<TR class="TDRowColor1">
<TD>111.222.333</TD>
<TD>NAME</TD>
<TD>1</TD>
<TD>0</TD>
<TD>2</TD>
<TD>1111</TD>
<TD>2222</TD>
<TD>Deleted</TD>
<TD>Deleted</TD>
<TD>Deleted</TD></TR>

Не могу выудить паттерном данные из:
Код
<TR class="TDRowColor1">
<TD>111.222.333</TD>

Подскажите пожалуйста правильный кусок кода:
([0-9]+)
Код
RegExp.Pattern = "class=""TDRowColor1""><TD>([0-9]+)</TD>"
bRes = RegExp.test(htmlcode)
If bRes Then
    Set oMatches = RegExp.Execute(htmlcode)
    Item.Num = oMatches(0).subMatches(0)
End If
Поиск в листе, где формат ячеек специфический
 
Здравствуйте!

Есть база данных в виде отдельного листа, в нем макрос ищет по вводимому номеру значение(цену). Все бы хорошо, но, столбец где прописаны все номера имеет формат ячеек отличительный от остальных(Дополнительный, Тип: АФМ, Язык: греческий), когда значение в ячейке написано как 012345,001234, 000123, а в строке формул показывает как 12345, 1234, 123(отсекает нули).

Подскажите пожалуйста, что изменить в макросе:
Код
   Set f = Intersect(Target, Range("A:A"))
    If f.Cells.Count > 1 Then Set f = f.SpecialCells(xlCellTypeConstants)
    If Not f Is Nothing Then
        For Each cell In f.Cells
            Application.StatusBar = "Поиск цены " & cell
                    If cell Like "######" Then
                    cell.Offset(, 5) = FindAndInsert(db, f, 0, 1)
                End If
            DoEvents
        Next cell
        Application.StatusBar = False
    End If

Чтобы он искал по вводимому номеру 012345, когда в базе 12345.
Почитал про Like, не получается.
p.s. лист с базой трогать не желательно :)
Информацию о выполнении статуса прикрутить в userform
 
Здравствуйте!
Небольшое отступление от сути вопроса. При выполнении задач в окне excel снизу справа есть статусная строка(если я ее правильно назвал):


Суть вопроса: возможно ли посредством vba загружать выполнения статуса в label или во frame на userform?
Поиск результатов не дал, либо я неверно задаю критерии для поиска.
Преобразовать дату в формат ммддггг и разделить слешем (мм/дд/гггг)
 
Здравствуйте!

Есть код:
               
Код
With GetQueryRange("http://")
       cell.Offset(, 1) = FindAndInsert(tmpSheet, "Date:", 0, 1)
End With

который выполняет функцию поиска во временной вкладке tmpSheet дату права от ячейки с текстом "Date:", копирует дату и вставляет в основной лист.
В столбец "B" вставляется скопированная дата из tmpSheet общего формата в виде 160119, а на этот столбец уже применен формат ячеек в виде даты 19.01.16. На выходе получаем 12.05.2338.  :sceptic:
Проблема - книга запаролена, поменять формат ячеек не представляется возможным.
Поиск решения - как переделать код выше, чтобы он перед вставкой в ячейку преобразовал копируемую дату в формат 01/19/2016?
Импорт из веб странички и вставка данных в ячейки макросом, помогите разобраться с макросом
 
Здравствуйте, уважаемые специалисты vba!

Помогите пожалуйста с макросом по импорту из веб странички и вставке данных в нужные ячейки.
Задача в том, что макрос должен "склеить" часть ссылки в своем коде + данные из ячейки, потом импортировать из полученной ссылке данные во временный лист и скопировать необходимую информацию в нужные ячейки в постоянный лист.

Я приложил файл примера написанного на скорую руку и через макрорекордер, надеюсь там более понятнее будет.
p.s. веб страница остается неизменной, меняются только значения, которые должны копироваться.
Страницы: 1
Наверх