vba调用AutoItX3的Activex控件,实现doc2Html源码
说明,这是自己录制的一个宏,然后调用AutoIt的Activex控件
功能:实现自动将当前的word文档导出成html代码的功能
导出的html默认复制到了剪切板
doc2Html的宏代码下载:
autoitX3 ActiveX DLL版本号:3.3.6.1(32位系统autoitX3 的Activex控件安装和注册)
效果演示截图:
vba宏的源代码
Sub doc2Html()
'主要用来将word文档自动转化成html文档,并且复制html代码
' doc2Html Macro
'前尘光明制作
'
'将文档保存成筛选的html
ActiveDocument.SaveAs FileName:="ddd.htm", FileFormat:= _
wdFormatFilteredHTML, LockComments:=False, Password:="", AddToRecentFiles _
:=True, WritePassword:="", ReadOnlyRecommended:=False, EmbedTrueTypeFonts _
:=False, SaveNativePictureFormat:=False, SaveFormsData:=False, _
SaveAsAOCELetter:=False
'设置显示模式为页面模式
If ActiveWindow.View.SplitSpecial = wdPaneNone Then
ActiveWindow.ActivePane.View.Type = wdPrintView
Else
ActiveWindow.View.Type = wdPrintView
End If
Dim oAutoIt
Set oAutoIt = CreateObject("AutoItX3.Control") '调用AutoItV3的ActiveX控件,创建实例
oAutoIt.Run ("notepad ddd.htm") '使用记事本打开ddd.htm文件
oAutoIt.WinActive ("[Class:Notepad]") '激活记事本
oAutoIt.WinWaitActive ("[Class:Notepad]") '等待记事本激活
oAutoIt.Send "^a" 'CTRL+A组合键——全选
oAutoIt.Sleep 200
oAutoIt.Send "^c" 'CTRL+C组合键——复制
oAutoIt.Sleep 300
oAutoIt.Send "^" '这里按ctrl键,是为了解决ctrl键被按下不起来的问题
oAutoIt.Sleep 300
oAutoIt.WinClose "[Class:Notepad]", "" '关闭当前的记事本窗体
Set oAutoIt = Nothing '释放AutoItV3的ActiveX的内存
End Sub
今天发现,不需要使用autoit的activeX控件,直接使用vba就可以实现这个功能,代码如下:
Private Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)
Sub doc2Html2()
'主要用来将word文档自动转化成html文档,并且复制html代码
' doc2Html2 Macro
'前尘光明制作
'
'将文档保存成筛选的html
ActiveDocument.SaveAs FileName:="ddd.htm", FileFormat:= _
wdFormatFilteredHTML, LockComments:=False, Password:="", AddToRecentFiles _
:=True, WritePassword:="", ReadOnlyRecommended:=False, EmbedTrueTypeFonts _
:=False, SaveNativePictureFormat:=False, SaveFormsData:=False, _
SaveAsAOCELetter:=False
'设置显示模式为页面模式
If ActiveWindow.View.SplitSpecial = wdPaneNone Then
ActiveWindow.ActivePane.View.Type = wdPrintView
Else
ActiveWindow.View.Type = wdPrintView
End If
Dim WshShell, oNotepad
Set WshShell = CreateObject("WScript.Shell") '创建WScript.Shell对象
Set oNotepad = WshShell.Exec("notepad ddd.htm") '使用记事本打开ddd.htm文件
WshShell.AppActivate oNotepad.ProcessID '激活记事本
Sleep 300
WshShell.SendKeys "^a" 'CTRL+A组合键——全选
Sleep 200
WshShell.SendKeys "^c" 'CTRL+C组合键——复制
Sleep 200
WshShell.SendKeys "%{F4}" '关闭当前的记事本窗体
Sleep 200
Set oNotepad = Nothing '释放内存
Set WshShell = Nothing
End Sub