首页 > 解决方案 > 从excel中提取值而不激活工作簿

问题描述

我正在使用以下代码MS Word并需要从以下代码中提取数据Excel Workbook

它将Find在 Workbook 中 TICKER,如果找到它,它将使用 Workbook 中的值设置 SECTOR 变量。

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 变量。

标签: excelvbams-word

解决方案


只需删除该行eXwb.Activate。也.ActivateeXwb.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

推荐阅读