• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:【Excel VBA】 多くのファイルからのコピー貼り付け連続処理)

【Excel VBA】多くのファイルからのコピー貼り付け連続処理

このQ&Aのポイント
  • アンケートを取った500個のxlsファイルがあります。保護されたシートの範囲をコピーし、集計用の別ファイルへ貼り付けていく操作を自動化するマクロを作りたい。
  • 1人目のデータのみを記録したマクロでは、一つずつファイル名やセルの範囲を変更しているため、全体の処理はスッキリとまとまっていません。
  • 500人分のファイルに対して、保護を解除し範囲をコピーし、集計用ファイルへ貼り付ける操作を一括で行うマクロを作成したい。

質問者が選んだベストアンサー

  • ベストアンサー
  • end-u
  • ベストアンサー率79% (496/625)
回答No.2

セオリーとしては Dim i As Long For i = 1 To 500   With Workbooks.Open("D:\AAA\" & Format$(i, "000") & ".xls", UpdateLinks:=0, ReadOnly:=True)     'コピー処理     .Close savechanges:=False   End With Next こんな感じでFor...Nextステートメントで1Bookずつ開いてコピー...のLoop処理にすればスッキリまとめる事ができます。 ですが今回のようにBook名、シート名、セルアドレスなどが、固定&規則性がある変動値の場合は ダイレクトに参照数式をセットする事もできます。こっちが速いです。 Sub test2()   Const f1 = "='D:\AAA\["   Const f2 = ".xls]アンケート'!"   Dim f As String   Dim i As Long   With Application     .ScreenUpdating = False     .EnableEvents = False     .Calculation = xlCalculationManual   End With   With ActiveSheet     For i = 1 To 500       f = f1 & Format$(i, "000") & f2       .Cells(i + 3, 4).Resize(, 4).Formula = f & "P6"       .Cells(i + 3, 9).Resize(, 50).Formula = f & "A70"     Next     With .Range("D4:G503")       .Copy       .PasteSpecial xlPasteValues     End With     With .Range("I4:BF503")       .Copy       .PasteSpecial xlPasteValues     End With   End With   With Application     .Calculation = xlCalculationAutomatic     .EnableEvents = True     .ScreenUpdating = True   End With End Sub ※存在しないBookがあったり、フォルダ名を間違ったりすると[値の更新]ウィンドウが表示されます。 変更が必要な式の数量分繰り返されますので、設定には気をつけてください。 もしそうなった場合、[Ctrl]キーと[Break]キーを同時押しした後に[Esc]キー。...でデバッグできます。

cocwg
質問者

お礼

教えていただいた2つ目のマクロでバッチリでした!! 大変助かりました。そしてとても勉強になりました。 ありがとうございました!!!

その他の回答 (1)

回答No.1

ファイル名を変数にしてforで回すとか フォルダの中に入れてぐるぐる回すとかって事?

cocwg
質問者

お礼

おそらくご想像いただいてる内容かと推察しますが、 申し訳ありません、私の説明がよくなかったようで 伝わらなかったみたいです。。。 いずれにせよ、ありがとうございました。

関連するQ&A

専門家に質問してみよう