• 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
  • 相关阅读:
    C++基于范围的for循环性能测试(针对std::vector)
    C++ 中std::function 、std::bind的使用和lambda的使用
    C++ auto 关键字的使用
    C++内存管理解析
    c++类内存分布解析
    Windows上编译GRPC
    在从1到n的正数中1出现的次数
    POJ 1009 解题报告
    Cheat Engine 笔记
    Cheat Engine 教程 Step 9
  • 原文地址:https://www.cnblogs.com/weiqi/p/1952779.html
Copyright © 2020-2023  润新知