Vba 错误:haven';没有定义对象

Vba 错误:haven';没有定义对象,vba,excel,Vba,Excel,我只是引用了一些示例代码,它们希望将Excel表移动到新的word文档中 但是,它至少包含一个错误 Set tbl = ThisWorkbook.Worksheets(Sheet9.Name).ListObjects("Table1").Range 错误:此处需要对象 链接: 完整代码: Sub ExcelRangeToWord() 'PURPOSE: Copy/Paste An Excel Table Into a New Word Document 'NOTE: Mu

我只是引用了一些示例代码,它们希望将Excel表移动到新的word文档中

但是,它至少包含一个错误

Set tbl = ThisWorkbook.Worksheets(Sheet9.Name).ListObjects("Table1").Range 
错误:此处需要对象

链接:

完整代码:

Sub ExcelRangeToWord()

    'PURPOSE: Copy/Paste An Excel Table Into a New Word Document
    'NOTE: Must have Word Object Library Active in Order to Run _
      (VBE > Tools > References > Microsoft Word 12.0 Object Library)
    'SOURCE: www.TheSpreadsheetGuru.com

    Dim tbl As Excel.Range
    Dim WordApp As Word.Application
    Dim myDoc As Word.Document
    Dim WordTable As Word.Table

    'Optimize Code
      Application.ScreenUpdating = False
      Application.EnableEvents = False

    'Copy Range from Excel
      Set tbl = ThisWorkbook.Worksheets(Sheet1.Name).ListObjects("Table1").Range

    'Create an Instance of MS Word
      On Error Resume Next

        'Is MS Word already opened?
          Set WordApp = GetObject(class:="Word.Application")

        'Clear the error between errors
          Err.Clear

        'If MS Word is not already open then open MS Word
          If WordApp Is Nothing Then Set WordApp = CreateObject(class:="Word.Application")

        'Handle if the Word Application is not found
          If Err.Number = 429 Then
            MsgBox "Microsoft Word could not be found, aborting."
            GoTo EndRoutine
          End If

      On Error GoTo 0

    'Make MS Word Visible and Active
      WordApp.Visible = True
      WordApp.Activate

    'Create a New Document
      Set myDoc = WordApp.Documents.Add

    'Copy Excel Table Range
      tbl.Copy

    'Paste Table into MS Word
      myDoc.Paragraphs(1).Range.PasteExcelTable _
        LinkedToExcel:=False, _
        WordFormatting:=False, _
        RTF:=False

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

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

    'Clear The Clipboard
      Application.CutCopyMode = False

    End Sub

根据您在注释中提供的信息,您的工作表中似乎没有表(这就是为什么
ListObjects(“Table1”)
没有返回对象),您实际上只想传输
范围

如果是,请将行设置
tbl
替换为以下内容:

Set tbl = ThisWorkbook.Worksheets("whatever_sheet_name_you_are_using")‌​.Range("A1:E10")

根据您在注释中提供的信息,您的工作表中似乎没有表(这就是为什么
ListObjects(“Table1”)
没有返回对象),您实际上只想传输
范围

如果是,请将行设置
tbl
替换为以下内容:

Set tbl = ThisWorkbook.Worksheets("whatever_sheet_name_you_are_using")‌​.Range("A1:E10")

我的最佳猜测是,您混淆了工作表的名称和工作表的代码名。在上面的示例中,您使用的是一个代码名来检索名称。Table1在哪个工作表(名称)上?VBE的VBA项目窗口(Ctrl+R)中与该工作表名称关联的代码名是什么?如果宏工作簿中的工作表的
代码名为
Sheet1
(或
Sheet9
,根据错误?!?),其中包含一个名为
“Table1”
,然后
此工作簿.工作表(Sheet1.Name)。
可以缩短为
Sheet1.
@YowE3K`包含表调用
table1
是什么意思?`您试图使用
…ListObjects(“table1”)
,它(AFAIK)引用了名为“table1”的表,即,如果在工作表中插入表格,将调用默认表格。你的工作表上有桌子吗?如果没有,这可能就是您无法访问它的原因。@YowE3K`指的是名为“Table1”的表,`这意味着名为“Table1”的工作表?我有!现在提示out
array list out-bound
我最好的猜测是您将工作表的名称与工作表的代码名混淆了。在上面的示例中,您使用的是一个代码名来检索名称。Table1在哪个工作表(名称)上?VBE的VBA项目窗口(Ctrl+R)中与该工作表名称关联的代码名是什么?如果宏工作簿中的工作表的
代码名为
Sheet1
(或
Sheet9
,根据错误?!?),其中包含一个名为
“Table1”
,然后
此工作簿.工作表(Sheet1.Name)。
可以缩短为
Sheet1.
@YowE3K`包含表调用
table1
是什么意思?`您试图使用
…ListObjects(“table1”)
,它(AFAIK)引用了名为“table1”的表,即,如果在工作表中插入表格,将调用默认表格。你的工作表上有桌子吗?如果没有,这可能就是您无法访问它的原因。@YowE3K`指的是名为“Table1”的表,`这意味着名为“Table1”的工作表?我有!现在提示退出
数组列表超出范围