miao_le_ge_mi 2021-09-26 11:41
浏览 58
已结题

python win32com 运行word宏传参问题

win32com 模块传参报异常。
我的vba代码如下:

Sub 图片导入()
'
' 图片导入 宏
'
'
    a = InputBox("同APP下打开的world文档名称?")
    b = InputBox("需要插入图片的位置?")
    
    Windows(a).Activate
    Selection.Find.ClearFormatting
    With Selection.Find
        .Text = b
        .Replacement.Text = ""
        .Forward = True
        .Wrap = wdFindContinue
        .Format = False
        .MatchCase = False
        .MatchWholeWord = False
        .MatchByte = True
        .MatchWildcards = False
        .MatchSoundsLike = False
        .MatchAllWordForms = False
    End With
    Selection.Find.Execute
    Selection.PasteExcelTable False, False, False
    Selection.Tables(1).Rows.Alignment = wdAlignRowCenter
    Selection.Tables(1).AutoFitBehavior (wdAutoFitContent)
    Selection.Tables(1).AutoFitBehavior (wdAutoFitContent)
End Sub


Sub 图片导入2(a, b)
'
' 图片导入 宏
'
'
   
    Windows(a).Activate
    Selection.Find.ClearFormatting
    With Selection.Find
        .Text = b
        .Replacement.Text = ""
        .Forward = True
        .Wrap = wdFindContinue
        .Format = False
        .MatchCase = False
        .MatchWholeWord = False
        .MatchByte = True
        .MatchWildcards = False
        .MatchSoundsLike = False
        .MatchAllWordForms = False
    End With
    Selection.Find.Execute
    Selection.PasteExcelTable False, False, False
    Selection.Tables(1).Rows.Alignment = wdAlignRowCenter
    Selection.Tables(1).AutoFitBehavior (wdAutoFitContent)
    Selection.Tables(1).AutoFitBehavior (wdAutoFitContent)
End Sub

在word文件中运行vba程序正常,但是在python中庸win32调用vba运行一直报错,但是调用其他不需要传参的vba可以正常运行。python代码如下:


docApp = win32com.client.DispatchEx('Word.Application')
    doc = docApp.Documents.Open(doc_path)
    vba_doc = docApp.Documents.Open(vba_path_world)
    for pic in pictures:
        print(pic)
        sheet.range(pic.split('-')[1]).api.Copy()
        docApp.Application.Run(f"{vba_path_world}!图片导入2",'a.docx',pic)  
        print('ok')

    doc.Save()
    vba_doc.Save()
    docApp.Quit()

    vba_xlsm_wb.close()

错误代码如下:
Traceback (most recent call last):
File "E:\个人\python\python_excel\新建文件夹\Excel转换为world.py", line 176, in
docApp.Application.Run(f"{vba_path_world}!图片导入2",'T$$-c61') #,doc_save_name,pic
File "<COMObject >", line 8, in Run
File "C:\Users\Administrator\AppData\Local\Programs\Python\Python39\lib\site-packages\win32com\client\dynamic.py", line 314, in ApplyTypes
result = self.oleobj.InvokeTypes(*(dispid, LCID, wFlags, retType, argTypes) + args)
pywintypes.com_error: (-2147352567, '发生意外。', (0, None, None, None, 0, -2147352573), None)

Process finished with exit code 1

查了半天也没有找出问题,请大家指点,谢谢。

  • 写回答

0条回答 默认 最新

    报告相同问题?

    问题事件

    • 系统已结题 10月4日
    • 修改了问题 9月26日
    • 创建了问题 9月26日

    悬赏问题

    • ¥20 关于游戏c++语言代码问题
    • ¥15 如何制作永久二维码,最好是微信也可以扫开的。(相关搜索:管理系统)
    • ¥15 delphi indy cookie 有效期
    • ¥15 labelme打不开怎么办
    • ¥35 按照图片上的两个任务要求,用keil5写出运行代码,并在proteus上仿真成功,🙏
    • ¥15 免费的电脑视频剪辑类软件如何盈利
    • ¥30 MPI读入tif文件并将文件路径分配给各进程时遇到问题
    • ¥15 pycharm中导入模块出错
    • ¥20 Ros2 moveit2 Windows环境配置,有偿,价格可商议。
    • ¥15 有关“完美的代价”问题的代码漏洞