vba - 查找项目符号列表并将其替换为 html 样式

标签 vba macos replace vbscript ms-word

我想找到项目符号列表的实例,以替换为 html 标记列表。请参阅下面的示例:

my_doc.docx
...

text,text,text
My bullet list:
   • List point one
   • List point two
Some more text here.

...

查找和替换导致

...
text,text,text
My bullet list:
<ul>
<li>List point one</li>
<li>List point two</li>
</ul>
Some more text here.

...

我试过 find and replace对于子弹字符;无法正常工作,因为它正在格式化。也试过find and replace对于样式为“列表项目符号”的行和我能找到的任何其他列表样式;不起作用,(可能是因为我使用的是 Word for Mac,这似乎有问题)

编辑:
我有以下 VBScript 可以在我的文档中查找具有项目符号样式的行。我现在需要这个脚本来重写它找到的带有 < li> 标签的行。
Sub FindBullet()
Dim oPara As Word.Paragraph
Dim count As Integer

count = 0
Selection.WholeStory
With Selection
    For Each oPara In .Paragraphs
    If oPara.Range.ListFormat.ListType = _
    WdListType.wdListBullet Then

          count = count + 1

            # from here down it gets shaky!!!

            With ActiveDocument.Range.Find
              .Text = #How do i convert the oPara to a string here?!?
              .Forward = True
              .Wrap = wdFindContinue
              .Format = False
              .MatchCase = True
              .MatchWholeWord = False
              .MatchWildcards = False
              .MatchSoundsLike = False
              .MatchAllWordForms = False

              .ClearFormatting
              With .replacement
                .ClearFormatting
                .Text = # how do i specify this is where i want the "<li>" & oPara & "</li>"
              End With
              .Execute Replace:=wdReplaceAll

        End If
    Next
End With
'Gives you the count of bullets in a document
MsgBox count & " replacements"
End Sub

最佳答案

您可以使用( InsertBefore InsertAfter )在段落中插入文本。
这适用于 Word Mac。

Sub FindBullet()
Dim count As Integer
count = 0
Set myStyle = ActiveDocument.Styles("Body text") ' replacement style
bulletList = WdListType.wdListBullet

 ' each list instead of each paragraph of the document
For Each thisList In ActiveDocument.Lists
      For Each p In thisList.ListParagraphs
           If p.Range.ListFormat.ListType = bulletList Then
                p.Style = myStyle ' change the style to "Body text" 
                p.Range.InsertBefore ("<li>")
                Set aRange = p.Range
                aRange.End = aRange.End - 1
                aRange.InsertAfter ("</li>")
                count = count + 1
            End If
      Next
Next
MsgBox count & " replacements"
End Sub

关于vba - 查找项目符号列表并将其替换为 html 样式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10792737/

相关文章:

macos - 如何将NSString写入NSView?

java - 运行 Play 1.2.1 时无法执行 java 可执行文件

python - Pandas 仅从右侧替换

replace - 在 Visual Studio 代码中查找和替换

excel - 如何使用 Worksheet_change 事件更改单元格值而不触发第二次调用

excel - 从字符串中删除字符

excel - 创建新文件并删除密码保护

c++ - 如何让 VS Code 识别 'constexpr' ?

java - 如何删除Java中特定字符之前的所有字符?

用于创建数据透视表的 VBA 代码