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

Страницы: 1
VBscript как узнать номер строки или номер столбца выбранной ячейки используя ACE.OLEDB и SQL запрос?
 
Это действительно - выход.
Но что делать со старыми файлами, где нет такого листа?

Получилось запустить питон из VBS. Осталось подобрать библиотеку, и прикрутить передачу параметров из VBS в скрипт питона.
Ну и с синтаксисом питона покопаться в доках
VBscript как узнать номер строки или номер столбца выбранной ячейки используя ACE.OLEDB и SQL запрос?
 
Андрей VG, не подскажите ли бесплатную библиотеку по работе с xls файлами?
Мне по сути то требуется - экспорт в XML или CSV. Конечно, хотелось бы сразу в нормальном виде. Но можно и потом XML/CSV переделать.

Может есть волшебный способ из VBScript запускать скрипты на питоне?
Изменено: Alex_Dom - 9 Сен 2019 14:06:41
VBscript как узнать номер строки или номер столбца выбранной ячейки используя ACE.OLEDB и SQL запрос?
 
Я в экселе использую именнованные ячейки с конкретной целью - не переписывать скрипты, в случае изменения верстки экселевского файла (поменялось положение ячейки с B1 на J1 - лезь в код).
Не использовать именованные ячейки, это как книгу на 96 полос верстать, или дипломную работу в ворде, не используя стили.

Мне требуется вывести данные из таблицы, количество строк в которой неизвестно, но известно что она начинается с ячейки CustomerName.

На сервере можно запустить шел/JScript/VBscript
Они запускаются модулем серверной программы. Которая в скрипт еще и внутренние переменные данные передаёт.
VBscript как узнать номер строки или номер столбца выбранной ячейки используя ACE.OLEDB и SQL запрос?
 
Эх...
В VBA всё было проще
Код
i = Range("CustomerName").Row
Нельзя на сервер использовать Excel.Application, нужно через какуюнибудь библиотеку читать xls файл
Видимо через ACE.OLEDB мне никак не получится получить номер строки нужной ячейки.
Значение ячейки не уникально :(

Может посоветуете какую библиотеку для чтения xls без экселя?
VBscript как узнать номер строки или номер столбца выбранной ячейки используя ACE.OLEDB и SQL запрос?
 
Вот пример.
Код
'Читаем данные из XLS файла
Dim connStr, objConn, getNames
connStr = "Provider=Microsoft.ACE.OLEDB.12.0; Data Source=" & inputFile & ";Extended Properties=""Excel 12.0 xml;HDR=No;IMEX=2;"";"

Set objConn = CreateObject("ADODB.Connection")
'Open Connection
objConn.open connStr

'Define recordset and SQL query
'тут мы через SQL запрос вытаскиваем данные из ИМЕННЫХ ячеек экселевского файла. Всё это в массив
Set rs = objConn.execute("SELECT * FROM JobNamber,CustomerName,CutTools")

'присваиваем значения переменным из массива
DO WHILE NOT rs.EOF
JobNamber = rs.Fields(0)
CustomerName = rs.Fields(1)
CutTools = rs.Fields(2)
rs.MoveNext
Loop


'Close connection XLS and release objects
objConn.Close
Set rs = Nothing
Set objConn = Nothing

Собственно, если я делаю запрос

Код
Set rsRow = objConn.execute("SELECT * FROM CustomerName")
Как мне в rsRow получить номер строки этой ячейки а не данные из неё?

VBscript как узнать номер строки или номер столбца выбранной ячейки используя ACE.OLEDB и SQL запрос?
 
Использую VBscript  для чтения XLS файла на сервере без использования Excel используя библиотеку ACE.OLEDB
Как узнать номер строки или номер столбца выбранной ячейки?
Я правильно понимаю, ACE.OLEDB позволяет читать xls только через SQL запросы?
Подключение библиотеки через VBA
 
Спасибо большое. Всё заработало. Материал почитаю. Нужно разбираться
Подключение библиотеки через VBA
 
Если я через референцес подключаю, то всё ок.
https://yadi.sk/i/CYNeWJ0QmXTzMg
Но мне нужно подключать не вручную, а через скрипт.
Ошибка:
https://yadi.sk/i/xEu4Q3Lhu_Ysuw
Изменено: Alex_Dom - 20 Авг 2019 14:10:44
Подключение библиотеки через VBA
 
Не получается скриптом подключить библиотеку для работы с MySQL
Код
Dim s As String
s = "C:\Program Files\Common Files\System\ado\msado15.dll"
ThisWorkbook.VBProject.References.AddFromFile s
    Dim oConn As Object
    Set oConn = New ADODB.Connection
    
    
    oConn.Open "DRIVER={MySQL ODBC 3.51 Driver};" & _
        "SERVER=localhost;" & _
        "DATABASE=pprint;" & _
        "UID=root;" & _
        "PASSWORD=;" & _
        "PORT:3306;" & _
        "charset=cp1251;" & _
        "Option=3;"
 'Ïîëó÷åíèå äàííûõ èç áàçû äàííûõ
        Dim cmd As ADODB.Command 
    Set cmd = New ADODB.Command
    
    Dim rec As ADODB.Recordset 
    Set rec = New ADODB.Recordset
    Set cmd.ActiveConnection = oConn 
    cmd.CommandText = "SELECT * FROM tools  WHERE IDCUT= '" & mstr & "'" 
    cmd.CommandType = adCmdText
    cmd.Execute
    rec.Open cmd

    With rec

        
    Distorsia = Replace(.Fields("HDist").Value, ",", ".")
    Zub = .Fields("zub").Value
        DPrint = Replace(.Fields("HPrint").Value, ",", ".")
    Polimer = Replace(.Fields("HPolimer").Value, ",", ".")

        'äëÿ ïîëèìåðà 1.7
        Polimer17 = Replace(.Fields("Hpolimer_17").Value, ",", ".")
        Distorsia17 = Replace(.Fields("Hdist_17").Value, ",", ".")
    Vsheet = Replace(.Fields("Vsheet").Value, ",", ".")

        HCountItem = .Fields("HCountItem").Value
    VCountItem = .Fields("VCountItem").Value

    End With

Пробую напрямую dll добавить.
Код
Dim s As String
s = "C:\Program Files\Common Files\System\ado\msado15.dll"
ThisWorkbook.VBProject.References.AddFromFile s
Где ошибка?
VBA данные из MySQL в переменные
 
Отлично. Спасибо большое.
Осталось сообразить пару страничек на PHP для вывода таблицы и её правки.
Изменено: Alex_Dom - 20 Авг 2019 10:52:32
VBA данные из MySQL в переменные
 
Спасибо огромное.

Вот так работает:
Код
 'Получение данных из базы данных
   Dim cmd As ADODB.Command  'переменная в которой будет запрос
    Set cmd = New ADODB.Command
    
    Dim rec As ADODB.Recordset 'переменная в которой будет результат запроса
    Set rec = New ADODB.Recordset
    Dim test As String
    Set cmd.ActiveConnection = oConn 'указываем соединение из примера выше
    cmd.CommandText = "SELECT * FROM tools  WHERE IDCUT= 'A1014'" 'собственно, запрос
    cmd.CommandType = adCmdText
    cmd.Execute
    rec.Open cmd

    With rec
    test = .Fields("HPrint").Value
    test1 = .Fields("Vsheet").Value
    End With
  • Не подскажите, нужно ли как-то закрывать соединение с БД?
    У меня же к БД будут подключаться и другие пользователи с запросами.
  • И как в запрос вставить переменную? Т.е. вместо A1014 подставить переменную CutTools
VBA данные из MySQL в переменные
 
Есть БД с таблицей

Подключаюсь по коду:
Код
' Собственно, попробовать подключиться к БД:
    Dim oConn As Object
    Set oConn = New ADODB.Connection
    
    oConn.Open "DRIVER={MySQL ODBC 3.51 Driver};" & _
        "SERVER=localhost;" & _
        "DATABASE=pp_cut;" & _
        "UID=root;" & _
        "PASSWORD=;" & _
        "PORT:3306;" & _
        "charset=cp1251;" & _
        "Option=3;"
 'Получение данных из базы данных
    Dim cmd As ADODB.Command  'переменная в которой будет запрос
    Set cmd = New ADODB.Command
    
    Dim rec As ADODB.Recordset 'переменная в которой будет результат запроса
    Set rec = New ADODB.Recordset
    Dim test As String
    Set cmd.ActiveConnection = oConn 'указываем соединение
    cmd.CommandText = "SELECT HDist FROM tools  WHERE IDCUT= 'A1014'" 'собственно, запрос
    cmd.CommandType = adCmdText
        
    Set rec.ActiveConnection = oConn
    rec.Open cmd
    
    oConn.Close
Брал из примера

Собственно, вот в чём вопрос:
У меня порядка 8 столбцов в таблице. По запросу нужно найти строку в столбце IDCUT = некой переменной. Далее из результата (у нас же выходит одна строка) нужно столбцы в переменные записать.
Например переменная test = колонке 'HPrint', test1 = Vsheet

Как это сделать?
VBA скрипт для Excel - Как вставить значение из mdb файла Access по SQL запросу без названия столбца
 
Спасибо. Заработало
Код
Sub SQLQuery_1()
Dim varConn As String
Dim varSQL As String   
    Range("A1").CurrentRegion.ClearContents
   
    varConn = "ODBC;DBQ=\\Server-esko\ae_base\BD_CutTools.mdb;Driver={Driver do Microsoft Access (*.mdb)}"
   
    varSQL = "SELECT HCountItem FROM cut_tools WHERE cut_name='A141'"
   
         With ActiveSheet.QueryTables.Add(Connection:=varConn, Destination:=Cells(1, 1))
         .FieldNames = False
             .CommandText = varSQL
             .Name = "Query-39008"
             .Refresh BackgroundQuery:=False  
         End With
End Sub
Изменено: Alex_Dom - 20 Фев 2019 20:14:50
VBA скрипт для Excel - Как вставить значение из mdb файла Access по SQL запросу без названия столбца
 
Я не силён в VBA. Не подскажете код решения?
VBA скрипт для Excel - Как вставить значение из mdb файла Access по SQL запросу без названия столбца
 
Использую VBA скрипт в  Excel для вставки в ячейку таблицы Excel данных по SQL запросу из БД Access (файл mdb).
Вот сам скрипт. Он работает:
Код
Sub SQLQuery_1()
Dim varConn As String
Dim varSQL As String
  
    Range("A1").CurrentRegion.ClearContents
  
    varConn = "ODBC;DBQ=\\Server-esko\ae_base\BD_CutTools.mdb;Driver={Driver do Microsoft Access (*.mdb)}"
  
    varSQL = "SELECT HCountItem FROM cut_tools WHERE cut_name='A141'"
  
         With ActiveSheet.QueryTables.Add(Connection:=varConn, Destination:=Cells(1, 1))
             .CommandText = varSQL
             .Name = "Query-39008"
             .Refresh BackgroundQuery:=False
         End With
  
End Sub
Проблема в том, что в Excel вставляется помимо результата SQL запроса, еще и название столбца(ов) Access. Как сделать что бы не вставлялись названия столбцов?
VBA Экспорт в XML из таблицы значений без дублей сравнивая 2 столбца
 
Вот так мне нужно
VBA Экспорт в XML из таблицы значений без дублей сравнивая 2 столбца
 
Помогли с решением на другом форуме.
Выкладываю. Вдруг кому-то пригодится.
Код
  i = Range("FirstID").Row 'возвращаем номер строки первой ячейки в таблице дизайнов

  With CreateObject("scripting.dictionary")
    .comparemode = vbTextCompare 'не различать регистр
    Do
      .Item(Cells(i, 2) & vbTab & Cells(i, 3)) = Cells(i, 1)
      i = i + 1
    Loop Until Cells(i, 2) = ""  'пока не будет пустой ячейки с именем файла

    For Each x In .keys
      Set FILE = xml.createElement("File")
      FILE.setAttribute "ID", .Item(x)
      FILE.Text = Split(x, vbTab)(0)                          ' название файла
      FILE.setAttribute "Angle", Split(x, vbTab)(1)            ' угол поворота
      objRoot.appendChild FILE
    Next
  End With
VBA Экспорт в XML из таблицы значений без дублей сравнивая 2 столбца
 
Есть таблица:
Номер название файла угол поворота
Экспортирую её в XML.
Последовательно дважды формируется XML. Сначала все строки в определенном формате без угла поворота, только название файла, потом второй блок XML где нужно и название файла, и угол поворота. НО! во втором блоке нужны значения строк без дублей (если название файла и угол одной строки совпадает с другой, то объединить) .
Файл приложил.
Страницы: 1
Наверх