如何使用variables在Excel中引用已closures的工作簿

我有这么多的数据文件用作源文件。 但我想要从这些文件中select数据,当我select一个文件名称使用combobox。 见附图。 当我从下拉列表中select货运ID时,我想从具有相同ID号码的文件中获取一些数据。 我已经使用下面的代码来做到这一点。

在这里输入图像说明

Sub GetDataFromClosedBook() Dim SO As String Dim Qty As String Dim ID As String ID = Worksheets("Sheet1").Cells(1, "O").Value MsgBox (ID) 'data location & range to copy SO = "='D:\Excel Software\Shipment Tracking\[7811.xlsx]Shipment - 7811 - Connected Ord'!$A$1:$C$50" Qty = "='D:\Excel Software\Shipment Tracking\[7811.xlsx]Shipment - 7811 - Connected Ord'!$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 

现在我想使用“ID”variables作为文件名和表名。 我怎样才能做到这一点。

未经testing:

 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将自动将公式中的工作表名称更改为文件中工作表的名称。 它不会提醒你,所以如果表单名称真的需要匹配,你需要find一种方法来检测发生的事情。

如果没有匹配且源文件大于1张,则Excel会提示您使用哪张纸。