2016-08-31 6 views
0

Я пытаюсь использовать vlookup для чтения строки из документа Word и возврата соответствующих значений из листа excel. Кажется, я получаю ошибку «Subscript out или Range» в функции vlookup.Word/Excel Vba vlookup Ошибка «Subscript out of range»

Это рабочий лист, что я смотрю на: 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

Вероятно, вы получите эту ошибку, если имя файла 'Main' не существует в файле Dbase.xlsm. Может быть, есть лишнее пространство или что-то еще, проверьте точность. Я подражал вашему коду, и он выглядит нормально. Одна вещь, которая может быть проблемой, заключается в том, что если вы ожидаете вернуть строку, вы можете изменить testvar1 как 'String', а не' Double'. –

+0

Я подозреваю, что вы получаете свою ошибку, потому что ваш 'Vlookup' возвращает ошибку (так как не найден), вам нужно добавить обработку ошибок в случаях, когда ваш' Vlookup' не увенчался успехом, см. Ссылку: http://stackoverflow.com/questions/ 18063214/how-to-error-handle-1004-error-with-worksheetfunction-vlookup –

ответ

0

Этот сценарий работал для меня. Убедитесь, что вкладка «Главная» существует, вот как я продублировал ошибку.

Отсутствие значения в VLookup даст вам ошибку «Невозможно получить свойство Vlookup ...».

+0

Это сработало и для меня –

+0

Мое имя листа в книге и код были идентичны, и книга не была скрыта. Все еще не работал с oExcel.Workbooks.Open(), поэтому я заменил GetObject(), и он сработал. У вас есть идея, почему это произойдет? – Shiv

+0

Честно говоря, я не уверен, не имея возможности испытать это из первых рук (что мне очень понравилось). У пары длинных снимков у меня есть неизданный COM-объект, который VBA не выпускал из памяти, или это может быть экологическим. Возможно, в книге есть процесс workbook_open()? – Kevin