- ベストアンサー
Excel2000のカメラ機能について
Excel2000でカメラ機能を追加したら、 マクロ処理のスピードが非常に遅くなりました。 どなたか、このようなケースをご存知の方。 お手数ではございますが、原因、回避方法等、宜しくご指導下さい。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
こんばんは。 #3 のhana-hana3さんの「カメラ機能」というのは、画面のオブジェクトを貼り付けた状態のことを指すのですね。ようやく意味が分かりました。今回の現象は知りませんでした。 hana-hana3さんのコードをお借りして、以下のようなコードで実験してみました。 ------------------------------------------------ Private Declare Function GetTickCount Lib "kernel32" () As Long Sub Test2() Dim i As Long Dim FirstTime As Currency Dim LastTime As Currency Dim DifTime As Currency FirstTime = GetTickCount() Sheets("Sheet1").Activate 'Application.ScreenUpdating = False Range("A:A").Clear For i = 1 To 10000 Cells(i, 1).Value = i Next 'Application.ScreenUpdating = True LastTime = GetTickCount() DifTime = LastTime - FirstTime MsgBox Format$(DifTime, "#,##0") & "/ 1,000" End Sub ------------------------------------------------ カメラ機能というのは、「図のリンク貼り付け」と同じ状態になっているのですね。 何もない状態ですと、 単位は、秒 です。9秒719 ということです。 9,719/1,000 9,891/1,000 10,078/1,000 ここで、カメラ機能で貼り付けたオブジェクト(A1:A13) を置くと 144,469/1,000 図のリンク貼り付け 253,515/1,000 ということになりました。どうも、ハングに近い状態の気がします。 これは、「リンク貼り付け」状態にしているからいけないわけですね。 ----------------------------------------------- ○リンクなしの貼り付けに直してみますと、 ----------------------------------------------- 11,219/1,000 11,171/1,000 Application.ScreenUpDating =False を入れる 10,281/1,000 10,391/1,000 ----------------------------------------------- Application.ScreenUpDating =False なし For Each c in Range("A1:A10000") Next c に変える。 10,859/1,000 10,922/1,000 Application.ScreenUpDating =False を入れる 10,531/1,000 10,156/1,000 ----------------------------------------------- '私がいつも書く方法のコード Application.ScreenUpdating = False With Range("A1:A10000") .FormulaLocal = "=Row()" .Value = .Value End With ----------------------------------------------- 110/1,000 リンク貼り付け画像があっても、 250/1,000 となりました。 やはり、結論的には、シフトを押しながら、編集-図の貼り付け で、リンクなしの「図の貼り付け」にしたほうがよいですね。
その他の回答 (3)
- hana-hana3
- ベストアンサー率31% (4940/15541)
Wendy02様ご指摘の >オブジェクトが重くなって、マクロの処理を邪魔をしているか、 但し、範囲などは一切関係無いので、カメラ機能を使う事でブック自体に何か変化があるのかも知れませんが・・・。 下記のような単純なマクロで試しても速度低下がはっきりと解ります。 新規作成のブック(エクセル起動時の状態)で、 「Sheet2 に Sheet1 のA1をカメラ機能を使って貼り付けてマクロ実行。」では、速度低下は見られませんでした。 Sheet1 のA1に数字(リンク等)を入力してマクロ実行した途端に速度が低下します。 Sheet2 のカメラ機能で貼り付けを削除すると正常。 以後、カメラ機能を使うだけでマクロの処理速度が低下します。 Sub test() Dim i As Long Sheets("Sheet3").Activate Range("A:A").Clear For i = 1 To 10000 Cells(i, 1) = i Next End Sub
お礼
hana-hana3様。 ご回答ありがとうございました。 やっぱりマクロの速度低下は否めないですよね。。 マクロ処理使用時は、極力カメラ機能は使用しないようにします。
- Wendy02
- ベストアンサー率57% (3570/6232)
こんにちは。 私には、質問の意味が良く分かりませんね。 カメラ機能というのは、ツールアイコンのことでしょうか?それを貼り付けてマクロの処理スピードが遅くなるようなことはありえないはずです。マクロとツールアイコンの因果関係に直接はないはずですから。 マクロ自体に、取り分けてカメラ機能を使うというようなものはないけれど、Pictures オブジェクトという、Ver97 隠しオブジェクトを、あえて使うかどうかだと思います。それ自体にも、よほど広く無駄な範囲を取得して、それを貼り付けるようなことがなければ、問題は発生しないと思います。 オブジェクトが重くなって、マクロの処理を邪魔をしているか、リンク貼り付けされて、更新を鈍らせているかどちらかではないかと思います。そうでなければ、Excelの xlb ファイルのトラブルではないでしょうか?
- hana-hana3
- ベストアンサー率31% (4940/15541)
>お手数ではございますが、原因、回避方法等、宜しくご指導下さい。 めちゃくちゃ遅くなりますよね・・・。 原因はカメラ機能を使った事。 回避方法は、カメラ機能を使わない事。(他に対策は無し)
お礼
Wendy02様。 ご回答ありがとうございました。 上記のコードを私も試してみました。当たり前ですが同じような結果が得られました。 やはりリンクを使用するとマクロの速度低下は否めないですね。 Wendy02様がおっしゃる通り、リンクなしの「図の貼り付け」を使用するように心がけます。