- ベストアンサー
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 ・ ・
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
こちらが参考になるでしょう。 最適化の基本です。 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
その他の回答 (1)
- qualheart
- ベストアンサー率41% (1451/3486)
特にその都度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
お礼
ありがとうございます。試してみます!!
お礼
明確なアドバイスありがとうございます。 参考にし勉強してみます。