Vba 错误:haven';没有定义对象
我只是引用了一些示例代码,它们希望将Excel表移动到新的word文档中 但是,它至少包含一个错误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
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”的工作表?我有!现在提示outarray list out-bound
我最好的猜测是您将工作表的名称与工作表的代码名混淆了。在上面的示例中,您使用的是一个代码名来检索名称。Table1在哪个工作表(名称)上?VBE的VBA项目窗口(Ctrl+R)中与该工作表名称关联的代码名是什么?如果宏工作簿中的工作表的代码名为Sheet1
(或Sheet9
,根据错误?!?),其中包含一个名为“Table1”
,然后此工作簿.工作表(Sheet1.Name)。
可以缩短为Sheet1.
@YowE3K`包含表调用table1
是什么意思?`您试图使用…ListObjects(“table1”)
,它(AFAIK)引用了名为“table1”的表,即,如果在工作表中插入表格,将调用默认表格。你的工作表上有桌子吗?如果没有,这可能就是您无法访问它的原因。@YowE3K`指的是名为“Table1”的表,`这意味着名为“Table1”的工作表?我有!现在提示退出数组列表超出范围