VBA excel将excel中的数据嵌套到word中的表格中(将excel数据复制到word表格中)

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不是一种选择方法,但我该如何回避这个问题呢 我的更新代码

我正在尝试使用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