- ベストアンサー
Office2007でVBAの実行が遅くなる?
- Office2007で作成したマクロを実行すると処理が重くなる問題があります。
- Office2000では正常に動作するマクロがOffice2007では遅くなる原因はなぜでしょうか?
- Office2007の仕様変更や文法の変更などが原因で、マクロの処理速度が遅くなった可能性があります。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
こんにちは。 私の知っている範囲ですが、一度、試してほしいのは、一旦、マクロを通した後に、xlsm ファイルとして保存したら、どうでしょうか。マクロ自体の問題ではないように思います。そのままですと、マクロはスクリプトを読むだけなので、遅いのではないかと思います。
その他の回答 (3)
- OtenkiAme
- ベストアンサー率77% (69/89)
こんにちは。 NO1です。 複合セルって結合したセルのことでしょうか? 私の環境では、結合セルがあってもうまく動作しています。 原因はよくわかりませんが、マクロを動かす前に デバッグ>(VBAProject)のコンパイルを実行してから マクロを動かしてみたらどうでしょうか? また、時間のかかっている処理が、 罫線を削除する処理なのか、罫線を引く処理なのか 調べてみては如何でしょうか?
お礼
お返事が大変遅くなってすみません。 あれからいろいろと試しているのですが、結局一からコードを書き直しました。 なので、遅くなった原因がどこにあったかいまいちわかっていないのですが・・・ いろいろご回答ありがとうございました!
- Wendy02
- ベストアンサー率57% (3570/6232)
#2の回答者です。 「マクロを通した後に保存」というのをしていなかったので、それが原因でしょうか。マクロを通すというのは、マクロを実行させてから別名保存すればよいのでしょうか。 互換モードではなく、Office 2007用で、拡張子を換えますので、結果的には別名になってしまいますよね。実際に、試したことがないというか、私は、基本的には、互換モードでは扱わないようにしていますのです。今回の場合は該当しないのですが、Office 2003 のVBAとは違う部分があるので、コードとして、互換モードは難しいのです。
お礼
あれからいろいろといじっているのですが、結果あまりよくわかりません。とりあえず、一からコード等を書き直すことで解決しました。大変遅くなりましたが、ありがとうございました!
- OtenkiAme
- ベストアンサー率77% (69/89)
こんにちは。 こちらの環境ではそれ程の違いは、ありませんが、 一つずつセルを調べて罫線を引くより、まとめて引いた方がいいかもしれませんね。 Sub Macro1() Dim r As Range If TypeName(Selection) <> "Range" Then Exit Sub Selection.Borders(xlDiagonalDown).LineStyle = xlNone On Error Resume Next Set r = Selection.SpecialCells(xlCellTypeBlanks) On Error GoTo 0 If Not r Is Nothing Then With r.Borders(xlDiagonalDown) .LineStyle = xlContinuous .ColorIndex = xlAutomatic .Weight = xlThin End With End If Set r = Nothing End Sub
お礼
お返事が遅くなりすみません。 Selection.SpecialCells(xlCellTypeBlanks)で空白セルのみを一括選択してから斜線を引くという仕組になるほどと思いました。 ただ、複数セルを複合した形で表を使っているため、Selection.SpecialCells(xlCellTypeBlanks)でうまく抽出できませんでした。 もうちょっと悩みながら、がんばってみたいと思います。ありがとうございました。
お礼
お返事が遅くなりすみません。 エクセル2007を開いたときに、ファイル名のところに「互換モード」みたいなことが書いてあったのをみて、保存し直したらというのは考えたのですが、そのときはダメでした。 ただ、「マクロを通した後に保存」というのをしていなかったので、それが原因でしょうか。マクロを通すというのは、マクロを実行させてから別名保存すればよいのでしょうか。