我正在使用Excel中的宏向Word文档添加信息。我试图在现有的Word文档中添加10行,如下所示:
Sub AddParagraphs()
'Open Word
Dim wordApp As Word.Application
Set wordApp = CreateObject("Word.Application")
'Open
Dim doc As Word.document
Set doc = wordApp.Documents.Open("c:\temp\document.docx")
'Add 10 paragraphs
Dim idx As Integer
For idx = 1 To 10
Dim paragraph As Word.paragraph
Set paragraph = doc.Paragraphs.Add()
paragraph.Range.style = wdStyleHeading2
paragraph.Range.text = "Paragraph " & CStr(idx)
Next
doc.Save
doc.Close
wordApp.Quit
End Sub我在C:\temp\document.docs有一个空的Word文档,但是在运行代码之后,只有一行的文本“第10段”。我在等10条线。
据我所知,没有参数的Paragraphs.Add()应该创建一个新的段落。也许我错误地认为,一个新的段落产生了一个新的行?是否有另一种方法在循环中添加10行,其中每个行都可以具有特定(不相同)的样式?
发布于 2018-05-01 18:26:28
您正在添加的“段落”在末尾没有段落标记。
将该行更改为
paragraph.Range.Text = "Paragraph " & CStr(idx) & vbCr这应该能解决你的问题。
发布于 2018-05-01 19:31:46
实际上,在原始代码中发生的情况是,当您使用
Doc.Paragraphs.Add所以只有一段。有很多种方法可以绕过这件事。一种是使用InsertAfter,正如注释中提到的那样。(请注意,如果要使用此方法,将新段落指定为字符串的一部分的正确方法是vbCr或Chr(13)。单词很容易误解任何其他东西!)
我个人的偏好是使用可以独立于整个文档操作的Range对象。例如,可以这样做:
Sub AddParagraphs()
'Open Word
Dim wordApp As Word.Application
Set wordApp = CreateObject("Word.Application")
'Open
Dim doc As Word.document
Set doc = wordApp.Documents.Open("c:\temp\document.docx")
Dim rng as Word.Range
Set rng = doc.Content
'Add 10 paragraphs
Dim idx As Integer
For idx = 1 To 10
Dim paragraph As Word.paragraph
'So that the next thing inserted follows instead of replaces
rng.Collapse wdCollapseEnd
Set paragraph = rng.Paragraphs.Add
paragraph.Range.style = wdStyleHeading2
paragraph.Range.text = "Paragraph " & CStr(idx)
Next
doc.Save
doc.Close
wordApp.Quit
End Sub发布于 2019-04-05 18:25:11
我也有过类似的问题。添加doc.Range.InsertParagraphAfter解决了我的问题。下面的代码应该适用于您:
Sub AddParagraphs()
'Open Word
Dim wordApp As Word.Application
Set wordApp = CreateObject("Word.Application")
'Open
Dim doc As Word.document
Set doc = wordApp.Documents.Open("c:\temp\document.docx")
'Add 10 paragraphs
Dim idx As Integer
For idx = 1 To 10
Dim paragraph As Word.paragraph
Set paragraph = doc.Paragraphs.Add()
paragraph.Range.style = wdStyleHeading2
paragraph.Range.text = "Paragraph "
doc.Range.InsertParagraphAfter
Next
doc.Save
doc.Close
wordApp.Quit
End Subhttps://stackoverflow.com/questions/50121575
复制相似问题