2016-11-16 53 views
1

我想將Excel範圍轉換爲使用從Outlook運行的VBA腳本的表。在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'的方法'範圍'失敗。

我想知道如何使代碼工作,但我也想了解爲什麼我的代碼失敗了,以便我可以從中學習。我很欣賞任何建議。謝謝!

回答

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應用程序具有的工作簿,工作簿有牀單,牀單有範圍。