无法使用python运行visio宏

问题描述 投票:1回答:1

我正在尝试使用python运行visio宏。到目前为止我得到了这个不起作用我得到错误:AttributeError: <unknown>.Run调用doc.Application.Run时

if os.path.exists("Drawing1.vsdm"):
    visio = win32com.client.Dispatch("Visio.Application")
    visio.Visible = 1
    doc = visio.Documents.Open("Drawing1.vsdm")
    doc.Application.Run("Drawing1.vsdm!test.Read_text_File")

我已经看到一些人们以这种方式运行excel宏的例子

if os.path.exists("excelsheet.xlsm"):
    xl=win32com.client.Dispatch("Excel.Application")
    xl.Workbooks.Open(os.path.abspath("excelsheet.xlsm"))
    xl.Application.Run("excelsheet.xlsm!modulename.macroname")
    xl.Application.Save() 
    xl.Application.Quit()
    del xl

有任何想法吗?

python vba visio pywin32 win32com
1个回答
2
投票

在Visio中,Application对象没有Run方法,但Document上有一个ExecuteLine方法。

因此,如果您的Visio文档具有这样的VBA过程:

    Public Sub SayHello(ByVal name As String)
        MsgBox "Hello " & name & "!", vbOKOnly
    End Sub

然后以下Python将工作:

doc.ExecuteLine('ThisDocument.SayHello "Bob"')
© www.soinside.com 2019 - 2024. All rights reserved.