• ベストアンサー

Word VBA。各マクロの間に待ち時間を指定するには?

初心者です。 記録したVBAをつなぎ合わせて、一連の処理を自動化したいのですが、時間のかかる処理に対して"処理待ち"、もしくは"指定時間待ち"のWaitを指定したいのですが、どういった記述をすればいいのでしょうか。 詳しい方お願いします。

  • idbr2
  • お礼率66% (28/42)

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

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

こんばんは。 >(1)文書の読み込み >(2)書式変更 >(3)文字の置換 >(4)文書の保存 これ自体に、Waiting は必要ないような気がしますね。なぜ必要なのか分りません。どこかに、バッファがあふれそうなんていうことがあるのでしょうか?単に、DoEventsでも入れておけばよいような気がしますし、記録マクロで、ループを使わないので、メモリを押し上げてしまっているのでしょうか? API関数で負担を軽くするには、こんな方法がありますね。 Private Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long) Sub WaitingTestMethod()  Beep '実行  DoEvents  Sleep 2000  Beep '実行 End Sub

idbr2
質問者

お礼

回答ありがとうございました。 まず、お礼が遅れたことを謝ります。 済みませんでした。 教えていただいたSleepを使った方法ですが、確認できました。 どうもありがとうございました。 使わせていただきます。

その他の回答 (4)

  • taocat
  • ベストアンサー率61% (191/310)
回答No.4

再びこんにちは。ポカしました。(^^; Wordですね。 WordVBAには、waitメソッドはありませんので、回答したコードはそのままは使えません。 使う前にexcelのobject libraryへの参照設定が必要になり、かつコードも数ステップ増えます。 初心者ということですので面倒なことはパスするということでNO.3の回答はスルーしてください。 エスセルで似たようなことをしたい時はOKです。 以上です。

idbr2
質問者

お礼

回答ありがとうございました。 まず、お礼が遅れたことを謝ります。 済みませんでした。 インターネットを使って調べる場合、エクセルだと割と探しやすいのですが、ワードだとなかなか難しいので、こちらでお聞きしました。 できれば、Word2003でExcelのobject libraryへの参照設定の方法を詳しく教えていただけないでしょうか。 実はよくわかっていません。 Microsoft Excel 11.0 Object Library と Microsoft Office 11.0 Object Libraryは既に参照設定しているのですが、Waitを実行すると"メソッドまたはデータメンバが見つかりません"とコンバイルエラーが出ます。 オブジェクトプラウザで検索すると、出てくるのはExcelとOfficeなので、その辺だとは思っているのですが、何を参照設定すればWaitメソッドが使用できるようになるのでしょうか。

  • taocat
  • ベストアンサー率61% (191/310)
回答No.3

こんにちは。 >"処理待ち"、もしくは"指定時間待ち"のWaitを指定したいのですが そうです。解決策のひとつは、そのWaitメソッドです。(^^; で、マクロを2秒間停止するには Application.Wait Now + TimeValue("00:00:02") としてもできますね。 詳しくは、Waitメソッドのヘルプをご覧あれ。 以上です。

回答No.2

こんにちは。 以下の方法はどうでしょうか? >”ここに2秒待ちを設定”←この部分はどうやって記述するのでしょうか。 Application.OnTime Now + TimeValue("00:00:2"), "書式変更" 2秒後に"書式変更"というマクロを実行します。 Callで呼び出す必要はないので1行で済みます。 試してみてください。

idbr2
質問者

お礼

回答ありがとうございました。 まず、お礼が遅れたことを謝ります。 済みませんでした。 Application.OnTime Now + TimeValue("00:00:2"), "マクロ" の形を早速試してみたところ、無事動きました。 ただ、 Application.OnTime Now + TimeValue("00:00:2"), "マクロ(1)" Application.OnTime Now + TimeValue("00:00:2"), "マクロ(2)" の形では、反応してくれません。基準になる時間の問題かと思って時間の間隔をズラしてみたりしたのですが、どうもうまくいきません。 ただし、 Application.OnTime Now + TimeValue("00:00:2"), "マクロ" で記述した各マクロを、Call文で呼び出せば目的は達せられるのではないかと思います(未確認)ので、とりあえずは大丈夫かなと…。

  • imogasi
  • ベストアンサー率27% (4737/17068)
回答No.1

回答がつきませんね。WordVBAとうたって驚かせるせいもあろうが、非才の私には内容が理解できない。 Waitを入れるのは、マシンの処理が、人間の動作に比べ早すぎて、待ちを入れるケースを想像しますが、本件ではコンピュター処理に時間がかかるから人間が待つという逆のケースらしいが、ウエイトは遅れるコンピュターに待ちを入れてどうするのと思ったのですが、大いなる勘違いでしょうか??何分待ってくださいというメッセージを画面に出したいということですか。その時間の幅の算出はどうするのですか。そのことそのものが質問ですか。 時間がかかる処理は具体的に何ですか。普通は全レコード数がわかっている場合で、今何レコード目を処理しているかで、プログレスバーなど表示してますね。プログラムを実行する前に、そのプログラムの処理時間などわからないと思いますが。データ数にも関係しますから。

idbr2
質問者

お礼

回答ありがとうございました。 でも、わかりにくい説明だったようで、申し訳ありません。 もう少しちゃんと説明すると、 (1)文書の読み込み (2)書式変更 (3)文字の置換 (4)文書の保存 という一連の流れがあって、それぞれを一括で処理するためのマクロをつくりたいのです。 ちなみに(1)~(4)の処理はVBA化しています。 あとはつなぎ合わせるだけなのですが、(1)~(4)の各マクロの間に、"2秒の待ち時間"を指定して、次の処理にうつるようにさせたいのです。 希望する形、 Sub 全体処理() 文書読み込みVBA 部分 ”ここに2秒待ちを設定”←この部分はどうやって記述するのでしょうか。 Call 書式変更 ”ここに2秒待ちを設定”← 〃   。 Call 文字の置換 ”ここに2秒待ちを設定”← 〃   。 Call 文書の保存

関連するQ&A

  • マクロ vba

    エクセル マクロの記録で出来る処理が100だとしたら vbaで出来る(vbaでしか出来ない処理も含む)処理は1000くらいでしょうか?

  • VBAを時間指定で自動実行

    就業時間内(9時~6時)でエクセルVBAを指定時間に自動実行させたいです。 エクセルはパソコン起動した朝に、開いておきます。(バックグラウンド) 指定時間になったらVBAを自動実行させたいのです。 指定時間は例えば、 10時11分 10時16分 10時21分 などです。最初の時間から5分間隔で実行。 こういう事はできるのでしょうか?VBAでできるのか? それ以外の方法があるのか?よくわかりません。 詳しく教えてください。

  • ワード内の色がついた文字をマクロ(VBA)で削除したい

    お世話になります。 色指定で置換処理を実行するマクロを作成したいと思っています。 置換¥オプション¥書式¥色指定で空白と置換 の作業を 「マクロを記録」の状態で実行したのですが、マクロに記録されません。。。 VBAに追記する形、どのような形でもいいのでマクロで色指定も含めた置換方法を教えていただけないでしょうか? 何卒よろしくお願いします。

  • VBAについて教えて下さい。

    VBAについて教えて下さい。 昨年度まで担当者として色々と処理を行なっていた人が転勤となり、今のところ不便はないのですが、今後の事を考えると少しでも知識をつけていきたいと感じています。現在利用しているVBAの記述に関しては、少しずつ色々と調べて解読?・理解をしていくつもりです。 そこでWinのVBA記述についてお聞きいたします。 特定のexcelファイルを使った人(ユーザー名)と日時を、特定のファイルに記録していきたいと考えています。日時をtxtファイルに記録(追記)する方法はネット等に出ていましたが、ユーザー名を記録する方法が分かりませんでした。※探し方が悪いのかもしれませんが・・・。 今のところVBA自体に関して殆ど分からない状態です。 お時間のある方、お時間の空いている時で結構ですので、何卒ご教授頂きたいと思います。 宜しくお願い致します。

  • エクセルVBAで一つ上の階層を指定して保存したい

    お世話になります。 VBA初心者なりにマクロの自動記録などで作業しておりますが、自動記録でできない作業を一つ教えてください。 現在作業しているフォルダは、Activeworkbook.Pathなどで指定できますが、その一つ上の階層に保存したいという場合、どう指定すればよいのでしょうか? 自動保存だと"Documentos and Settinng~"などから始まるファイルパスになりますが、ファイルを保存するフォルダは各人によってまちまちですので、自分が保存したフォルダの一つ上という指定をしたいのです。そのような方法があれば教えてください。 よろしくお願いいたします。

  • Excel VBA インポートファイル名指定したい

    Excel VBA 初心者です。 スイッチを押すと、テキストファイルのインポートダイアログを開いて、外部データの取り込みをしたいと考えています。 指定セルにインポートを設定+シートにマクロ実行スイッチを配置+マクロの自動記録の記述を参照してマクロを登録し、そのスイッチを押す事で、正常にインポート作業を行なう事ができました。 しかし不明点が2箇所ほどあります。 1.ダイアログを開いたとき、ファイル拡張子を指定したいのですが、どうすれば指定できますか? 2.ダイアログを「キャンセル」で閉じると、「実行時エラー1004:アプリケーション定義またはオブジェクト定義のエラー」と表示されるのですが、解決方法はどうすればいいですか?  ※マクロの自動記録を参照して記述したマクロ処理 Sub Macro1() Sheets("HIN").Select Range("A1").Select ActiveCell.Offset(2, 0).Select Selection.QueryTable.Refresh BackgroundQuery:=False Sheets("Sheet1").Select End Sub 環境:EXCEL2000、VB6.0 以上、宜しく御願い致します。

  • MS-WordのVBAで図形サイズの指定(100%)方法

    MS-WordのVBAで図形サイズの指定(100%)方法 Word2000です。VBAは知らない(嫌い)ですが、時々必要になり、通常はマクロ記録したものを多少手直ししたりして使用しています。今回の問題ではマクロ記録すると100%ではなく、ある特定のサイズを指定したように記録されます。100%で指定するには、どのようなコードになるのでしょうか?

  • VBAでセル指定するとき("A1")←半角?

    VBAでセルを指定するとき、 例えばA1のセルを選択するときにRange("A1")と書きますよね。 このときに「A」は半角で入力したのですが、これは全角の「A」でもいいのでしょうか。 実際に全角にしてVBAを組んでも、問題なく処理できました。 ただ「全角にしても問題なく処理できたからいいや」というのではモヤモヤしてしまい、 全角でも問題なく処理できるという記述があるテキストやサイトを探しているのですが 見つかりません。 セル指定するときに全角、半角は関係ないのでしょうか。

  • エクセルのマクロとVBAについて

    まだあまり多用していないのですが、エクセルでは使っていくアイコンを指定することで(それを利用することで)、マクロを組みそれがエクセルのVBAで記述されるということですが、その逆エクセルのVBAで記述したプログラムを動作に対応したアイコン等の流れで示すことは出来るのでしょうか?もしあったらどのような方法でしょう?

  • VBAとマクロの違い

    こんばんは。エクセル初心者です。 VBAとマクロの違いについて教えてください。 VBAというのは、プログラミング言語のことで よろしいのでしょうか? そのVBAで記述されたものをマクロとよぶ といったイメージでよろしいのでしょうか? たとえば、あるエクセルにはいってるマクロを 実行する、ということを作業マニュアルに記述 する場合 「○○マクロを実行する」というのが 正しいのでしょうか?それとも 「VBAを実行する」というのが正しいのでしょうか? まったく見当違いのご質問だったら申し訳ありません。 教えてください。

専門家に質問してみよう