アプリ版:「スタンプのみでお礼する」機能のリリースについて

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
  ・
  ・

A 回答 (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
    • good
    • 0
この回答へのお礼

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

お礼日時:2007/09/05 16:05

こちらが参考になるでしょう。


最適化の基本です。
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
    • good
    • 0
この回答へのお礼

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

お礼日時:2007/09/05 16:02

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!