在Outlook中使用VBA,如何将Excel范围转换为表格?

时间:2016-11-16 20:32:15

标签: vba excel-vba outlook-vba excel

我正在尝试使用从Outlook运行的VBA脚本将Excel范围转换为表格。

这在从Excel运行时有效,但不在Outlook中运行:

ListObjects.Add(xlSrcRange, Range("A1:D10"), , xlYes).Name = "myTable"

我在Outlook中尝试了下一个代码,但它失败了:

Dim excApp As Excel.Application
Set excApp = GetObject(, "Excel.Application")    
excApp.ListObjects.Add(xlSrcRange, Range("A1:D10"), , xlYes).Name = "myTable"

此代码抛出运行时错误'1004'对象'_Global'的方法'范围'失败。

我想知道如何使代码工作,但我也想了解为什么我的代码失败,以便我可以从中学习。我很感激任何建议。谢谢!

1 个答案:

答案 0 :(得分:2)

这是因为在Excel中您已经打开了一张表。当您只是粘贴Range("somerange")而没有指定存在范围的工作表,工作簿或Excel应用程序对象时,ActiveSheet是默认设置。在Outlook中没有activesheet这样的东西,因此它不知道是什么你的意思是那个范围。

你必须更明确:

Dim excApp As Excel.Application
Set excApp = GetObject(, "Excel.Application")  
Dim excWB as Object
Set excWB = excApp.Workbooks.Add  
excApp.ListObjects.Add(xlSrcRange, excWB.sheets("sheet1").Range("A1:D10"), , xlYes).Name = "myTable"

或者那些行

简而言之,excel应用程序具有工作簿,工作簿具有工作表,而工作表具有范围。