• 締切済み

エクセル(マクロ) 特定セルのファイル間コピペ

マクロで下記内容の処理を行いたいと思っております。 どのようなコードにすればよいかご教授よろしくお願い致します。 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を開く 以下、同じ処理を繰り返す。

みんなの回答

  • queuerev2
  • ベストアンサー率78% (96/122)
回答No.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

関連するQ&A