• ベストアンサー

Office2007のマクロ実行が襲い

XP+Excel2000で実行していた割と簡単なマクロを、先日 VISTA+Excel2007で実行したところ、実行速度が2,3倍遅くなったように感じます。 まったく同じマクロで特殊なことはやっておりません。 PCは双方ともCore2Duo、しいて言えばVISTAの方はNoteです。 PC環境は大差ないと思います。 OS、2007の仕様でしょうか? 一般的にどうなんでしょうか?

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

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

こんばんは。#4の回答者です。 参考になるか分かりませんが、私は、最初から、Vista + Excel 2007 で、業務用の伝票発行のプログラムを作りましたが、速度としても、使用感にしても、まったく違和感はありませんでした。 ただし、オブジェクトの違いで、反応が思ったようにならなくて、最初、投げ出したくなりました。 困った点は二つです。 ひとつは、IEの呼び出しで、セキュリティが働いてしまうことです。アクセスする時だけ、IEの設定を変えるために、レジストリの書き換えをしなくてはならないのですが、その開発したものを別のPCに移す目的でしたので、そこまでは手を付けませんでした。 もうひとつは、デジタル署名を入れると、バグつぶしが出来なくなることに気がつかなかったのでした。 しかし、Office 2007 VBAの資料が、今頃になって、Microsoft から出ているような気がしますが、ちょっと参ってしまいますね。まだ、全部出ていないか、間に合っていないようですね。ここの回答者として回答して、初めて気がつくようなものもあります。新しく増えたコマンドで、少なくとも、ヘルプのどこにもないものがあります。 Office 2010 が出ても、詳しい内容は、かなり遅れてくる可能性があります。そのたびに、振り回されかねないです。

すると、全ての回答が全文表示されます。

その他の回答 (4)

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

#2の回答者です。 Office 2007 の場合、保存そのものの仕方が大きく変わったからだと思います。VBAというのは、通常、コンパイルした状態の中間言語を保存しているのですが、それが、それていないものだと思うのです。 >環境の違いによる問題なのかわかるような、VBA実行スピードをチェックできるようなプログラムがあるといいですね。 マクロのスピードチェック自体はできるけれども、その違いは、そのバージョンに合わせて比較することは、今の私では難しいですね。環境の違い自体は、Application.Verion せいぜい、以下のような時間計測用のマクロ程度です。 '========================================= Private Declare Function timeGetTime Lib "winmm.dll" () As Long Sub SpeedMeasureSample()   Dim myStart As Long   Dim myEnd As Long   Dim ver As Variant   myStart = timeGetTime() '開始   '----------実行マクロの始まり-----------      Dim i As Long   i = 1      Do    Cells(i, 1).Select    i = i + 1   Loop While i < 10 ^ 4         '----------実行マクロの終了-------------    myEnd = timeGetTime '終了   ''Debug.Print myEnd - myStart   ver = Application.Version   MsgBox "Excel " & Val(ver) & ": " & (myEnd - myStart) / 1000 & "秒" End Sub

jugemu22
質問者

お礼

何回も情報ありがとうございました。 その後、あちこち検索してみましたら、2003と比較して「2007は遅い」という記事が沢山ひっかかりました。 リボンの操作も今一つと感じておりました。 2003以降のOFFICEでないと対応できない処理だったので、使い慣れたXP+2000から2007に移行しましたが、2003に再移行しなければならないようです。 尚、2010もβ晩版?がすでに出ているようですが、2007の延長らしく少なくともしばらくは期待できないようです。さらに、7も安定すのにしばらくかかるようですね。 10年も前のソフトが軽く、未だ使い勝手が一番というのも、考えさせられます。 お世話になりました。

すると、全ての回答が全文表示されます。
  • 374649
  • ベストアンサー率38% (203/527)
回答No.3

自分の経験から、Excel2003とExcel2007、OSはXPとWin7という環境で。 2003のマクロを2007で走らせると処理時間は遅くなります、そのマクロを2007専用に書き換え(ファイル名の拡張子など)2007で走らせると処理は目に見えて速くなりました、そのマクロを2003で走らせると"互換モードに変換"され動きますが保存は拡張子が違うのでエラーになる。 対処:XPとWin7を両方使うのでOSを判断してそれぞれのOS専用ルーチンを組み込みどちらでも使えるようにマクロを書き換える。 OS判断マクロ例: Sub GetOS() Dim OSvrsn As String Dim 商品名 As String OSvrsn = Application.OperatingSystem 'OSのバージョン情報を取り出す If OSvrsn = "Windows (32-bit) NT 6.01" Then 商品名 = "Windows7" ElseIf OSvrsn = "Windows (32-bit) NT 6.00" Then 商品名 = "WindowsVista" ElseIf OSvrsn = "Windows (32-bit) NT 5.01" Then 商品名 = "WindowsXP" End If Worksheets("?").Range("?") = 商品名 End Sub これでWorksheets("?").Range("?")にOS名が書き込まれますので後はアイデア次第。 こんなことをやってます!!

すると、全ての回答が全文表示されます。
  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.2

こんにちは。 こちらで、同じ内容が出ています。 http://oshiete1.goo.ne.jp/qa5595406.html その質問者さんは、その後の対応をしていませんが、互換状態では、その都度、コンパイルし直しますから、古いコードを、一旦2007用のマクロ付きファイルに保存し直すことが必要ではないかと思います。

jugemu22
質問者

補足

すでに2007用 xlsm ファイルとしてあります。 記事の中でコンパイルしておくこともできるらしいので、試してみます。 インタープリート(逐次翻訳)で早くないのは分かるのですが、2000でも同じことだと思います。 大きく、遅くなったので、そのことを考慮してコンパイルしておくようにしたということでしょうかね? 一般的な問題なのか、環境の違いによる問題なのかわかるような、VBA実行スピードをチェックできるようなプログラムがあるといいですね。 ありがとうございました。

すると、全ての回答が全文表示されます。
  • xfiles
  • ベストアンサー率23% (164/693)
回答No.1

ノートとデスクトップじゃ実行速度に違いが出るとは思いますが、2,3倍はありえないと思います。 ノートのHDDの空き容量が少ないとかじゃないですかね?

すると、全ての回答が全文表示されます。

関連するQ&A