Excel 使用VBA将表格添加到Word中

Excel 使用VBA将表格添加到Word中,excel,vba,ms-word,Excel,Vba,Ms Word,我正试图使用以下代码将excel中的表添加到word中,但在实际使用我创建的书签将表粘贴到文档中时,我遇到了一个小问题。代码不粘贴我想要的表格,而是粘贴以下以灰色突出显示的文本: Bookmarks("bkChart1").Range 这是我当前使用的代码: Option Explicit Sub CreateWordDocuments() Dim CustRow, CustCol, LastRow, TemplRow As Long Dim WordTable As Word.Table

我正试图使用以下代码将excel中的表添加到word中,但在实际使用我创建的书签将表粘贴到文档中时,我遇到了一个小问题。代码不粘贴我想要的表格,而是粘贴以下以灰色突出显示的文本:

Bookmarks("bkChart1").Range
这是我当前使用的代码:

Option Explicit

Sub CreateWordDocuments()

Dim CustRow, CustCol, LastRow, TemplRow As Long
Dim WordTable As Word.Table
Dim tbl, sectiontbl, positiontbl, mintbl, avtbl As Excel.Range
Dim DocLoc, TagName, TagValue, TemplName, FileName As String
Dim WordDoc, WordApp As Object
Dim WordContent As Word.Range

With Sheet1

    If .Range("B3").Value = Empty Then
        MsgBox "Please select a template from the drop down list"
        .Range("F3").Select
        Exit Sub
    End If

    TemplRow = .Range("B3").Value 'Set Template Row
    TemplName = .Range("F3").Value 'Set Template Name
    DocLoc = Sheet9.Range("F" & TemplRow).Value 'Word Document Filename

    'Open Word Template
    On Error Resume Next 'If Word is already running
    Set WordApp = GetObject("Word.Application")
    If Err.Number <> 0 Then
        'Launch a new instance of Word
        Err.Clear
        'On Error GoTo Error_Handler
        Set WordApp = CreateObject("Word.Application") 'launches word application
        WordApp.Visible = True 'Make the application visible to the user
    End If

''''''''''''''''''''''insering tables'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    Set WordDoc = WordApp.Documents.Open(FileName:=DocLoc, ReadOnly:=False) 'Open Template
    'Copy Range from Excel
    Set tbl = ThisWorkbook.Worksheets(Sheet5.Name).ListObjects("tbl").Range

    'Copy Excel Table Range
    tbl.Copy
    'Paste Table into MS Word
    WordDoc.Bookmarks("SummaryTable").Range.PasteExcelTable _
    LinkedToExcel:=False, _
    WordFormatting:=False, _
    RTF:=False

    'Autofit Table so it fits inside Word Document
    Set WordTable = WordDoc.Tables(1)
     WordTable.AutoFitBehavior (wdAutoFitWindow)

    EndRoutine:
    'Optimize Code
    Application.ScreenUpdating = True
    Application.EnableEvents = True

    'Clear The Clipboard
    Application.CutCopyMode = False

End With

End Sub
选项显式
子CreateWordDocuments()
Dim CustRow、CustCol、LastRow、TemplRow等长
将WordTable设置为Word.Table
尺寸tbl、截面tbl、位置tbl、最小tbl、平均tbl为Excel.范围
Dim DocLoc、标记名、标记值、模板名、文件名为字符串
Dim WordDoc,WordApp作为对象
将Word内容设置为Word.Range
附页1
如果.Range(“B3”).Value=空,则
MsgBox“请从下拉列表中选择模板”
.范围(“F3”)。选择
出口接头
如果结束
TemplRow=.Range(“B3”).Value“设置模板行”
TemplName=.Range(“F3”).Value“设置模板名称”
DocLoc=Sheet9.Range(“F”和TemplRow).Value'Word文档文件名
'打开Word模板
“如果Word已在运行,则在出现错误时继续下一步”
Set WordApp=GetObject(“Word.Application”)
如果错误号为0,则
'启动Word的新实例
呃,明白了
'在发生错误时转到错误\u处理程序
Set WordApp=CreateObject(“Word.Application”)”启动Word应用程序
WordApp.Visible=True“使应用程序对用户可见”
如果结束
镶嵌桌
设置WordDoc=WordApp.Documents.Open(文件名:=DocLoc,只读:=False)打开模板
'从Excel复制范围
设置tbl=ThisWorkbook.Worksheets(Sheet5.Name).ListObjects(“tbl”).Range
'复制Excel表格范围
tbl.副本
'将表格粘贴到MS Word中
WordDoc.Bookmarks(“SummaryTable”).Range.PasteExcelTable_
LinkedToExcel:=False_
WordFormatting:=False_
RTF:=假
'自动调整表格,使其适合Word文档
Set WordTable=WordDoc.Tables(1)
WordTable.AutoFitBehavior(wdAutoFitWindow)
结束例行程序:
'优化代码
Application.ScreenUpdating=True
Application.EnableEvents=True
'清除剪贴板
Application.CutCopyMode=False
以
端接头

我不知道是什么鬼把戏,所以任何帮助都将不胜感激

FWIW如果我有一个单列表并删除表头,我可以在这里实现这一点。然后Excel只复制单个单元格,Word将其粘贴为纯文本,而不是表格。我想知道这是否可能发生在您的场景中;WordDoc.Bookmarks(“SummaryTable”).Range.PasteExcelTable\uI没有将表格放入word文档中。还有其他建议吗?我对这一行不太确定;“Set-tbl=ThisWorkbook.Worksheets(Sheet5.Name).ListObjects(“tbl”).Range”我在excel中使用名称管理器将该表命名为“tbl”,并将其命名为“tbl”。此行能否将该表引入?甚至可以直接在VBA代码中定义一个范围来删除中间人吗?如果是这样的话,我应该用这一行来代替什么呢?我刚才提到的表格是用Excel创建的。但这并不能解释灰色文本的来源(可能只是复制到剪贴板上的最后一个文本)。如果您在Excel中有一个名为tbl的表,那么您的代码是正确的。如果不这样做,您将看到一个错误,但是“on error resume next”是有效的,因此您可以在Err.Clear之后使用on error Goto,或者在tbl.Copyline上设置一个断点,并使用即时窗口检查tbl.Address的值。