0

有没有办法使用 python 在现有工作簿中访问 excel(2007) 中的 vb 编辑器,而不是像这样声明 Excel 实例并在内存中创建工作簿:

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)  # vbext_ct_StdModule

sCode = '''sub VBAMacro()
       msgbox "VBA Macro called"
      end sub'''

xlmodule.CodeModule.AddFromString(sCode)
4

1 回答 1

0

您创建新工作簿的唯一原因是您明确要求 Excel 这样做。这一行:

ss = xl.Workbooks.Add()

…正在调用对象的Add方法Workbooks。正如文档所说,正如您对名称所期望的那样,这是:

创建一个新工作簿。新工作簿成为活动工作簿。返回一个Workbook对象。


如果您想访问现有的怎么办?像所有其他集合一样,Workbooks拥有CountItem

返回集合中的对象数。

从集合中返回单个对象。

因此,您可以获得第一个现有工作簿,或者您可以遍历所有工作簿以找到您想要的名称,或者......任何看起来合适的。


如果您想打开磁盘上的文件并访问该工作簿怎么办?Workbooks还有Open

打开工作簿。


如果不清楚如何使用这些方法,请在文档中单击它们,它们会为您提供完整的签名和对它们作用的完整描述。例如,Open看起来像:

expression.Open(FileName, UpdateLinks, ReadOnly, Format, Password, WriteResPassword, IgnoreReadOnlyRecommended, Origin, Delimiter, Editable, Notify, Converter, AddToMru, Local, CorruptLoad)

从下面的图表中,您可以看到所有这些参数都是可选的。很可能你唯一想给它的是FileName.

于 2013-10-25T22:33:58.477 回答