Vba 将word中的HTML列表转换为项目符号列表

Vba 将word中的HTML列表转换为项目符号列表,vba,ms-word,Vba,Ms Word,如何在VBA(Word)中创建宏,该宏将运行: <ul><li>this is just a test</li><li>woop</li><li>test</li></ul> 这只是一个测试woop测试 并生成一个 这只是一个测试 使用Word 2010 原因是html是通过邮件合并从第三方系统传入的 这必须通过我的最终用户的宏来完成!:) 更多详情: 我必须创建如下内容,搜索斜体html标记并插

如何在VBA(Word)中创建宏,该宏将运行:

<ul><li>this is just a test</li><li>woop</li><li>test</li></ul>
  • 这只是一个测试
  • woop
  • 测试
并生成一个

  • 这只是一个测试 使用Word 2010

    原因是html是通过邮件合并从第三方系统传入的

    这必须通过我的最终用户的宏来完成!:)

    更多详情: 我必须创建如下内容,搜索斜体html标记并插入Font.Italic

    With ActiveDocument.Range.Find
        .ClearFormatting
        .MatchCase = False
        .MatchWildcards = True
        .Text = "[<][iI][>]*[<]/[iI][>]"
        .Replacement.Font.Italic = True
        .Execute Replace:=wdReplaceAll
    End With
    
    使用ActiveDocument.Range.Find的
    
    .ClearFormatting
    .MatchCase=False
    .MatchWildcards=True
    .Text=“[]*[]”
    .Replacement.Font.Italic=True
    .Execute Replace:=wdReplaceAll
    以
    

    因此,我的问题是,我如何像这样运行文档,找到
    实例,循环遍历每个
  • 标记,并将文本作为项目符号列表插入标记中…

    这里有一个简单的方法来实现您想要的

    逻辑

  • 创建一个IE实例
  • .InnerHTML
    设置为html字符串
  • 将内容从IE复制到word
  • 简言之,让我来干脏活吧

    代码

    Option Explicit
    
    Sub Sample()
        Dim ie As Object
        Dim strHtml As String
    
        strHtml = "<ul><li>this is just a test</li><li>woop</li><li>test</li></ul>"
    
        Set ie = CreateObject("InternetExplorer.Application")
    
        ie.Visible = True
    
        ie.Navigate "about:blank"
    
        ie.Document.body.InnerHTML = strHtml
    
        Do While ie.readystate <> 4: DoEvents: Loop
    
        ie.Document.body.createtextrange.execCommand "Copy"
    
        Selection.Paste
    End Sub
    
    选项显式
    子样本()
    模糊的物体
    作为字符串的Dim strHtml
    strHtml=“
    • 这只是一个测试 设置ie=CreateObject(“InternetExplorer.Application”) 可见=真实 即,导航“关于:空白” ie.Document.body.InnerHTML=strHtml Do While ie.readystate 4:DoEvents:Loop ie.Document.body.createtextrange.execCommand“复制” 选择。粘贴 端接头
    屏幕截图


    这里有一个简单的方法来实现你想要的

    逻辑

  • 创建一个IE实例
  • .InnerHTML
    设置为html字符串
  • 将内容从IE复制到word
  • 简言之,让我来干脏活吧

    代码

    Option Explicit
    
    Sub Sample()
        Dim ie As Object
        Dim strHtml As String
    
        strHtml = "<ul><li>this is just a test</li><li>woop</li><li>test</li></ul>"
    
        Set ie = CreateObject("InternetExplorer.Application")
    
        ie.Visible = True
    
        ie.Navigate "about:blank"
    
        ie.Document.body.InnerHTML = strHtml
    
        Do While ie.readystate <> 4: DoEvents: Loop
    
        ie.Document.body.createtextrange.execCommand "Copy"
    
        Selection.Paste
    End Sub
    
    选项显式
    子样本()
    模糊的物体
    作为字符串的Dim strHtml
    strHtml=“
    • 这只是一个测试 设置ie=CreateObject(“InternetExplorer.Application”) 可见=真实 即,导航“关于:空白” ie.Document.body.InnerHTML=strHtml Do While ie.readystate 4:DoEvents:Loop ie.Document.body.createtextrange.execCommand“复制” 选择。粘贴 端接头
    屏幕截图


    这可能行得通,但我想要一种更干净的方法,也适用于终端用户请解释一下“干净的方法”是什么意思?我不想打开IE来做这些事情,我不希望所有内容都包含在find中,因此我将
      标记中的所有内容替换为每个
    • 标记的迭代,并使用vba WdListType.WDLISTBILT插入
    • 中包含的每个可以工作的文本,但我希望有一种更干净的方法,也适用于EndUsers请解释“干净的方法”是什么意思?我不想打开IE来做这件事,我不想把它都包含在查找中,所以我用每个
    • 标记的迭代替换
        标记中的所有内容,并使用vba WdListType.wdListBullet插入
      • 中包含的每个文本