4

箇条書きのインスタンスを見つけて、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
4

1 に答える 1

3

InsertBeforeおよびInsertAfter)を使用して、段落にテキストを挿入できます。これはWordMacで動作します。

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
于 2012-05-30T20:19:19.213 に答える