他のEXCELブックから特定の範囲を取り出して、今開いているシートのアクティブセルを先頭とする範囲に複写するマクロです。
コピーする範囲はH14:J20にしましたが、CONST文を書き換えれば変更は可能です。
またシート名も固定とさせていただいていますので、CONST文のXXXXXの部分を書き換えてください。
このマクロはVBE画面の標準モジュールにペーストして動かしてみてください。
Sub 他ブック範囲COPY()
Dim idxR, idxC, pos, ofROW, ofCOL As Integer, flName
Dim curROW, curCOL As Long
Dim wkSTR1, wkSTR2, wkSTR3 As String
Const startROW As Long = 14, lastROW As Long = 20 '行範囲を指定
Const startCOL As Long = 8, lastCOL As Long = 10 '列範囲を指定。H:8、J:10(A列を1とする順番)
Const shtNAME As String = "XXXXX" 'シート名は固定。ここで指定する
flName = Application.GetOpenFilename(MultiSelect:=False)
'ファイル名加工
pos = InStrRev(flName, "\")
wkSTR1 = Left(flName, pos)
wkSTR2 = Right(flName, Len(flName) - pos)
'データ取得
ofROW = 0
ofCOL = 0
For idxC = startCOL To lastCOL
For idxR = startROW To lastROW
wkSTR3 = "'" & wkSTR1 & "[" & wkSTR2 & "]" & shtNAME & "'!R" & idxR & "C" & idxC
Selection.Cells(1, 1).Offset(ofROW, ofCOL) = ExecuteExcel4Macro(wkSTR3)
ofROW = ofROW + 1
Next idxR
ofROW = 0
ofCOL = ofCOL + 1
Next idxC
End Sub
動作は一応確認しました
お礼
ありがとうございました。 できれば、300のファイルを開けずに処理したかったのです。。。もうちょっと考えて見ます。