2017-08-15 22 views
0

ソースファイルとして使用するデータファイルが非常に多いです。私はコンボボックスを使ってファイル名を選択すると、それらのファイルから選択されたデータを取得したい。添付の図を参照してください。ドロップダウンリストから出荷IDを選択すると、同じID番号を持つファイルからデータを取得したいと考えています。私はこれを行うために以下のコードを使用しています。変数を使用してExcelで閉じたブックを参照する方法

enter image description here

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" 変数を使用したいです。どうやってやるの。

答えて

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がこれをしなかったわからなかったので、自分の式のシート名が参照されたファイル内に見つからない場合が...ノートとして

を追加、、そのファイルにはワークシートが1つしかない場合、Excelは自動的に数式内のシート名をファイル内のシート名に変更します。これはあなたに警告しませんので、シートの名前が実際に一致する必要がある場合、起こったことを検出する方法を見つける必要があります。

一致するものがなく、ソースファイルのシートが1枚を超える場合は、Excelでどのシートを使用するかを確認するメッセージが表示されます。

+0

このコードはよくコンパイルされています。範囲A1からC5までの値は広告 "#Value"で示されます。正しい値が表示されません。私に助けてください –

+0

私にとってうまく動作します - ソースファイルのデータはOKですか? –

+0

うまくいきます。ありがとうhttps://stackoverflow.com/users/478884/tim-williams –

関連する問題