VBA excel将excel中的数据嵌套到word中的表格中(将excel数据复制到word表格中)
我正在尝试使用VBA excel将表格从excel粘贴到word中 我将它粘贴到Word中创建的4行单列表中的一个单元格中。因此,它本质上是一个嵌套表 我一直在 运行时错误4605:对象选择的方法“PasteAsNestedTable”失败 我尝试使用PastAsNestedTable,因为如果不使用PastAsNestedTable,我会在尝试合并两个表时收到关于单元格不匹配的运行时错误 所以我明白了,PasteAsNestedTable不是一种选择方法,但我该如何回避这个问题呢 我的更新代码如下:VBA excel将excel中的数据嵌套到word中的表格中(将excel数据复制到word表格中),vba,excel,ms-word,Vba,Excel,Ms Word,我正在尝试使用VBA excel将表格从excel粘贴到word中 我将它粘贴到Word中创建的4行单列表中的一个单元格中。因此,它本质上是一个嵌套表 我一直在 运行时错误4605:对象选择的方法“PasteAsNestedTable”失败 我尝试使用PastAsNestedTable,因为如果不使用PastAsNestedTable,我会在尝试合并两个表时收到关于单元格不匹配的运行时错误 所以我明白了,PasteAsNestedTable不是一种选择方法,但我该如何回避这个问题呢 我的更新代码
Dim wdApp As Word.Application
Dim wdDoc as Word.Document
Dim tabl1 as Table, tabl2 as Table
Set wdApp = new Word.Application
With wdApp
.visible = True
.Activate
.Document.Add(location)
Set wdDoc=wdApp.ActiveDocument
With wdApp
Charts("chart1").ChartArea.Copy
.Selection.GoTo what:=-1,Name:="chart1"
.selection.Paste
(Then add some more charts)
End With
Sheets("Sheet1").Range("A1:F10").Copy
Set wdDoc=wdApp.ActiveDocument
wdDoc.Bookmarks("table").Range.PasteAsNestedTable
With wdApp
(Then repeat above pasting charts + tables)
`
如果我将范围设为ListObjects,我是否可以以这种方式复制它?不要使用选择。
此处适用于已打开正确文档的Word:
Dim wdApp As Word.Application
Dim wdDoc As Word.Document
Set wdApp = GetObject(, "Word.Application")
Sheets(1).Range("A1:F10").Copy
Set wdDoc = wdApp.ActiveDocument
wdDoc.Bookmarks("tableplace").Range.PasteAsNestedTable
当然,您可以用新的Word.Application替换GetObject、Word.Application,并将wdDoc设置为wdApp.Documents.Openpathtoyourdoc。
然后结合我从你的另一个线程中得到的答案,用wdDoc替换wdthere,你就可以开始了
编辑我已更改代码以反映您当前的变量和书签名称:
Dim wdApp As Word.Application
Dim wdDoc As Word.Document
Dim tabl1 As Table, tabl2 As Table
Set wdApp = New Word.Application
With wdApp
.Visible = True
.Activate
Set wdDoc = .Documents.Open(Location)
End With
Charts("chart1").ChartArea.Copy
wdDoc.Bookmarks("chart1").Range.Paste
Sheets("Sheet1").Range("A1:F10").Copy
wdDoc.Bookmarks("table").Range.PasteAsNestedTable
'(Continue like this for other charts + tables)
注:
不要使用doments.Add,因为这将基于模板添加新的空文档。这不会有你的书签。使用。打开。
适当地用木块封闭
不要反复设置同一对象。设置一次,然后使用该对象
除非绝对必要,否则不要使用选择。在这种情况下没有必要。
您可以在Word中设置文档变量。如果你不知道怎么做,用谷歌搜索一下。然后,从Excel运行下面的脚本
Sub PushToWord()
Dim objWord As New Word.Application
Dim doc As Word.Document
Dim bkmk As Word.Bookmark
sWdFileName = Application.GetOpenFilename(, , , , False)
Set doc = objWord.Documents.Open(sWdFileName)
'On Error Resume Next
objWord.ActiveDocument.variables("FirstName").Value = Range("FirstName").Value
objWord.ActiveDocument.variables("LastName").Value = Range("LastName").Value
objWord.ActiveDocument.variables("Another").Value = Range("Another").Value
objWord.ActiveDocument.Fields.Update
'On Error Resume Next
objWord.Visible = True
End Sub
你读过这个吗?您的代码无法工作,因为wdApp是一个全新的Word应用程序,文档完全为空。桌面上不能有书签。And.Selection.GoTo what:=-1 Name:=tableplace在参数之间缺少逗号。所以它不会编译。@AxelRichter,我在打开模板时遗漏了一行。该模板有一个名为tablespace的书签。我使用了.Selection.GoTo what:=-1 Name:=tableplace格式将图表复制到word文档中的其他书签,效果很好。它有点效果。我需要在三个不同的位置粘贴三个表。对于前两个,我得到运行时错误“4605”:对象“range”的方法“pasteasnestedtable”失败。但当我点击debug和F5时,它会正确粘贴并继续。但是对于第三个,它表示运行时错误“5941”:请求的集合成员不存在。我不知道该怎么解决this@JoshD请将错误发生的确切位置张贴出来。床单不知道?单元格范围超出范围?插入前是否键入或删除书签名称?这么多的可能性。哈,就在打字的时候。第三次粘贴RE 5941是我的打字错误。道歉。RE4605出现在以下行:wdDoc.Bookmarkstablespace.Range.pasteasnestedtableOK。书签表位置、表空间是否存在?您提到了3个粘贴操作。有3个不同的书签吗?正确地解决这些问题?让我们看一下代码。是的,所有的工作表都正确标记,范围也正确,有三种不同的书签,即表空间2和表空间3