如何使用变量在excel中引用已关闭的工作簿

时间:2017-08-15 16:59:49

标签: excel vba excel-vba

我有很多数据文件要用作源文件。但是当我使用组合框选择文件名时,我希望从这些文件中获取所选数据。见附图。当我从下拉列表中选择货件ID时,我想从具有相同ID号的文件中获取一些数据。我使用下面的代码来做到这一点。

enter image description here

.git/config

现在我想使用" ID"文件名和工作表名称的变量。我怎么能这样做。

1 个答案:

答案 0 :(得分:1)

未测试:

Sub GetDataFromClosedBook()

    Const FILE_INFO As String = "='D:\Excel Software\Shipment Tracking\" & _
                              "[<id>.xlsx]Shipment - <id> - Connected Ord'!"
    Dim SO As String
    Dim Qty As String
    Dim ID As String, fn

    ID = Worksheets("Sheet1").Cells(1, "O").Value
    'replace ID in file/sheet path
    fn = Replace(FILE_INFO, "<id>", ID)

    'data location & range to copy
    SO = fn & "$A$1:$C$50" 
    Qty = fn & "$I$1:$I$50"
    'link to worksheet
    With ThisWorkbook.Worksheets(1).Range("A1:C50") 
       .Formula = SO
       'convert formula to text
       .Value = .Value
    End With

    With ThisWorkbook.Worksheets(1).Range("E1:E50") 
       .Formula = Qty
       'convert formula to text
       .Value = .Value
    End With

End Sub

编辑:作为备注添加,因为我不知道Excel做了这个......

如果在引用文件中找不到公式中的工作表名称,且该文件只有一个工作表,Excel将自动将公式中的工作表名称更改为工作表中的工作表名称文件。它不会警告你这一点,所以如果表格的名称确实需要匹配,你需要找到一种方法来检测已发生的事情。

如果没有匹配且源文件包含&gt; 1张,则Excel会提示您应该使用哪张表。