[英]Word 2 HTML VBA Macro
我有多個Word文檔,都使用相同的格式。 現在,我將所有這些內容都作為HTML頁面放置在內部幫助門戶中。 我想到創建一個宏,該宏在運行時會自動生成有效的HTML文件,可以將其直接上傳到Web服務器。 我可以使用vba代碼將所有內容作為HTML代碼獲得。 但是我停留在列表段落中。 我正在為所有列表項獲取<Li></Li>
標簽,但是如何獲得環繞它們的<ol>
或<ul>
標簽?
下面是我的VBA代碼。
Sub ListParagraphs()
Dim p As Paragraph
For Each p In ActiveDocument.Paragraphs
If p.Style = ActiveDocument.Styles("Title") Then
Debug.Print "<h2>" & p.Range.Text & "</h2>"
End If
If p.Style = ActiveDocument.Styles("Heading 1") Then
Debug.Print "<h3>" & p.Range.Text & "</h3>"
End If
If p.Style = ActiveDocument.Styles("Heading 2") Then
Debug.Print "<h4>" & p.Range.Text & "</h4>"
End If
If p.Style = ActiveDocument.Styles("Normal") Then
Debug.Print "<p>" & p.Range.Text & "<p>"
End If
If p.Style = ActiveDocument.Styles(wdStyleListParagraph) Then
p.Range.Select
Selection.EndKey Unit:=wdLine
Debug.Print "<li>" & p.Range.Text & "</li>"
End If
Next p
End Sub
我得到的輸出是:
<h2>Main Title of page
</h2>
<p>On the Insert tab, the galleries include items that are designed to coordinate with the overall look of your document. You can use these galleries to insert tables, headers, footers, lists, cover pages, and other document building blocks. When you create pictures, charts, or diagrams, they also coordinate with your current document look.
<p>
<h3>Sub topic heading – number 1
</h3>
<p>On the Insert tab, the galleries include items that are designed to coordinate with the overall look of your document. You can use these galleries to insert tables, headers, footers, lists, cover pages, and other document building blocks.
<p>
<li>Instruction number one. You can use these galleries to insert tables, headers, footers, lists.
</li>
<li>/
</li>
<li>Instruction number two. This is a small step.
</li>
<li>/
</li>
<li>More instructions go here.
</li>
<li>/
</li>
<h3>Subtopic heading - number 2
</h3>
<p>On the Insert tab, the galleries include items that are designed to coordinate with the overall look of your document. You can use these galleries to insert tables, headers, footers, lists, cover pages, and other document building blocks. When you create pictures, charts, or diagrams, they also coordinate with your current document look.
<p>
<h4>Sub sub-topic under number 2
</h4>
<p>On the Insert tab, the galleries include items that are designed to coordinate with the overall look of your document.
<p>
<li>Remember the following points.
</li>
<li>/
</li>
<li>More instructions.
</li>
<li>/
</li>
<h4>Second sub topic under number 2
</h4>
<li>Line one.
</li>
<li>/
</li>
<li>Line 2.
</li>
<li>/
</li>
<p>
<p>
<p>
<p>
<p>
<p>
哦,是的! 非常感謝enhzflep給我的提示! 下面的代碼按預期工作。
Dim lastElement As String
Dim typeElement As String
lastElement = "none"
typeElement = "none"
For Each p In ActiveDocument.Paragraphs
If p.Style = ActiveDocument.Styles("Title") Then
If lastElement = "list" Then
stream.WriteLine "</" & typeElement & ">"
End If
stream.WriteLine "<h2>" & p.Range.Text & "</h2>"
lastElement = "title"
End If
If p.Style = ActiveDocument.Styles("Heading 1") Then
If lastElement = "list" Then
stream.WriteLine "</" & typeElement & ">"
End If
stream.WriteLine "<h3>" & p.Range.Text & "</h3>"
lastElement = "heading1"
End If
If p.Style = ActiveDocument.Styles("Heading 2") Then
If lastElement = "list" Then
stream.WriteLine "</" & typeElement & ">"
End If
stream.WriteLine "<h4>" & p.Range.Text & "</h4>"
lastElement = "heading2"
End If
If p.Style = ActiveDocument.Styles("Normal") Then
If lastElement = "list" Then
stream.WriteLine "</" & typeElement & ">"
End If
stream.WriteLine "<p>" & p.Range.Text & "</p>"
lastElement = "normal"
End If
If p.Style = ActiveDocument.Styles(wdStyleListParagraph) Then
If p.Range.ListFormat.ListType = wdListSimpleNumbering Then
typeElement = "ol"
ElseIf p.Range.ListFormat.ListType = wdListBullet Then
typeElement = "ul"
End If
If lastElement <> "list" Then
stream.WriteLine "<" & typeElement & ">"
End If
stream.WriteLine "<li>" & p.Range.Text & "</li>"
lastElement = "list"
End If
Next p
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.