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

时间:2017-02-15 11:21:44

标签: excel vba excel-vba ms-word word-vba

我尝试使用VBA Excel将表格粘贴到excel中。

我将它粘贴到我在Word中创建的4行的单列表中的单元格中。所以它本质上是一个嵌套表。

我一直在,

  

运行时错误4605:方法' PasteAsNestedTable'对象选择失败

我试图使用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我可以以某种方式复制它吗?

1 个答案:

答案 0 :(得分:1)

不要使用选择。 这对我有用(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

您当然可以将GetObject(, "Word.Application")替换为new Word.Application,并将wdDoc设置为wdApp.Documents.Open(pathtoyourdoc)。 然后结合我的其他帖子中的答案,将wd替换为wdDoc,你应该好好去。

修改我更改了代码以反映您当前的变量和书签名称:

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)

注意:

  • 请勿使用Doument s .Add,因为这会根据模板添加新的 文档。这不会有你的书签。请改用.Open
  • 正确关闭With
  • 不要一遍又一遍地设置同一个对象。设置一次并使用该对象
  • 除非绝对必要,否则请勿使用Selection。在这种情况下没有必要。