- 締切済み
エクセルで大量処理する場合にフリーズを防ぐ方法
エクセルマクロで単純処理を連発させているのですが、途中でフリーズてしまいます。大量処理する場合、フリーズを防ぐ方法はどのようなものがありますでしょうか?VBAに埋め込むとよいコードなどあれば教えてください。 コードのひとかたまりは下記のようなものです。 これをシートを替えて100連発ほどさせます。 Range("A1:Z1").Select...複雑な計算式がはいっています Selection.Copy Range("A1:K10000").Select ActiveSheet.Paste Application.CutCopyMode = False Selection.Copy Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:= _ False, Transpose:=False
- みんなの回答 (6)
- 専門家の回答
みんなの回答
- KenKen_SP
- ベストアンサー率62% (785/1258)
マシンスペックを上げて、無駄のないコードを書いて下さい。 一番大事なのは、フリーズするほど重たい処理が発生しないようにシステムやコードを設計することです。
- HINANOBEER
- ベストアンサー率33% (1/3)
NO.4です 途中でキーボードが壊れて不親切な書き込みになって 申し訳ございません 表記のVBAですと画面がちらつきますよね? 描画に時間がかかってしまうんです。 そこでマクロ開始時に最小化 完了時に最大化すると必ず早くなります。 それとマクロの記録で作成したものは やはり効率が悪いんですね。 例えば Range("A1:Z1").Select Selection.Copy や Range("A1").Select ActiveCell.FormulaR1C1=XXXXX なんて記述されるものは Range("A1:Z1").Copy Range("A1").VALUE=XXXXX と置き換えた方が速いのです。 また1つのセルの値を使いまわす時は Range("B1").VALUE=Range("A1").VALUE Range("B2").VALUE=Range("A1").VALUE Range("B3").VALUE=Range("A1").VALUE : よりも DIM myString AS STRING myString=Range("A1").VALUE Range("B1").VALUE=myString Range("B2").VALUE=myString Range("B3").VALUE=myString : が速いのです。
- HINANOBEER
- ベストアンサー率33% (1/3)
Application.WindowState = xlMinimized Range("A1:Z1").Copy Range("A1:K10000").Select ActiveSheet.Paste Application.CutCopyMode = False Selection.Copy Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:= _ False, Transpose:=False 100連発後 Application.WindowState = xlNormal
- imogasi
- ベストアンサー率27% (4737/17069)
(1)エクセルが内部で1セルコピーするごとに、全セルの再計算をさせないことではないでしょうか。多分エクセルは1セル値が変わると、他の全セルに影響がないかチェックして、影響がある部分は再計算するようですので。最後に一遍にやる方が能率が良いような気がする Application.Calculation = xlManual (2)VBAも(A)COPY方式と(B)値代入方式があると思う。 書式以外の値や式なら、代入方式で置換え可能で、その方が速いのでは。式の表現をVBA向けにしないと(変えないと)いけないが。 =A1+B1を For i = 2 To 100 Cells(i, "C") = Cells(i, "A") + Cells(i, "B") Next i (3)1行ずつのコピーにする。 For i = 2 To 100 Cells(i - 1, "C").Copy Cells(i, "C").PasteSpecial Next i 今までの小生の思いこみに過ぎないかもしれません。エクセル処理内部のことも判っていないと言えないことなのですが、その辺不十分で、ご批判を乞いたい。 この質問は先日も出しませんでしたか、見たような気がする。
OS9.2.2以下の環境でしたらExcellに対する「割り当て メモリ」を増やして見る。 OS-X環境でしたら、体験的にOffice.v.Xはどうも今一でしたから、Office2004にしてみる。 OS自体10.1以下は何か不安定でしたから、10.2(最新のOSは10.3.6で、来春10.4が出ますが)以上が安定しますよ。 根本的にはPowerMacG5がよいと思いますが。(私自身はG4-800で、最近ストレスを感じます) ショップのデモを見ただけですが、CPUをG4からG5にすると64bit処理の影響か、かなり速くなってました。 一応Macという事で書きましたが、他のOSは分かりませんので悪しからず。
- kotaechan
- ベストアンサー率38% (351/913)
その仕事以外のことを、コンピュータにさせないことです。また、katan_FXさんのようなコンピュータの使い方であれば、CPUはAthlonの64 FX プロセッサがいいでしょうねぇ。 さて、OSは何でしょう?