• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:Office2007でVBAの実行が遅くなる?)

Office2007でVBAの実行が遅くなる?

このQ&Aのポイント
  • Office2007で作成したマクロを実行すると処理が重くなる問題があります。
  • Office2000では正常に動作するマクロがOffice2007では遅くなる原因はなぜでしょうか?
  • Office2007の仕様変更や文法の変更などが原因で、マクロの処理速度が遅くなった可能性があります。

質問者が選んだベストアンサー

  • ベストアンサー
  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.2

こんにちは。 私の知っている範囲ですが、一度、試してほしいのは、一旦、マクロを通した後に、xlsm ファイルとして保存したら、どうでしょうか。マクロ自体の問題ではないように思います。そのままですと、マクロはスクリプトを読むだけなので、遅いのではないかと思います。

chem_taro
質問者

お礼

お返事が遅くなりすみません。 エクセル2007を開いたときに、ファイル名のところに「互換モード」みたいなことが書いてあったのをみて、保存し直したらというのは考えたのですが、そのときはダメでした。 ただ、「マクロを通した後に保存」というのをしていなかったので、それが原因でしょうか。マクロを通すというのは、マクロを実行させてから別名保存すればよいのでしょうか。

その他の回答 (3)

  • OtenkiAme
  • ベストアンサー率77% (69/89)
回答No.4

こんにちは。 NO1です。 複合セルって結合したセルのことでしょうか? 私の環境では、結合セルがあってもうまく動作しています。 原因はよくわかりませんが、マクロを動かす前に デバッグ>(VBAProject)のコンパイルを実行してから マクロを動かしてみたらどうでしょうか? また、時間のかかっている処理が、 罫線を削除する処理なのか、罫線を引く処理なのか 調べてみては如何でしょうか?

chem_taro
質問者

お礼

お返事が大変遅くなってすみません。 あれからいろいろと試しているのですが、結局一からコードを書き直しました。 なので、遅くなった原因がどこにあったかいまいちわかっていないのですが・・・ いろいろご回答ありがとうございました!

  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.3

#2の回答者です。 「マクロを通した後に保存」というのをしていなかったので、それが原因でしょうか。マクロを通すというのは、マクロを実行させてから別名保存すればよいのでしょうか。 互換モードではなく、Office 2007用で、拡張子を換えますので、結果的には別名になってしまいますよね。実際に、試したことがないというか、私は、基本的には、互換モードでは扱わないようにしていますのです。今回の場合は該当しないのですが、Office 2003 のVBAとは違う部分があるので、コードとして、互換モードは難しいのです。

chem_taro
質問者

お礼

あれからいろいろといじっているのですが、結果あまりよくわかりません。とりあえず、一からコード等を書き直すことで解決しました。大変遅くなりましたが、ありがとうございました!

  • OtenkiAme
  • ベストアンサー率77% (69/89)
回答No.1

こんにちは。 こちらの環境ではそれ程の違いは、ありませんが、 一つずつセルを調べて罫線を引くより、まとめて引いた方がいいかもしれませんね。 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

chem_taro
質問者

お礼

お返事が遅くなりすみません。 Selection.SpecialCells(xlCellTypeBlanks)で空白セルのみを一括選択してから斜線を引くという仕組になるほどと思いました。 ただ、複数セルを複合した形で表を使っているため、Selection.SpecialCells(xlCellTypeBlanks)でうまく抽出できませんでした。 もうちょっと悩みながら、がんばってみたいと思います。ありがとうございました。

関連するQ&A