2016-08-31 114 views
0

我試圖用vlookup從word文檔中讀取一個字符串並從excel工作表中返回相應的值。我似乎在vlookup函數上出現「下標輸出或範圍」錯誤。Word/Excel VBA vlookup「下標超出範圍」錯誤

這是我在看錶: Sample Data

我的代碼是:

Sub Autofill() 
Dim oExcel As New Excel.Application 
Dim testdb As Excel.Workbook 
Dim testvar1 As Double 

Set testdb = oExcel.Workbooks.Open("k:\SIF\Vibration\Dbase.xlsm") 

testvar1 = oExcel.WorksheetFunction.VLookup("Roger", testdb.Sheets("Main").Range("A1:C4"), 2, False) 

MsgBox (testvar1) 

End Sub 

我使用Application.Vlookup功能以及,無濟於事嘗試。得到了同樣的錯誤。

+0

這是在黑暗中拍攝的照片,但是您是否嘗試將oExcel聲明爲Excel.Application? 在設置testdb之前添加此項, set oExcel = new Excel.Application – Alex

+1

如果Dbase.xlsm文件中不存在工作表Main的名稱,則可能會出現此錯誤。也許有一個額外的空間或東西,檢查準確性。我模擬了你的代碼,它看起來沒問題。有一件事可能是一個問題,如果你期望返回一個字符串,你可能想要將testvar1改爲'String'而不是'Double'。 –

+0

我懷疑你是因爲你的'Vlookup'返回一個錯誤(因爲沒有找到)而得到你的錯誤,你需要在你的'Vlookup'不成功的情況下添加錯誤處理,請參閱鏈接:http://stackoverflow.com/questions/ 18063214/how-to-error-handle-1004-error-with-worksheetfunction-vlookup –

回答

0

此腳本適用於我。確保Main選項卡存在,這就是我重複錯誤的方式。

VLookup中的缺失值會導致「無法獲取Vlookup屬性...」錯誤。

+0

它也適用於我 –

+0

我的工作簿中的表名和代碼是相同的,工作簿並未隱藏。仍然沒有與oExcel.Workbooks.Open()一起工作,所以然後我用GetObject()替換它,它工作。 你能知道爲什麼會發生這種情況嗎? – Shiv

+0

老實說,我不確定沒有能夠親身體驗它(我很樂意)。我有一個很長的一段是有一個未發佈的COM對象VBA沒有從內存中釋放,或者它可能是環境。也許在工作簿中有一個workbook_open()過程? – Kevin