簡體   English   中英

從單元格Excel中包含的不同文件位置獲取值

[英]getting vales from different file locations contained in cells Excel

因此,我嘗試在Excel和M5單元格中創建一個跟蹤文件,我具有一個鏈接到支持文檔的文件位置,因此包含一些重復的信息,因此我想嘗試提取某些字段(在此示例中為B8 )從M5中引用的外部文件中。

我試過了=([M5]Sheet1!B8) ,它在某種程度上可以工作,但是會彈出一個對話框,我必須手動選擇文件位置,這對於此目的來說太手工了。

我也研究了使用INDIRECT函數,但不能保證兩個文件都可以同時打開,因此,如果可能的話,建議使用其他選項。

任何建議將不勝感激!

這是您可以用來從封閉的工作簿中獲取單個單元格值的公式。

這是一個用戶定義函數(UDF),您可以這樣稱呼它:

=GetClosedCell(A3,B3,C3)

第一個參數是工作簿的路徑和名稱。

第二個參數是工作表名稱。

第三個參數是單元的地址。

將此函數放在標准代碼模塊中:

Public Function GetClosedCell(ByVal FileSpec$, ByVal SheetName$, ByVal RangeAddress$)
    Const CNX = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=[];Extended Properties=""Excel 12.0;imex=1;hdr=no;"""
    Const QRY = "SELECT * FROM [.$|:|]"
    On Error GoTo errorh
    RangeAddress = Range(RangeAddress)(1, 1).Address(0, 0)
    With CreateObject("adodb.recordset")
        .Open Replace(Replace(QRY, "|", RangeAddress), ".", SheetName), Replace(CNX, "[]", FileSpec)
        GetClosedCell = .Fields(0)
    End With
    Exit Function
errorh:
    GetClosedCell = "ERROR: " & Err & " " & Err.Description
End Function

這是它在工作表上的外觀:

在此處輸入圖片說明

無需打開外部文件可以獲取數據。 為了使Excel獲得數據項,它需要知道:

  1. 文件位置
  2. 該位置中文件的名稱
  3. 該文件中工作表的名稱
  4. 該工作表中單元格的地址

我們將所需的信息輸入某個單元格,例如以非常特定的格式表示單元格C3

'C:\TestFolder\[ABC.xls]xxx'!R9C2

注意單引號!

然后運行這個簡短的宏:

Public Sub GrabData()
  Dim r1 As Range, r2 As Range
  Set r1 = Range("C3")
  Set r2 = Range("C4")
  r2.Value = ExecuteExcel4Macro(r1.Value)
End Sub

將檢索數據並將其放置在單元格C4中

宏非常易於安裝和使用:

  1. ALT-F11彈出VBE窗口
  2. ALT-I ALT-M打開一個新模塊
  3. 將內容粘貼並關閉VBE窗口

如果您保存工作簿,則宏將隨其一起保存。 如果您在2003年以后使用Excel版本,則必須將文件另存為.xlsm而不是.xlsx

刪除宏:

  1. 如上調出VBE窗口
  2. 清除代碼
  3. 關閉VBE窗口

要從Excel使用宏:

  1. ALT-F8
  2. 選擇宏
  3. 觸摸運行

要總體上了解有關宏的更多信息,請參見:

http://www.mvps.org/dmcritchie/excel/getstarted.htm

http://msdn.microsoft.com/zh-CN/library/ee814735(v=office.14).aspx

必須啟用宏才能使其正常工作!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM