如何在VBA中将Word模板文件另存为.docx?或者从一张excel表中创建多个特定文档



我正试图将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_。

相关内容

最新更新