我希望有人能帮助MS Word宏。
基本上,我有一个MS Word文档,列出了每个文件中的几个文本文件和特定页面。
文件格式类似于:
textdocument1.txt P. 6, 12 - issue1 textdocument2.txt P. 5 - issue1 P. 13, 17 - issue3 textdocument3.txt P. 10
我想将每一行作为字符串读入我的宏。
然后遍历它以识别文件名。使用文件名,我可以打开文件,转到页码,然后复制我需要的数据。
但是我坚持第1步,如何将该行捕获到MS Word宏中的字符串中?
任何帮助将不胜感激。
答案 0 :(得分:4)
以下代码可以帮助您入门:
Public Sub ParseLines()
Dim singleLine As Paragraph
Dim lineText As String
For Each singleLine In ActiveDocument.Paragraphs
lineText = singleLine.Range.Text
'// parse the text here...
Next singleLine
End Sub
我在this article中找到了基本算法。
答案 1 :(得分:3)
如果您的word文档列出了所有文本文件:
<name>{tab}<page ref>{newline}
<name>{tab}<page ref>{newline}
<name>{tab}<page ref>{newline}
然后Paragraphs collection中的所有行都可用。您可以使用简单的For Each
循环遍历:
Dim p As Paragraph
For Each p In ActiveDocument.Paragraphs
Debug.Print p.Range.Text
Next p
答案 2 :(得分:2)
Public Sub ParseDoc()
Dim doc As Document
Set doc = ActiveDocument
Dim paras As Paragraphs
Set paras = doc.Paragraphs
Dim para As Paragraph
Dim sents As Sentences
Dim sent As Range
For Each para In paras
Set sents = para.Range.Sentences
For Each sent In sents
Debug.Print sent.Text
Next
Next
End Sub
答案 3 :(得分:0)
如果其他文本包含特殊字符或其他语言,则上面的代码将不起作用,这是我针对执行的一项任务提出的解决方案
Dim para As Paragraph
Dim sentence() As String
For Each para In ActiveDocument.Paragraphs
sentence() = Split(para.Range.Text, Chr(11))
For i = 0 To UBound(sentence)
Msgbox(sentence(i))
next i
next