プロが教える店舗&オフィスのセキュリティ対策術

マクロで下記内容の処理を行いたいと思っております。
どのようなコードにすればよいかご教授よろしくお願い致します。

1.A.xlsを開く
2.B.xlsを開く
3.B.xlsの特定セルの値をコピーする。(特定セルを仮にB4、C7、D9とする)
4.A.xlsのC列にあるファイル名リストから「B.xls」というファイル名の入ったセルを検索する。
5.仮に5行目に「B.xls」というファイル名があれば、同じ行にある特定列
(行は固定で、例えばE5、F5、G5とする)に3.でコピーしたB4、C7、D9の値を張り付ける。
※B4はE列、C7はF列、D9はG列に対応するものとする
6.B.xlsを閉じる
7.C.xlsを開く
8.C.xlsの特定セルの値をコピーする。(特定セルはB.xlsと同じB4、C7、D9)
9.A.xlsのC列にあるファイル名リストから「C.xls」というファイル名の入ったセルを検索する。
10.仮に7行目に「C.xls」というファイル名があれば、同じ行にある特定列
(行は固定で、例えばE7、F7、G7とする)に8.でコピーしたB4、C7、D9の値を張り付ける。
※B4はE列、C7はF列、D9はG列に対応するものとする
11.C.xlsを閉じる
12.D.xlsを開く
以下、同じ処理を繰り返す。

「エクセル(マクロ)  特定セルのファイル」の質問画像

A 回答 (1件)

前提として、以下のように仮定します。


かなり勝手な解釈なので違っていれば補足ください

1.すべてのブックのファイルは同じフォルダにある。
2.A.xlsはファイル名固定
3.ファイル名リストは行3にタイトル、行4以下に連続(隣接)してファイル名が書き込まれている。
4.ファイル名リストに隣接するセル(左、上、下)はブランクセルのみである。
5.ファイル名リストにあるファイルは必ず実在する。
6.A.xls以外のファイルはファイル名リストにあるものだけを処理する。
7.マクロは上記以外の別のブックの標準モジュールにある。
8.マクロ開始時はマクロのあるブックのみが開いている。

また、上記以外もいろいろ不十分なところがありますが、最低限に近いサンプルとしてご検討ください。
動作確認はWindows XP SP3, Excel2003にて行いました。
なお、使用時はファイルのあるフォルダのパスを適切なものに変更してください。

Sub ValueCopy1()
Dim wbA As Workbook, wbOther As Workbook
Dim wbList As Range
Dim bPath As String
Dim e As Variant, i As Variant
Dim sCells As Variant
bPath = "." 'ファイルのあるフォルダのパスを表す文字列(末尾"\"なし)
sCells = Array("B4", "C7", "D9") '特定セルのアドレスを表す文字列
Set wbA = Workbooks.Open(bPath & "\a.xls") 'A.xlsを開く
Set wbList = wbA.ActiveSheet.Range("C3").CurrentRegion 'リスト選択・タイトル行込み
Set wbList = wbList.Resize(wbList.Rows.Count - 1).Offset(1) 'タイトル行を範囲からはずす
For Each e In wbList.Rows 'ファイル名リストを1つずつ処理する
Set wbOther = Workbooks.Open(bPath & "\" & e.Cells(1, 1).Value) 'B.xlsなどを開く
For i = 0 To UBound(sCells) 'セルの値のコピー
e.Cells(1, 3 + i).Value = wbOther.ActiveSheet.Range(sCells(i)).Value
Next
wbOther.Close savechanges:=False 'B.xlsなどは保存せずに閉じる
Next
End Sub
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!