• ベストアンサー

WordのVBAマクロの実行を、一気に取り消す

こんにちは。 Word2007以降で、1つのVBAマクロで行った処理を全て取り消す方法が見つからず、困っています。 例えば、Word文書の内容を、Forループなどで1段落ずつ処理していくマクロの場合、 そのマクロを実行した後、実行前の状態に戻すには、段落の数だけアンドゥをしなけれななりません。 こういったマクロの実行を、一気に取り消す方法は無いのでしょうか? 以上の件について、何か良い方法を知っておられる方がいらっしゃれば、是非教えて頂きたいと思います。 では、よろしくお願い致します。

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

  • ベストアンサー
回答No.3

Word2010で新規に用意された[ UndoRecord オブジェクト]を 利用して一気に戻すことは可能みたいですね。 http://www.ka-net.org/office/of49.html http://ameblo.jp/gidgeerock/theme-10036761160.html このオブジェクトで、マクロ実行前に戻すことを試したことが ないのと、検証できる環境ではないので、わかりません。 Word2007の場合はこの機能がないので、マクロ実行前に現状を 記録しておいて、その状態に戻すマクロを用意するなどすれば、 戻すことと同じだと思います。バックアップファイルを用意して そのファイルと入れ替えるなどでも同じですね。 (No.1の回答者さんが書いていることと基本的に同じ)

MetalLover
質問者

お礼

御回答ありがとうございます。 Word2010のUndoRecordオブジェクトは便利そうでいいですね。 ただ、自分が使っているのは2007なので、 マクロ実行前にバックアップを取っておくか、 Undoヒストリを使うかのどちらですね。 いずれにせよ、貴重な情報の提供をありがとうございました。

その他の回答 (2)

  • sat000
  • ベストアンサー率40% (324/808)
回答No.2

Word VBAによる文書の操作と人による操作は全く同一です。 ですのでVBAコマンド実行前の状態に戻すというコマンドはありません。 ただ、少なくともWord2010だとUndoボタンにドロップダウン機能が付いているので、ヒストリを追跡して一気に戻すことは可能です。 Ctrl+zでは無理な技です。 もちろんUndoバッファの範囲内のことなので、それ以上戻す場合は文書破棄しかありません。 多分2007でもドロップダウンメニューが出る気がしますが、手元に2007が無いので確認できません。

MetalLover
質問者

お礼

御回答ありがとうございます。 確かにマクロの実行結果は、Undoボタンのヒストリに残っていました。 これである程度は対処できそうです。

  • DreamyCat
  • ベストアンサー率56% (295/524)
回答No.1

Wordのマクロはほとんど知らないのですが、 undoで戻れるようになっただけ改善できたと考えるのではだめですか? 私の場合、 マクロは実行したら戻れないものと考えて、戻したくなるかもしれないファイルの場合は 必ず別名で保存しています。 (いきなり本番ファイルに適用するのでなく、必ずいやになるほど試行し確認してから 本番のファイルに適用して、さらに別名で保存します)

MetalLover
質問者

お礼

御回答ありがとうございます。 やはり、マクロ実行前にバックアップしておくべきですね。 了解しました。

関連するQ&A

  • Wordのアドインとマクロ実行について

    Wordのアドインとマクロ実行について Word2003を使用しています。 アドイン用のテンプレートファイルを作成し、アドインの追加まではできました。 アドインで記述したマクロを実行させたいのですが、記述方法がわかりませんでした。 Excelですと「ファイル名!関数名」で呼べるようですが、 Wordの場合、どのように記述すればアドインのマクロ処理を呼ぶことができるのでしょうか? (例.Word文書にボタンを追加してボタンがクリックされたら、アドインのマクロ処理が実行される等 処理をコードで記述したい) ご教授よろしくお願いたします。

  • teratermマクロをVBAで実行

    teratermマクロについてご教示願います。 teratermマクロを組んで、Linuxサーバにログインして処理をする.ttlファイルを作成しようと思っています。 その.ttlファイルを、VBAのプログラムから実行することは可能でしょうか? やりたいことは、EXCELのシート上にある「実行」ボタンを押下すると、VBAからteratermマクロが実行される、という処理です。 可能かどうか教えてください。また、もしご存じであればその際の VBAの組み方も同時にご教示いただければと思います。 よろしくお願いいたします。

  • Access2000のVBAでエクセルマクロ実行

    お世話になります。 Access2000のVBAでエクセルのマクロとアクセルのマクロを 交互に実行したいと思っております。 (1)エクセルのマクロ1を実行 (2)アクセスのマクロAを実行 (3)エクセルのマクロ2を実行 と交互に実行したいのです。 下記のサイトなどを参考に試みたのですが、 http://www.nurs.or.jp/~ppoy/access/access/acX005.html (1)を実行している途中に (2)が進んでしまいます。 どのようにすれば、(1)が終わってから(2)と、前の処理が 終わってから次の処理に進むことが出来るのでしょうか? Access2000のVBAから指示をかけたいので、 Access2000のVBAのコードで教えて頂ければと 思います。

  • EXCELで、マクロ、VBAをクリックせずに実行する方法

    EXCELで、マクロ、VBAは普通、手動で「実行処理」をして動くものだと思いますが、EXCELファイルを開いた瞬間に自動で実行させる方法は有るのでしょうか? 方法が有れば是非教えて下さい。宜しくお願い致します。

  • wordのマクロを自動実行する方法

    excelの場合は、下記でファイルを開くと同時にマクロが自動実行されます。  Sub Auto_Open()   自動実行したい処理  End Sub wordの場合は、上記では自動実行出来ません。 wordのマクロを自動実行する方法を教えて下さい。 宜しく、お願いします。

  • エクセルからワードのマクロを実行したい

    1. ワードで作られた報告書の表の数値をエクセルにコピーし、 2. その数値を使ってエクセルのオートシェイプでグラフを描き、 3. グラフをもう一度ワードの所定の位置に図として貼りつける、 というマクロを作成しています。ワードの表をコピーするマクロと、エクセルでグラフを描くマクロは作成できました。 問題はエクセルのシートに配置したコマンドボタンをクリックすると、グラフの入ったセル範囲をコピーするまではできたのですが、その後にワードのマクロを指定して実行させる方法がわかりません。 1.→2.のエクセルのマクロを実行する方はauto_openで何とかなったのですが、2.→3.は既にワード文書は開かれていますし、auto_openでは1.の手順ができなくなってしまうので困っています。 もし、エクセルのマクロでワードを操作などできるのでしたらそれでもよいのですが…。 ワードのマクロは初挑戦で、色々サイトも探したのですが見つかりませんでした…。 使用していますのは、Windows98SE,Excel97,Word97です。 ご存知の方、どうぞよろしくお願い致します。

  • ACCESSのAutoKeysマクロでアクションの実行エラーが必ず出る

    ACCESSのAutoKeysマクロでプロシージャを呼び出しているのですが、 そのVBAコードの中に、条件分岐を作っていて その返り値がFalseの時だけ以降の処理を継続させようとしています。 ここでTrueの場合は警告メッセージを出した上で 処理を終えるためVBAでEndと記述しているのですが、 このTrueの際にアクションの実行エラーウィンドウが必ず出て 困っています。(格好悪い) こちらを出ないようにするにはどうしたらいいでしょうか。 もしくはマクロ名で言うAutoKeysのような処理を、マクロを 使わずにVBAだけで記述・実行する方法はありますでしょうか? 長い質問になってしまいましたが、 ご存知のやさしい方ぜひ教えてください。 よろしくお願いします。

  • Wordのプロパティ・総ページ数について(VBA絡み)

     初心者です。 エクセルVBAでWordのプロパティ値を取得するためBuiltinDocumentProperties("Number of Pages")を使っているのですが、なぜかページ数が正しく表示されません。  例えば6ページある文書の総ページ数が2というふうに全然関係ない数字が返ってきます。念のためマクロ後にプロパティ値を再確認すると、表示された2に変わってしまっているんです。もちろん実際の文書に存在するページ枚数は変わっていません。  文書自体を開いて上書きしてやると、ページ数の数字は戻るのですが、マクロを実行すると同じ結果になります。どうしてでしょうか?  EXCEL2000です。詳しい方お願いします。  

  • VBAマクロへの永久的なキーの割り当て(Word)

    こんにちは。 Word2007において、作成したVBAマクロに、ショートカットキーを割り当てる事ができなくて困っています。 マクロに、ショートカットキーを割り当てる方法は、知っています。 マクロを保存したWordマクロ有効テンプレートファイルから、 「Wordのオプション」→「ユーザー設定」で、「ユーザー設定」ボタンをクリックして 添付したようなウィンドウを開き、「分類」で「マクロ」を選択し、 「保存先」でマクロを保存したファイルを選択した後、 割り当てるキーを入力して、「割り当て」ボタンをクリックすると、マクロにキーが割り当てられます。 この、Wordマクロ有効テンプレートファイルを開いている間は、 割り当てたキーによって、対応するマクロを呼び出す事ができます。 ところが、この文書を閉じた後に再び開くと、キーの割り当てが、全てなくなっています。 キーの割り当てを永久的に保存するには、どうすればよいのでしょうか? あと、マクロにショートカットキーを割り当てるために、 「Wordのオプション」→「ユーザー設定」で、「ユーザー設定」ボタンをクリックして 添付したようなウィンドウを開き、「分類」で「マクロ」を選択 という操作を毎回するのは手間なので、 この操作をVBAマクロで実現する方法が知りたいと思っています。 色々調べてみたのですが、結局分かりませんでした。 以上の件について、何か良い方法がある方がいらっしゃれば、教えて頂けますでしょうか?

  • WSHスクリプトから動かしたEXCEL・VBAマクロでWSHスクリプトを停止する方法

    WSHスクリプトからEXCELファイルのVBAマクロを呼び出し実行させます。 このマクロ内ではif関数で設定している条件の真偽を判定しています。偽の場合、マクロは終了しEXCELファイルは一旦閉じられます。そして一定時間がたったら、WSHスクリプトのループ処理で再び同じマクロが開かれif関数で条件判定を行います。 もし、真の場合、マクロの設定処理の実行・終了とともにWSHのループ処理も終了させたいのですが、VBAマクロからそのマクロを実行させているWSHスクリプトを停止させることは可能でしょうか。

専門家に質問してみよう