【问题标题】:Need skeleton code to call Excel VBA from PythonWin需要骨架代码从 PythonWin 调用 Excel VBA
【发布时间】:2010-09-25 15:30:00
【问题描述】:

我需要从 python 脚本调用 Excel 工作簿中的 VBA 宏。其他人为 Excel 工作簿提供了宏。该宏从外部数据库中获取更新的值,并对数据执行一些相当复杂的处理。我需要这个按摩的结果,如果可以避免的话,我真的不想在我的 Python 脚本中复制它。所以,如果我可以从我的脚本中调用宏,并获取经过处理的结果,那就太好了。

我从“Win32 上的 Python 编程”中学到的关于 COM 的一切。好书,但不足以完成我手头的任务。我搜索了,但没有找到任何关于如何做到这一点的好例子。有没有人有任何好的例子,或者可能有一些关于如何寻址/调用 VBA 宏的骨架代码? Excel COM 接口上的一般参考资料(书籍、网络链接等)在这里也会有所帮助。谢谢。

【问题讨论】:

    标签: vba excel com pywin32


    【解决方案1】:

    好的,我明白了!感谢您对 Application.Run 方法的帮助。这些信息,加上“Microsoft Excel Visual Basic 参考”:http://msdn.microsoft.com/en-us/library/aa209782(office.10).aspx——正如 Hammond & Robinson 在“Win32 上的 Python 编程”中所推荐的——正是我们所需要的。

    这是框架代码:

    import win32com.client
    xl=win32com.client.Dispatch("Excel.Application")
    xl.Workbooks.Open(Filename="<your Excel File>",ReadOnly=1)
    xl.Application.Run("<your macro name>")
    #...access spreadsheet data...
    xl.Workbooks(1).Close(SaveChanges=0)
    xl.Application.Quit()
    xl=0
    

    【讨论】:

      【解决方案2】:

      对不起,我对python不够了解。 但是,以下内容应该会有所帮助。

      Excel 的 Application 对象有一个 Run 方法 - 它接受宏的名称及其参数。

      假设工作簿有一个名为 test 的宏。

      Sub test(ByVal i As Integer) MsgBox "hello world " & i End Sub

      您可以使用 Application.Run "test", 1234 调用它

      这将调用宏并显示带有“hello world 1234”的消息框。

      【讨论】:

      • 谢谢。这对一些人有帮助。从 pywin32 方面来看,我仍在寻找显示打开文件的初始步骤并引用完整界面的内容。 PyWin32 显示了支持 Run 方法的接口层次结构的几个部分。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-02-19
      • 2022-08-18
      • 1970-01-01
      • 1970-01-01
      • 2013-12-29
      • 1970-01-01
      相关资源
      最近更新 更多