【问题标题】:Using Python to Call Excel Macro That Opens All Files in a Folder使用 Python 调用打开文件夹中所有文件的 Excel 宏
【发布时间】:2017-03-25 23:59:52
【问题描述】:

我有一个 Python 程序(如块 1 所示),用于打开一个 Excel 文件并调用一个宏。

Excel 宏(如块 2 所示)打开特定文件夹中的所有 Excel 文件。

Python 程序打开 Excel 文件并调用宏,我已经用不同的文件对其进行了测试,但是当我尝试这个 Excel 文件时,它会打开但宏没有运行。

这里是 Python

from win32com.client import Dispatch
xl = Dispatch('Excel.Application')
wb = xl.Workbooks.Open("K:\\updatebloomberg.xlsm")
xl.Visible = True
wb.Application.Run("'updatebloomberg.xlsm'!Module1.runfiles()")
wb.Close(True)

这里是 VBA

Sub runfiles()

Dim wb As Workbook
Dim myPath As String
Dim myFile As String
Dim myExtension As String
Dim ws As Worksheet
Dim c As Range

  myPath = "K:\Bloomberg Data\"

  myExtension = "*.xlsx"

  myFile = Dir(myPath & myExtension)

  Do While myFile <> ""
      Set wb = Workbooks.Open(Filename:=myPath & myFile)
      myFile = Dir
  Loop

Application.OnTime (Now + TimeValue("00:00:02")), "refreshSheet"

End Sub

【问题讨论】:

    标签: python excel vba


    【解决方案1】:

    你到底为什么要这样做????

    import glob
    
    for fnam in glob.glob("K:\Bloomberg Data\*.xlsx"):
        os.startfile(fname)
    

    如果这不起作用,您是否检查过您的网络驱动器((K 我假设是一个网络驱动器)当您查看文件资源管理器时,上面没有 X)

    【讨论】:

    • 值得注意的是,os.startfile 使用您计算机上设置的默认程序(excel 文件通常是这种情况,但对于 csv 等其他文件类型并非总是如此)。 ,您可以使用subprocess 指定用于打开文件的excel 可执行文件。
    • 哈。公平的问题 - 我这样做基本上是因为我有一个宏几乎可以完成我想要的所有事情(更多的事情发生在宏后面的所有文件中)而且我是 python 新手。显然更好的方法。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多