• 締切済み

VBA実行中に他の作業をする

VBA実行中に他の作業をする Win7 にExcel2010を入れて使っているのですが、 VBAで数値計算プログラムを走らせつつ、画像ファイルを開いたり、ファイルコピーしたりなどを 行うことができます。 一方で同じプログラムでも Win8 に入れたExcel2010では、ファイル操作しようとすると マウスポインタが砂時計マークになり、数秒~10秒ていどもたつきます。 DoEventsを増やしてみてもあまり効果はありませんでした。 なぜこのようにOSによって違いみられるのでしょうか? そしてWin8でもWin7と同様にVBA実行中に他の作業を行うにはどうしたら良いですか?

みんなの回答

  • nda23
  • ベストアンサー率54% (777/1415)
回答No.3

DoEventsではなくSleepを入れる。 '定義 Public Sub Sleep Lib "kernel32" (ByVal ミリ秒 As Long) プログラムの所々に"Sleep 1"を入れる。 タスクマネージャで見ると、入れる前と、入れた後では CPU使用率が全く異なることが分かると思います。 これはOS依存の問題ではなく、Windows下における プログラムの「配慮」の問題です。

  • RandenSai
  • ベストアンサー率54% (305/561)
回答No.2

なるほど、OS依存の何かがあるらしいと言うことですね。マイクロソフト公式コミュニティにも、それっぽい質問が出ていました。ただこれはx64版での話のようですが。 http://goo.gl/6KuQc6 ただおそらく、似たようなことが起きていそうな気はします。上記のやり取りの中身が通用するならラッキーで、ダメな場合はどのマクロコードで重くなるか、コメントアウトしながら探っていくしかないと思います。あまり回答になっていなくて申し訳ないのですが。

  • RandenSai
  • ベストアンサー率54% (305/561)
回答No.1

それは同一PCでの話ですか?もし別のPCでの話だったら、それはPC自身のスペックであったりセキュリティ対策ソフトの違いであったりといった、OS以外の要素が多大に影響してきますが。 8は使い勝手の悪評は高いけど、パフォーマンス面で酷評しているのは専らゲーマーだけで、一般ユーザーからそうした不満の声が上がっているような話はないと思います。むしろ8の方が7より若干軽いはず・・・と言うことで、今の情報だけではOSのせいとは考えにくいというのが一般論です。

BUCHURUN
質問者

お礼

win7は3年前に購入したノートPC、 win8は1年前に購入したデスクトップで win8の方が圧倒的にスペックは高いです。 セキュリティソフトなど入っているソフトはほぼ同じです。

関連するQ&A

  • 実行ファイル(exe)が実行できません!!

    先日あるサイトから実行ファイルをダウンロードし それをダブルクリックで実行しようとしたところ まず「セキュリティの警告」ダイアログが表示され 「実行」を押したところ、マウスポインタが2秒ほど 砂時計になるだけで何の反応もありません。 タスクマネージャで確認しましたがどうやら起動されてません。 どうすればいいのでしょうか!教えてください。 (ちなみに他のexeは実行できます。)

  • VBA プログラム実行中に他の作業ができない

    社内の人間が作ったエクセルVBAのプログラム(顧客データを整理するプログラムです) を定期的に実行しているのですが、プログラムの実行中にインターネット等、他の作業を しようとすると、一旦IEがアクティブ化しても、またすぐに実行中のプログラムがアクティブになって しまい、大変不便です。 この「プログラム実行中は、強制的にアクティブになる」のは、どういったコードで改善するでしょうか。 上記のような動きをさせるための、何かお決まりのコードはあるのでしょうか。 作成者が既に退社しており、また問題のコードもかなり大量になるため、まずはこういった質問をさせて いただきました。 プログラム実行中の行になにか1行書けば改善するのなら、また、既存のコードを編集する事で改善するのなら是非知りたいです。 よろしくお願いします。

  • VBAを記述したEXCELファイルを他の端末で実行するとエラーが。

    VBAを記述したEXCELファイルを別の端末で開き、入力などの作業を行うとエラーが表示されます。EXCELのバージョン(2000)は同じなのですが。何故でしょうか? 試した端末のOSとバージョンです。 (1)WinNT4.0/Excel2000 (2)Win2000/Excel2000 ※VBAにはセルへの入力制限を行う記述をしました。 よろしくお願いします。

  • 不要?なアプリが実行される

    WIN XP HOME SP2ですが、起動時のデスクトップ画面の中央のマウスポインターの砂時計のみが点滅をくりかえし、矢印だけになりません。 タスクマネジャを開いて見ると<半角片仮名10数文字+WatchDog 実行中>と<半角片仮名10数文字+2 For Windows 実行中>のアプリの2列が 表示されていてタスクの終了で砂時計を消しています。今までこういう現象はなかったので気になります。そもそもふたつのアプリは何で また、このアプリを終了させても構わないのでしょうか教えてください。

  • 実行中の作業を中止させるコマンド

    うまく説明できなくてすみません。 PHOTOSHOPなど、容量の大きいファイルを扱うと、 ひとつの作業にものすごく時間がかかることがあります。 たとえば、フィルタをかける、指先ツールを使う、 保存するなどなど。 (ポインタが砂時計になって、そのあいだほかの 作業ができなくなる。) 間違えてこれらの操作をしてしまったとき、 おわるのに何分もかかる場合もあります。 その場合、終わるのを待つしかないのですが、 操作を中断させるコマンドってあるのでしょうか。 かなーり昔、コントロールキーとなにかを押せば 途中でやめさせられるというのを聞いたことが あるような気がするのです。 もし、そのような便利な方法をご存知の方がいらっしゃいましたら ぜひ教えてください!

  • pdfファイルにマウスを移動すると砂時計になる

    エクスプローラに表示されているpdfファイルにマウスポインタを移動するとポインタが砂時計になります。 タスクマネージャのタスクを見ると砂時計になっている間(1~2秒)だけAcroRd32.exeが起動されていました。 pdfファイルをマウスが通過するたびに砂時計になり、うっとうしいのでやめたいです。 設定変更は出来ますか? また、この時AcroRd32.exe(アクロバットリーダーだと思うのですが)は何をしているのでしょうか? ご存じのかたがいらっしゃいましたら教えて下さい。

  • VBAの繰り返し作業について

    VBAで以下のような作業をしています。 (1)エクセルの任意のセルに日付(営業日)を入力する (2)VBAでその営業日のファイル(ファイル名=営業日)を展開、集計し、別ファイルとして保存する (1)の日付を変更してVBAを実行すれば他の日のデータが作成できるのですが、 数年分のデータの作業をする必要があり、(2)が終わったら(1)の営業日を1日後にし、 指定日まで繰り返し作業をさせるようにしたいです。 (2012/7/13が終わったら2012/7/16を作成する) 営業日は月~金で、祝日も営業日です。 有効な方法をご存じの方がいらっしゃいましたらご教示お願いいたします。

  • マウスカーソルがおかしくなってしまいました

    WINに標準で使っているアニメーション砂時計を使っていたのですが、突然普通のアニメーションではない砂時計になってしまいました。マウスの設定を開いたところ、下記のようなアラートが出てしまいます。 『ファイルC\WINDOWS\Cursors\appstart.ani('バックグラウンドで作業中'ポインタを含むファイル)は存在しないか壊れています』 『ファイルC\WINDOWS\Cursors\hourglas.ani('バックグラウンドで作業中'ポインタを含むファイル)は存在しないか壊れています』 指定のファイルは有りましたので、壊れているということらしいのですが、修復するにはどうすればいいのでしょうか?例えば、上記の2つのファイルが壊れているのであれば、他のパソコンからコピーしてきて入れ替えるなどでもよいのでしょうか? よろしくお願いします。

  • エクセルVBAのApplication.Wait Now()について

    皆様こんにちは 温度計を導入しまして、リアルタイムに温度を取り込むアドインがついていました。いまsheet1のA1からG1まで次々値が変化するセルがあります。 そこで10秒おきにA1からG1までの値だけを2列下にコピーするコードを実行してみたのですが・・・ '----------------------------- Sub 一定秒おきに実行() Dim i As Integer Static k For i = 1 To 5 If k = "" Then k = 2 Application.Wait Now() + TimeValue("00:00:01") DoEvents 下に数値のみを貼り付ける Next End Sub '--------------------------------------- Sub 下に数値のみを貼り付ける() Range("A1:G1").Select Selection.Copy Range("A3:G3").Select Selection.PasteSpecial Paste:=xlPasteValues End Sub '-------------------------------------- その結果 Sub 下に数値のみを貼り付ける()をVBエディタの標準ツールバーの実行をクリックするたびにリアルタイムに値がコピーされるのですが、Sub 一定秒おきに実行()を実行すると、画面が5回ちらつくのでコピーはされてるみたいですがマウスポインタが砂時計になって、その間アドインからの数値の更新も止まってしまいます。 Application.Wait だけにマクロが停止していると思いますが、これには大変困ってしまっています。 マクロをとめないで一定時間置きに "Sub 下に数値のみを貼り付ける()"を実行する方法はないでしょうか。 よろしくお願いします。

  • USBマウスが操作できなくなることがあります

    よろしくお願いします。 Win98SEで、USBマウスを使っていますが、最近、マウスが操作できなくなる ことが多くなりました。(砂時計ではなく、ポインタは変わりません) 操作は、移動、クリックともに使えません。 ただ、10秒前後待つと少し動かすことができる時がありますが、少し動いただけで、 再び操作できなくなり、10秒ほど待つことを繰り返します。 待っている間もポインタは砂時計に変わらず、同じ形のままです。 マウス不動時でもキーボード操作はできます。 再起動をかけるとだいたい元に戻り、マウスを使える様になりますが、 しばらくすると、またマウスが動かなくなります。 しばらくの時間的な規則性は無いと思います。 2時間ぐらい機嫌良くしてくれている時もあります。 また、特定のソフト使用時に限る現象ではありません。 以前は、この様な状態にはなりませんでした。

専門家に質問してみよう