以下のサンプルではエクセル4.0マクロを使用して対象ブックをOpenせずに
指定のワークシートからデータを取得します。
注)サンプルでは読み込み側で指定したセル範囲と同一アドレスのセルから
データを取得しています。
Sub MyProc()
Dim FileName As String
Dim ShName As String
Dim TargetRange As Range
Dim CurRange As Range
Dim Pos As Integer
'対象ファイル選択
FileName = Application.GetOpenFilename ("Excel(*.xls),*.xls")
If FileName = "False" Then Exit Sub
'最後の円マーク位置を取得、ファイル名を括弧でくくる
Pos = InStrRev(FileName, "\")
FileName = Left(FileName, Pos) & "[" & Mid(FileName, Pos + 1) & "]"
'ワークシート名入力
ShName = Application.InputBox("シート名を入力", "SheetName?", _
"Sheet1", Type:=2)
'セル領域選択
Set TargetRange = Application.InputBox("対象セル領域選択", _
"Range?", "A1:A1", Type:=8)
For Each CurRange In TargetRange
'パス[ファイル名]シート名!R1C1の形式でExcel4.0マクロの引数とする
CurRange.Value = Application.ExecuteExcel4Macro _
("'" & FileName & ShName & "'!R" & CurRange.Row & "C" & CurRange.Column)
Next
End Sub
|