我从下面的以下代码中运行Excel工作簿。我在Word文档中已经有徽标和页码,因此不需要从Excel中粘贴整个范围。我有两个文本框,应插入电子表格中的数据。
我需要复制Worksheets("Other Data").Range("A58:A60")
并将其粘贴到Word文档标题中的“文本框1”。在不同行上的三种情感。文本框应该换行吗?
我需要复制Worksheets("Other Data").Range("A68")
并将其粘贴到Word文档标题中的“文本框2”。一种观点。
AutoFitWindows不起作用。一定有一些变量,但是我无法弄清楚到底是什么错误。尝试了不同的方法但没有成功。
这是我的代码:
Sub excelToWord_click()
Dim head As Excel.Range
Dim foot As Excel.Range
Dim WordTable As Word.Table
Set wdApp = CreateObject("Word.Application")
wdApp.Documents.Open FileName:=ThisWorkbook.Path & "\" & "MyDOC" & ".docx"
wdApp.Visible = True
Set head = ThisWorkbook.Worksheets("Other Data").Range("A58:A60")
head.Copy
'|| I need to paste copied cells to "Text Box 1" in my Word document ||'
With wdApp.ActiveDocument.Sections(1)
.Headers(wdHeaderFooterIndex.wdHeaderFooterPrimary).Range.Shapes("Text Box 1").Activate
head.Paste
End With
'|| ---------------------------------------------------------------- ||'
Set head2 = ThisWorkbook.Worksheets("Other Data").Range("A68")
head2.Copy
'|| I need to paste copied cells to "Text Box 2" in my Word document ||'
With wdApp.ActiveDocument.Sections(1)
.Headers(wdHeaderFooterIndex.wdHeaderFooterPrimary).Range.Shapes("Text Box 2").Activate
head2.Paste
End With
'|| ---------------------------------------------------------------- ||'
Set foot = ThisWorkbook.Worksheets("Other Data").Range("A62:H65")
foot.Copy
With wdApp.ActiveDocument.Sections(1)
.Footers(wdHeaderFooterIndex.wdHeaderFooterPrimary).Range.Paste
End With
'|| Autofit table to page in Footer ||'
WordTable.AutoFitBehavior (wdAutoFitWindow)
'|| ---------------------------------------------------------------- ||'
'restore Word
If wdApp.ActiveWindow.View.SplitSpecial <> 0 Then
wdApp.ActiveWindow.Panes(2).Close
End If
If wdApp.ActiveWindow.ActivePane.View.Type = 1 _
Or wdApp.ActiveWindow.ActivePane.View.Type = 2 Then
wdApp.ActiveWindow.ActivePane.View.Type = 3
End If
wdApp.WordBasic.AcceptAllChangesInDoc
'wdApp.ActiveDocument.PrintOut, Copies:=1
wdApp.ActiveDocument.ExportAsFixedFormat outputfilename:=ThisWorkbook.Path & "\" & Sheets("MAIN").Range("D14").Value & ", " & Sheets("MAIN").Range("D11").Value & "_" & "Document" & "_" & ".pdf", exportformat:=wdExportFormatPDF
wdApp.ActiveDocument.SaveAs ThisWorkbook.Path & "\" & Worksheets("MAIN").Range("D14").Value & ", " & Worksheets("MAIN").Range("D11").Value & "_" & "Document" & "_" & ".docx"
wdApp.Quit '<--| quit Word
Set wdApp = Nothing '<--| release object variable
'wdApp.ActiveWindow.Close savechanges:=False
End Sub
答案 0 :(得分:1)
您的问题是因为您迟绑定了Word应用程序对象,而不是将Word引用安装到VBA IDE。 这意味着对单词常量的任何引用,如果不限制您用于Word应用程序的变量,都将被解释为默认值(0或Null)。
解决此问题的最简单方法是在VBA IDE中。转到Tools.References,并确保选中Microsoft Word ......旁边的复选框。
如果您希望对变量进行限定,则需要更改单词常量,以使其以WdApp
(Word应用程序的变量)为前缀。
例如wdApp.wdHeaderFooterIndex.wdHeaderFooterPrimary
安装了Word参考后,您只能说
wdHeaderFooterPrimary.