マクロで下記内容の処理を行いたいと思っております。
どのようなコードにすればよいかご教授よろしくお願い致します。
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件)
- 最新から表示
- 回答順に表示
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が見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) 入力ボックスが繰り返しポップアップして止まらない。 下記コードでファイル名の変更をしたいのですが、変 1 2022/09/08 11:27
- Visual Basic(VBA) ファイル名の右側を変更したい ファイル名:「1001日別売上」の左側へ「2022」を追加し、「202 6 2022/10/14 10:03
- Visual Basic(VBA) DisplayAlertsブロパティで ”実行時エラー424オブジェクトが必要です” 5 2022/05/15 18:02
- Excel(エクセル) エクセルのマクロについて教えてください。 3 2023/02/07 14:47
- Visual Basic(VBA) エクセルVBA 既存エクセルを開きその中のシートとしてCSVファイルを開く 3 2023/05/31 13:11
- Excel(エクセル) Excel VBAどこが間違ってますか? 4 2023/07/17 10:04
- Visual Basic(VBA) VBAのユーザーフォームのテキストボックスに入力制限をしたい 6 2022/11/15 08:28
- Visual Basic(VBA) エクセルVBA エクセルを開いた後に編集可能な状態にするには? 2 2023/06/14 11:58
- Visual Basic(VBA) Excelのマクロについて教えてください。 1 2023/03/12 12:16
- Visual Basic(VBA) エクセルVBA Workbook変数に変数を使ったファイル名を格納したい 5 2023/06/13 14:46
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
特定のセルが空白だったら、そ...
-
ExcelVBAを使って、値...
-
【Excel VBA】指定行以降をクリ...
-
【Excel】指定したセルの名前で...
-
i=cells(Rows.Count, 1)とi=cel...
-
特定の文字を条件に行挿入とそ...
-
DataGridViewの各セル幅を自由...
-
Excel vbaで特定の文字以外が入...
-
Excelのプルダウンで2列分の情...
-
Excelのハイパーリンクにマクロ...
-
【VBA】シート上の複数のチェッ...
-
Excelで指定した日付から過去の...
-
実行時エラー438 オブジェクト...
-
指定した条件で範囲選択したい
-
EXCELで変数をペーストしたい
-
VBAを使用した時間管理
-
EXCELのVBA-フィルタ抽出後の...
-
VBA初心者です。結合セルを保持...
-
UWSCで値のみコピーするには?
-
DataGridViewのセルのItem設定...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
ExcelVBAを使って、値...
-
特定のセルが空白だったら、そ...
-
i=cells(Rows.Count, 1)とi=cel...
-
【Excel VBA】指定行以降をクリ...
-
Excelで指定した日付から過去の...
-
【Excel】指定したセルの名前で...
-
Excel vbaで特定の文字以外が入...
-
特定の文字を条件に行挿入とそ...
-
TODAY()で設定したセルの日付...
-
screenupdatingが機能しなくて...
-
Excelのプルダウンで2列分の情...
-
EXCELで変数をペーストしたい
-
連続する複数のセル値がすべて0...
-
Excel VBA、 別ブックの最終行...
-
VBAを使用した時間管理
-
エクセルVBAでコピーして順...
-
セル色なしの行一括削除
-
【EXCEL VBA】Range("A:A").Fi...
-
VBA コピーして次の値まで貼り...
-
VBA初心者です。結合セルを保持...
おすすめ情報