Использование VBA для выполнения Vlookup на внешней книге из Word - PullRequest
0 голосов
/ 15 февраля 2019

Я не могу получить внешнюю рабочую книгу, чтобы использовать Vlookup для возврата значения другого столбца.

Я пытаюсь взять текстовый документ, ввести идентификационный номер в текстовое поле, найти vlookup findидентификационный номер во внешнем документе, а затем вернуть имя из следующего столбца.Затем имя заполнит другое текстовое поле, а дата, в которую был введен номер, перейдет в третье поле.В настоящий момент EMPID.txt имеет только два столбца A: EmpNum и B: EmpName.

Private Sub VerID_LostFocus()

    Dim emp_number As String
    Dim xlApp As Excel.Workbook

    Set xlApp = Excel.Workbooks.Open("filepath\EmpID.xlsx")

    emp_number = VerID.Text

    MsgBox emp_number

    On Error Resume Next

    result = Excel.WorksheetFunction.VLookup(emp_number, xlApp.Worksheets("Sheet1").Range("A:B"), 2, False)
    On Error GoTo 0

    If result <> "" Then MsgBox result

    MsgBox result

    VerSig.Text = result

    Set xlApp = Nothing

    VerDate.Value = Format(Date, "mm/dd/yyyy")

End Sub

emp_number присваивается и отображается как значение в окне сообщения, но ничего не возвращается или не присваивается результату.Дата обновляется в третьем текстовом поле каждый раз, когда появляется первый «потерянный фокус».

1 Ответ

0 голосов
/ 15 февраля 2019

WorksheetFunction работает с объектом приложения, поскольку вы уже объявили XlApp в качестве рабочей книги, измените строку на

Result = xlApp.Application.WorksheetFunction.VLookup(emp_number, Worksheets("Sheet1").Range("A:B"), 2, False)  

, и она работает.Также, если emp_number введено как число в книге, внесите следующие изменения

Dim emp_number As Variant 
'
'
'
'
emp_number = Val(VerID.Text)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...