Извлечение значения из Excel без активации книги - PullRequest
0 голосов
/ 09 января 2019

Я работаю с MS Word и мне нужно извлечь данные из Excel Workbook, используя следующий код:

Он будет Find TICKER в Workbook, и если он найден, он установит переменную SECTOR, используя значение из Workbook.

Set MyXL = GetObject(, "Excel.Application")

If MyXL.ActiveWorkbook.NAME = "LIST.xlsm" Then
Set eXwb = GetObject("C:\Users\dell\Desktop\WEBD\LIST.xlsm")
Else
Set eXwb = MyXL.Workbooks("LIST.xlsm")
eXwb.Activate
End If

eXwb.Worksheets("Sheet4").Cells.Find(What:=TICKER).Offset(0, 2).Activate ' Is there any oneline code to find and set SECTOR variable without activating workbook
Set SECTOR = eXwb.Application.ActiveCell

Есть ли вероятность, что я могу извлечь данные без активации книги eXwb. Есть ли однострочный код для поиска и установки переменной SECTOR без активации рабочей книги.

1 Ответ

0 голосов
/ 09 января 2019

Просто удалите строку eXwb.Activate. Также удалите .Activate из eXwb.Worksheets("Sheet4").Cells.Find(What:=TICKER).Offset(0, 2).Activate Непосредственно работайте с диапазоном

Ваш код можно записать как

Set MyXL = GetObject(, "Excel.Application")

If MyXL.ActiveWorkbook.Name = "LIST.xlsm" Then
    Set eXwb = GetObject("C:\Users\dell\Desktop\WEBD\LIST.xlsm")
Else
    Set eXwb = MyXL.Workbooks("LIST.xlsm")
End If

Dim SECTOR As Object '~~> Code is run from MS Word

Set SECTOR = eXwb.Worksheets("Sheet4").Cells.Find(What:=TICKER)

'~~> Check if .Find returned something
If Not SECTOR Is Nothing Then
    Set SECTOR = SECTOR.Offset(, 2)
    MsgBox SECTOR.Value
Else
    MsgBox "Ticker " & TICKER & " was not found"
End If
...