• ベストアンサー

Excel マクロ : マクロの記録の表記方法の変更

Excelで質問です。 下記のようなマクロの記録を使用し「顧客一覧」のブックにデータを追加しています。 しかし、処理の中で一項目コピーするごとにファイルを行ったり来たりしているようで処理が遅いようです。何か解決策はあるのでしょうか? ・ ・ ・ Windows("顧客一覧.xls").Activate Rows("4:4").Select Selection.Insert Shift:=xlDown Windows("2.xls").Activate Range("C6").Select Selection.Copy Windows("顧客一覧.xls").Activate Range("A4").Select ActiveSheet.Paste Windows("2.xls").Activate Range("C7").Select Application.CutCopyMode = False Selection.Copy Windows("顧客一覧.xls").Activate Range("B4").Select ActiveSheet.Paste Windows("2.xls").Activate Range("C8").Select Application.CutCopyMode = False Selection.Copy   ・   ・

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

  • ベストアンサー
  • hana-hana3
  • ベストアンサー率31% (4940/15541)
回答No.1

こちらが参考になるでしょう。 最適化の基本です。 http://officetanaka.net/excel/vba/cell/cell09.htm Windows("2.xls").Activate Worksheets("Sheet1").Activate With Windows("顧客一覧.xls").Worksheets("Sheet2") Range("C6").Copy .Range("A4") Range("C7").Copy .Range("B4") End With

fcb7arg9
質問者

お礼

明確なアドバイスありがとうございます。 参考にし勉強してみます。

その他の回答 (1)

  • qualheart
  • ベストアンサー率41% (1451/3486)
回答No.2

特にその都度BookをActivateしなくても値は取得できます。 なので 顧客一覧.xlsの方に以下のマクロを登録すれば良いのではないでしょうか? これだと、ブックの移動やコピー&ペースト動作をするわけではないので、非常に高速に処理してくれると思います。 Rows("4:4").Select Selection.Insert Shift:=xlDown n = 6 Do If Workbooks("2.xls").Worksheets(1).Cells(n, 3) <> "" Then Cells(4, n - 5).Value = Workbooks("2.xls").Worksheets(1).Cells(n, 3) n = n + 1 Else Exit Do End If Loop

fcb7arg9
質問者

お礼

ありがとうございます。試してみます!!

関連するQ&A