繁体   English   中英

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

[英]Using VBA in Outlook, how can I convert an Excel range to a table?

我正在尝试使用从 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' 的方法 'Range' 失败。

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

这是因为在 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 应用程序有工作簿,工作簿有工作表,工作表有范围。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM