Немного фона на том, что я пытаюсь выполнить Я пишу скрипт vba, который выполняется в моем коде Python для запроса SQL. Я застрял и занимаюсь исследованиями этого ADO.Recordset, который продолжает давать мне «пользовательскую ошибку». Я добавил все необходимые ссылки (насколько мне известно) на код, вызываемый GUID.Ссылка VBA ADO Определенная пользователем ошибка
См. Код ниже.
import pyodbc
import os
import win32com.client as win32
import comtypes, comtypes.client
xl = win32.gencache.EnsureDispatch('Excel.Application')
xl.Visible = True
ss = xl.Workbooks.Add()
sh = ss.ActiveSheet
xlmodule = ss.VBProject.VBComponents.Add(1)
sCode = '''Sub Download_Standard_BOM()
'Initializes variables
Set cn = CurrentProject.Connection
Set rst = New ADODB.Recordset
Dim cn As Object: Set cn = CreateObject("ADODB.Connection")
Dim rst As New ADODB.Recordset
Dim ConnectionString As String
Dim StrQuery As String
ConnectionString = "Provider=SQLOLEDB; Network Library=dbmssocn;Password=******;User ID=******;Initial Catalog=*****;Data Source=************;"
cnn.Open ConnectionString
ThisWorkbook.VBProject.References.AddFromGuid "{2A75196C-D9EB-4129-B803-931327F72D5C}", 2, 3
ThisWorkbook.VBProject.References.AddFromGuid "{000204EF-0000-0000-C000-000000000046}", 2, 3
ThisWorkbook.VBProject.References.AddFromGuid "{00020813-0000-0000-C000-000000000046}", 2, 3
ThisWorkbook.VBProject.References.AddFromGuid "{00020430-0000-0000-C000-000000000046}", 2, 3
ThisWorkbook.VBProject.References.AddFromGuid "{00000600-0000-0010-8000-00AA006D2EA4}", 2, 3
ThisWorkbook.VBProject.References.AddFromGuid "{00025E01-0000-0000-C000-000000000046}", 2, 3
ThisWorkbook.VBProject.References.AddFromGuid "{00000300-0000-0010-8000-00AA006D2EA4}", 2, 3
cnn.CommandTimeout = 900
StrQuery = "SELECT * FROM car_search WHERE search_id = 9999999"
rst.Open StrQuery, cnn
Sheets(1).Range("A2").CopyFromRecordset rst
End Sub'''
xlmodule.CodeModule.AddFromString(sCode)
xl.Run ('Download_Standard_BOM')
Я ценю всю помощь, которую вы, ребята, обеспечиваете!
«CurrentProject.Connection» - это вещь Access: она не существует в Excel VBA. Не ясно, что там делает, поскольку вы устанавливаете 'cn' на это (но перед объявлением), а затем позже устанавливаете' cn' снова ... –
Ах, спасибо Тим Я удалил это из программы, но, к сожалению, получил ошибку, относящуюся к ADODB.Recordset – phtnm28
Несвязанный, но вы должны добавить ссылки на проекты, если их нет, в специальном процедура, * до * вы открываете соединение (чтобы подключение открывалось только до тех пор, пока оно вам нужно) - это говорит о том, что вы являетесь поздним связыванием ADODB, так что же это за идентификаторы GUID? –