从Python执行VBAscript

我需要一些关于win32com.client的帮助。 我有代码工作至于从Python创buildmacros,并使用Excel,但我想这个代码也运行vbascript。

谢谢你们所有的好评!

import pyodbc import win32com.client as win32 xl = win32.gencache.EnsureDispatch('Excel.Application') xl.Visible = True ss = xl.Workbooks.Add() sh = ss.ActiveSheet xlmodule = ss.VBProject.VBComponents.Add(1) # vbext_ct_StdModule sCode = '''Sub Download_Standard_BOM() 'Initializes variables Dim cnn As New 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 cnn.CommandTimeout = 900 StrQuery = "SELECT * FROM car_search WHERE shop_id = *******" rst.Open StrQuery, cnn Sheets(1).Range("A2").CopyFromRecordset rst End Sub''' xlmodule.CodeModule.AddFromString(sCode) 

您应该能够使用Excel的Application.Run方法:

 xl.Run "Download_Standard_BOM" 

编辑如果你需要参考ADO,那么你可以使用迟绑定,如下所示:

 Dim cnn As Object 'ADODB.Connection Dim rst As Object 'ADODB.Recordset Set cnn = CreateObject("ADODB.Connection") Set rst = CreateObject("ADODB.Recordset") 

或者,使用早期绑定并添加对VBA项目的引用:

 ss.VBProject.References.AddFromGuid "{2A75196C-D9EB-4129-B803-931327F72D5C}", 2, 8