我正试图将excel电子表格中的一组文本数据复制到多个单独的word文档中(一个excel行=一个文档,但每列的标题必须包含在该行相应字段的文本之前(。我还希望这些文档的名称是电子表格中特定字段的文本(行标题(。
因为我想要花哨的格式和特定的复制/粘贴顺序(并不是所有字段都包括在内(,所以我使用了一个带有书签的单词模板,可以将书签输入VBA。它很好地填充了模板,但在重复循环之前,我无法将其保存为标准单词文档。我收到错误"Object不支持此属性或方法"。有没有一种方法可以克服它,或者我错过了一种更优雅的方法?
这是代码:
Sub Primitive()
Dim objWord As Object
Dim ws As Worksheet
Dim i As Integer
Set ws = ThisWorkbook.Sheets("Sheet1")
i = 2 ' First row to process
'Start of loop
Do Until ws.Range("B" & i) = ""
Set objWord = CreateObject("Word.Application")
objWord.Visible = True
'Change to local path of template file
objWord.Documents.Open "C:path of template file.dotx"
With objWord.ActiveDocument
.Bookmarks("FirstBookmark").Range.Text = ws.Range("B" & i).Value & " " & ws.Range("C" & i)
.Bookmarks("headlineZ").Range.Text = ws.Range("Z1").Value
很多这些^在这里排列数据在文件中的权利
NewFileName = "C:path of where I want the new file" & ws.Range("C" & i).Value & ".docx"
这一行给出了错误483:
objWord.SaveAs2 Filename:="NewFileName"
End With
objWord.Close
Set objWord = Nothing
i = i + 1
Loop
End Sub
您试图保存Word,而不是文档。如果您更换此
objWord.SaveAs2 Filename:="NewFileName"
用这个
objWord.ActiveDocument.SaveAs2 Filename:="NewFileName"
它应该能更好地工作。也就是说,您不应该在宏中使用ActiveDocument。考虑更换
objWord.Documents.Open "C:path of template file.dotx"
像
Set TargetDocument = objWord.Documents.Open("C:path of template file.dotx")
并用CCD_ 2替换所有的CCD_。