Excel到Word VBA导出-未创建Word文档

时间:2019-05-09 00:54:08

标签: vba ms-word

我正在运行Excel到Word Export,但无法基于模板创建/保存新文档。每个循环将重新打开单词模板,替换模板中的<< >>值,然后移至下一个。

(背景-我在Excel中有一张表格,由32行70列组成。我创建了一个相应的单词模板,该模板包含要从excel工作表中替换的值(例如<>)。在运行时,它会导出值基于Excel工作表中与Word Doc对应的标签(例如<>)。直到到达WordDoc.SaveAs文件名为止,它似乎一直有效。

我得到的错误是

  

您要保存文档作为模板名称吗?是/否

它在那里停止并且不创建模板,而仅更改模板文件。

有人可以建议对此进行修复吗?

Sub CreateWordDoc()
Dim BenefitRow, BenefitCol, LastRow As Long
Dim TagName, TagValue, Filename As String
Dim WordApp As Word.Application
Dim WordDoc As Word.Document
Dim WordContent As Word.Range
On Error Resume Next
With Sheets("VBA Output")


Set WordApp = CreateObject("Word.Application")
WordApp.Visible = True 'Make visible



LastRow = .Range("A9999").End(xlUp).Row 'Determine last row
For BenefitRow = 4 To 6
Set WordDoc = WordApp.Documents.Open(Filename:=" template name.dotm", ReadOnly:=False) 'Open Template saved as .dotm
For BenefitCol = 1 To 79
TagName = .Cells(3, BenefitCol).Value 'Tag Name
TagValue = .Cells(BenefitRow, BenefitCol).Value 'Tag Value
With WordDoc.Content.Find
.Text = TagName
.Replacement.Text = TagValue
.Wrap = wdFindContinue
.Execute Replace:=wdReplaceAll ',Forward:True, Wrap:wdFindContinue

End With
Next BenefitCol

Filename = ThisWorkbookPath & "\" & .Range("E" & BenefitRow).Value & ".docx"
WordDoc.SaveAs Filename
WordDoc.Close

Next BenefitRow
End With
WordApp.Quit

End Sub

1 个答案:

答案 0 :(得分:0)

您看到的问题(错误消息)来自打开模板文件,然后希望将其另存为“普通文档”文档。这不是设计使用Word的方式,这就是Word基本上说“您确定要这样做吗”的原因。

除非目的是更改模板本身,否则不应打开模板。在这种情况下,它将再次保存为模板-不会显示任何消息。

从模板创建新文档时,请使用Documents.Add方法:

Set WordDoc = WordApp.Documents.Add(Template:=" template name.dotm") 

这会自动创建模板的副本-没有覆盖模板的危险。执行SaveAs方法时,问题中提到的消息将不会出现。