python word中插入excel文件以图标显示(win32com调用vba代码)

这篇具有很好参考价值的文章主要介绍了python word中插入excel文件以图标显示(win32com调用vba代码)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

参考文章:(5条消息) python extension(pywin32) 插入宏到word_hit_liuanhuaming的专栏-CSDN博客

 

功能需求:在C:\Users\user\Desktop\20210408-1\xxx.docx中插入xxx.xlsx文件以图标显示,如下图:

python word中插入excel文件以图标显示(win32com调用vba代码)

 

1.准备:

1)python模块安装:

pip install pypiwin32

2)word启用宏功能:

文件-选项

python word中插入excel文件以图标显示(win32com调用vba代码)

信任中心-信任中心设置

python word中插入excel文件以图标显示(win32com调用vba代码)

勾选信任对VBA工程对象模型的访问

python word中插入excel文件以图标显示(win32com调用vba代码)

2. python代码:

目标:将C:\\Users\\user\\Desktop\\tianqing-auto\\vba.bas(vba)代码自动嵌入xxx.doc文档中,并执行vba代码

import win32com.client
import pythoncom
import time


def embed_excel_file(filePath,embeddedFilePath,embeddedFileName):

    pythoncom.CoInitialize() # 声明 doc 之前要加入的代码
    #创建word应用程序实例

    docApp = win32com.client.Dispatch('Word.Application')
    # run in back-control and no warnings
    doc=docApp.Documents.Open(filePath)
    docApp.Visible = 1    #值为0操作文档不可见,为1可见
    docApp.DisplayAlerts = 0 #不显示警告信息


    #导入宏代码
    #通过文档实例,获取VBProject的组件,其中VBComponents中的参数至关重要,因为ThisDocument表示该文档,也就是说所有这篇生成文档的操作在该组件中都可以捕获#到,那么就可以在里面创建Document_Open函数来监控文档被打开

    docCode = doc.VBProject.VBComponents("ThisDocument").CodeModule
    macro = ""

    #vba.bas为宏文件,需要导入到ThisDocument,ThisDocument即对应word下,按Alt+F11,调出vba窗口,该文档下的Microsoft Word对象下的ThisDocument。
    string=open("C:\\Users\\user\\Desktop\\tianqing-auto\\vba.bas")
    macro=string.read()
    docCode.AddFromString(macro)
    print("embeddedFileName:",embeddedFileName)
    docApp.Application.Run("delandinsDocFile1",embeddedFilePath,embeddedFileName)
    #运行vba.bas中的delandinsDocFile1方法,embeddedFilePath和embeddedFileName为传递的参数

    doc.Save()
    doc.Save()
    time.sleep(3)
    doc.Close()
    docApp.Quit()
    pythoncom.CoUninitialize() # 关闭 doc 之后加入的代码


filePath=r'C:\Users\user\Desktop\20210408-1\xxx.docx'
dest_dir1=r'C:\Users\user\Desktop\20210408-1\\'
embeddedFileName='xxx.xlsx'
embeddedFilePath=dest_dir1 + embeddedFileName
embed_excel_file(filePath,embeddedFilePath,embeddedFileName)

 

注:    Python代码中的docApp.Application.Run("delandinsDocFile1",embeddedFilePath,embeddedFileName)代表运行vba.bas中的delandinsDocFile1方法,而embeddedFilePath和embeddedFileName为传递的两个参数,相当于调用vba.bas的Sub delandinsDocFile1(embeddedFilePath as String,embeddedFileName as String)方法

 

3. vba.bas宏代码如下(可以通过word中录制宏功能生成大概的vba代码,然后按自己需求修改(比如我这里函数中使用了embeddedFilePath和embeddedFileName两个参数供python代码调用),word录制宏功能稍后在文章尾部提供

Sub delandinsDocFile1(embeddedFilePath as String,embeddedFileName as String)
'
' delandinsDocFile1 宏
'
'
    Selection.EndKey Unit:=wdStory        
    Selection.MoveUp Unit:=wdLine, Count:=6
    Selection.TypeBackspace
'定位插入位置
'
    Selection.Delete Unit:=wdCharacter, Count:=1
'删除之前插入的文件,下面插入excel文件
'
    Selection.InlineShapes.AddOLEObject ClassType:="Excel.Sheet.12", FileName _
        :=embeddedFilePath _
        , LinkToFile:=False, DisplayAsIcon:=True, IconFileName:= _
        "C:\Windows\Installer\{90140000-0011-0000-0000-0000000FF1CE}\xlicons.exe" _
        , IconIndex:=1, IconLabel:=embeddedFileName
    ActiveDocument.Save
End Sub

 

4. word录制宏功能:

python word中插入excel文件以图标显示(win32com调用vba代码)

 

填入宏名称,将宏保存在打开的word中,点击确定按钮

python word中插入excel文件以图标显示(win32com调用vba代码)

录制完成后点击视图-宏-查看宏-编辑,即出现生成的代码

python word中插入excel文件以图标显示(win32com调用vba代码)

最后将此代码拷贝出来,改写成符合自己需求的代码,命名为xxx.bas

 

问题:为什么要选择使用VBA操作office?

答:主要原因是没有找到可以完成此功能的python第三方库,另外就是vba本身对office支持很强大,且可以一键录制vba代码,省去看各种API使用文档文章来源地址https://www.toymoban.com/news/detail-404049.html

到了这里,关于python word中插入excel文件以图标显示(win32com调用vba代码)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Python 基于win32com客户端实现Excel操作

    Python 3.6.2 新建并保存EXCEL 了解更多API,可以查看参考连接 读取现有EXCEL 说明: 如果不添加以下代码行: 会报错,如下: 建议使用 替代 实践发现,多线程的情况下,使用 Dispatch 会出现报错,原因似乎是 Dispatch 若发现进程已经存在的话,就不会创建新的进程。若不创建新的

    2024年02月01日
    浏览(91)
  • python使用win32com库实现对Excel的操作

    在日常工作中,我们经常需要对Excel文件进行操作,例如读取和写入数据、格式化和样式、插入和删除等。而使用Python的win32com库,我们可以通过代码来实现对Excel的自动化操作,提高工作效率和准确性。 本篇博客将介绍如何使用win32com库来操作Excel,包括安装和配置、创建和

    2024年02月14日
    浏览(32)
  • win32com写入excel日期

    目录 一、问题 二、解决方法 在使用win32com向excel写入日期数据时候发现以下问题。 因为贪方便直接写入datetime格式,导致数据错误。 ws.Range(\\\'F3\\\').Value=datetime(2023,4,1,0,0) ---2023/3/31  16:00:00 很显然的发现一个问题,在将数据写入excel后时间被减去了8个小时 ,很自然的联想到时区

    2024年02月11日
    浏览(50)
  • 用python实现excel表格插入word

    你可以使用Python中的 python-docx 和 openpyxl 库来实现将Excel表格插入Word文档。下面是一个示例代码,可以将一个名为\\\"example.xlsx\\\"的Excel表格插入到一个名为\\\"example.docx\\\"的Word文档中: python复制代码 import openpyxl from docx import Document # 打开Word文档 doc = Document(\\\"example.docx\\\") # 打开Excel表格

    2024年01月19日
    浏览(42)
  • 新建文件没有word、ppt、excel,office图标显示为白色,不能正常显示

    解决办法: 1、按“win+R”输入“regedit”运行,打开系统注册表; 2、找到HKEY_CLASSES_ROOT下的.doc、.docx、.ppt、.pptx、.xls、.xlsx,删除。 3、找到HKEY_CLASSES_ROOT下的 Word.Document.8、Word.Document.12、PowerPoint.Show.8、PowerPoint.Show.12、Excel.Sheet.8、Excel.Sheet.12,删除。 4、找到HKEY_CURRENT_USERSo

    2024年02月16日
    浏览(59)
  • Python pywin32实现word和Excel的处理

    pywin32处理Word和Excel的一些事 我们知道Python处理word和Excel的可以借助第三库python-docx、xlrd、xlwt和openpyxl等实现,但这些模块只支持基本的读写操作,如果要实现一些较为深入功能,就要看模块是否有相应功能支持了。 例如将word和Excel转为pdf,在word和Excel里面执行VBA实现特殊功

    2024年02月04日
    浏览(60)
  • 使用Python的win32com库实现对PowerPoint的操作

    PowerPoint是微软公司开发的一款流行的演示文稿软件,广泛应用于演讲、培训和商务展示等场景。win32com库是Python的一个扩展模块,可以用于操作Windows系统中的COM组件,包括PowerPoint应用程序。本篇博客将介绍如何使用Python的win32com库来实现对PowerPoint的操作。 在开始之前,我们

    2024年02月05日
    浏览(57)
  • Python将Excel文件插入Mysql数据库(脚本)

    🌸 欢迎来到Python办公自动化专栏—Python处理办公问题,解放您的双手 🏳️‍🌈 博客主页:一晌小贪欢的博客主页 👍 该系列文章专栏:Python办公自动化专栏 文章作者技术和水平有限,如果文中出现错误,希望大家能指正🙏 ❤️ 欢迎各位佬关注! ❤️ 前言 最近接到一个

    2024年02月05日
    浏览(45)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包