【问题标题】:Using VBA in Outlook, how can I convert an Excel range to a table?在 Outlook 中使用 VBA,如何将 Excel 范围转换为表格?
【发布时间】:2016-11-16 20:32:15
【问题描述】:

我正在尝试使用从 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”的方法“范围”失败。

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

【问题讨论】:

    标签: excel vba outlook


    【解决方案1】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-04-06
      • 2021-11-03
      • 2017-01-28
      • 1970-01-01
      • 2021-08-20
      • 1970-01-01
      • 1970-01-01
      • 2016-02-29
      相关资源
      最近更新 更多