• ベストアンサー

EXCELのマクロの重複起動の禁止

6時間くらい動作するEXCEL2000のマクロ作ったのですが、間違えて重複起動をしてしまうことがあります。 次のような対応策を考えてみたのですが、マクロの作り方がわかりません。 (1)マクロの起動時に、マクロ内で現在動作しているマクロと重複チェックを行い、現在動作しているマクロを終了し、新たにマクロを開始する方法 (2)マクロの起動時に、マクロ内で現在動作しているマクロと重複チェックを行い、エラーメッセージを出力する方法 (3)現在稼動しているマクロを表示確認できる方法 他の方法でも結構ですので、マクロをご教示ください。 よろしくお願いします。

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

  • ベストアンサー
  • KenKen_SP
  • ベストアンサー率62% (785/1258)
回答No.1

こんにちは。(2)の方法ですが、 1. プライベート変数myFlagを宣言 2. マクロの実行時に myFlag の値を調べる   2-1. False なら myFlagにTrueをセットし、以降のマクロを実行する   2-2. True ならマクロ実行中なので、処理中止 3. 一応、全ての処理の最後に、 myFlag = True としておく のような処理になるかと思います。具体的には、 Private myFlag As Boolean Sub TEST()   If myFlag Then     MsgBox "既に実行中です..."     Exit Sub   End If   'myFlag=Falseなら以降を実行   myFlag = True   '(略)これ以降に処理を書く   '処理の最後に一応   myFlag = False End Sub こんな感じでしょうか。 あとは、6時間も稼動しているわけですから、プログレスバーでもなんでもよいので進捗状況を表示した方がよいでしょうね。 はずしていたら、すみません。

QAZ123
質問者

補足

すみません。今、気が付いたのですが、Aplication.OnTimeは、その処理が完了しなくても、次の処理に進むんですね。 実は、マクロAから別のマクロBを、10分おきに、36回 Application.OnTimeで起動していたので、マクロA自体は終了済みで、一瞬にmyFlag = Falseになっていました。 Application.OnTime TimeValue("09:00:00"), "マクロ" Application.OnTime TimeValue("09:10:00"), "マクロ"             ・             ・             ・ Application.OnTime TimeValue("15:00:00"), "マクロ" 説明不足で申し訳ありません

その他の回答 (2)

  • WWolf
  • ベストアンサー率26% (51/192)
回答No.3

まだまだ色んなパターンが想定されます。例えばファイル”あ”の中にマクロAとマクロBが存在し、ファイル”あ”を誤って二重起動してしまった場合やetc... どのパターンでも確実なのは、ある決められたフォルダー(c:\tempなど)にマクロAが起動しているというファイル(なんでもよい)を作成し全て完了したらそのファイルを削除する。

  • WWolf
  • ベストアンサー率26% (51/192)
回答No.2

重複起動をしては困る理由を補足説明お願い致します。 それにより対処方法が異なります

QAZ123
質問者

補足

 マクロAから別のマクロBを、9時から15時まで10分おきに、36回 Application.OnTimeで起動しています。 Application.OnTime TimeValue("09:00:00"), "マクロB" Application.OnTime TimeValue("09:10:00"), "マクロB"             ・             ・             ・ Application.OnTime TimeValue("15:00:00"), "マクロB"  8時にマクロAを起動し、誤って10時にマクロAを起動した場合、10時以降はマクロBが2回動いてしまうのを防ぎたいと思っています。  よろしくお願いします。

関連するQ&A

  • Excelのマクロちょっと教えて~!

    過去の質問と重複しているかも知れませんけど、Excelで、マクロボタンをClickした時にExcel自体も終了するようなマクロを教えて下さい! マクロの記録でやろうとするとExcel自体を終了させてしまうので・・・無理ですよね!? よろしくお願いします!

  • EXCEL 個人用マクロブックが起動しなくなりました

    EXCEL2002を使用していますが、個人用マクロブックが起動しなくなりました。 同様の質問がありましたので、回答を参考にマクロセキュリティレベルを確認し、一度Personal.xls ファイルを削除して再度個人用マクロブック作成していみましたがだめでした。 手動で個人用マクロブックを起動してマクロを実行してもエラーはでないのですが、正しく動作しません。 EXCEL2002を再インストールしてもだめだったので、EXCEL2002をアンインストール後一度EXCEL2000をインストールすると個人用マクロブックか起動するようになったので、再度EXCEL2002をインストールしてみるとまた個人用マクロブックは起動しなくなってしましました。 仕事上よく使用するアイコン等が使えなくて困っています。 よい対処方法がありましたら、ぜひ教えてください。 よろしくお願い致します。

  • ShellでEXCEL2002を起動する場合

    VB6のコーディングで、Shell関数を使用してEXCELを起動しているのですが、EXCEL2002では、他のバージョンと表示方法が変わってしまいました。 コーディングは Shell(PATHつきのEXCEL.EXE, vbMinimizedFocus) としているのですが、 EXCEL2000までは、正常にアイコン化されたEXCELが起動できていたのに、EXCEL2002からは最後に使用した大きさ(最大化した状態でEXCEL2002を終了していたら最大化、アイコン化した状態で終了していたらアイコン化)で起動されてしまいます。 また、EXCEL2000までは表示されなかったロゴマーク?も表示されてしまいます。 ちなみにWORD2002はアイコン化して起動可能でした。 (但し、こちらもロゴマークは表示されます。) 動作として、ひっそりとEXCELを起動してマクロを使用した帳票を出力する。 としたいのですが、なにかいい方法がありましたら教えてください。 (ShellExeCuteもうまく動作しませんでした。)

  • エクセルのマクロ起動時画面を消したい

    エクセルでマクロの記録を使用し マクロを作ったが、動作時 画面が記録通りに表示されている 見ていて せわしない  そこで、マクロに追加コマンドなどで マクロ起動時画面表示を消し(又は、コメント表示)させ 処理終了後 再度 画面表示 させると言う事をしたいと思うのですが、 御存知の方 御教えください

  • マクロを組んだエクセルの動作が遅い

    OS: Windows 2000 マクロを組んだエクセルの動作が非常に、異常に遅いのです。 マクロを組んでいないエクセルはすぐに起動でき、すぐに印刷、終了ができるのですが、 マクロを組んでいるエクセルは起動するのに1~2分、印刷も終了も同じく遅いのです。 また、マクロを組んでいるエクセルを開く際に、タスクマネージャでCPU使用率を見て みると、必ず100%になっているんです(マクロを組んでないものは100%までいかない)。 日に日に動作が遅くなっているように感じ、とても困っています。 ご教授ください。m(__)m

  • エクセルのマクロについて(重複セル色付け)

    現在、エクセルで重複セルに色をつける際に、 条件付き書式から重複セルに色をつけております。 しかし、行数が多くなってくるにつれ、表が重くなってきましたので マクロで出来ないかをお教えいただきたいです。 重複のチェックは I から AYまで数字が入っており、 各行ごとの I から AYまでチェックをし、重複した数字のセルに色をつけたいです。 BからHは任意に数字を入力をしますので、Bに文字が入っている行について I から AYまでの重複チェック→色付けとなります。 そして、データも日々増えていきますので、 行の下からBに数字が入っているかを検索し、 入っていたら、その行から上に向かって各行ごとにチェック・・・ としたかったのですが、理屈は分かっていても組めないという情けない結果になり、 皆様にご相談させていただいた次第です。 表現が下手で申し訳ありませんが、ご回答をお願い致します。

  • エクセル マクロ 検索 自動記録できない

    excel2003でマクロを作っていますが、  ファイルを立ち上げたときに自動的にファイル-編集-検索を実行し、 検索画面を起動するようにしたいので、その動作を自動記録しようとするのですが、記録できません。 過去の質問を見て、 Application.Dialogs(xlDialogFormulaFind).Show ↑これを使えば出来ると書いてありましたが、 少し古いエクセルの検索画面で、私が使いたいexcel2003の検索画面ではありませんでした。  どのようにすれば、検索画面をマクロで起動できるのでしょうか。 ご教示いただけますようよろしくお願いします。

  • Excel 2003のVBAマクロデータをExcel 2007で見たい

    Excel 2003のVBAマクロデータをExcel 2007で見たい。 Excel 2003でVBAマクロを登録したExcelファイルがありますが、今回、Excel 2007をインストールして、該当ファイルを開いたところ、「マクロデータを削除しました。」とメッセージが出て、VBEを起動してもマクロが見えなくなりました。OSはWindowsXP SP3です。Excel 2003で登録したVBAマクロをExcel 2007で削除されないで、次の2点について、可能にするにはどうすればよいか、ご教示願います。 (1)マクロデータを残す方法。 (2)マクロ起動する方法。

  • アクセス マイクロソフトのマクロについて

    こちら初心者でアクセスをなんとか使用しているものです。 現在、会社で使用しているアクセスのマクロについてどなたかご教示ください。 1.現在、前任者が作成したマクロを使用して、インポートしたDBを重複クエリでチェックを行っています。今の仕様だと重複があってもなくても「OKダイアログ」と「DBのフォーマット」が表示されます。出来れば、重複があった時に「エラーダイアログ」と重複DBを画面に表示し、重複がなかった時は「OKダイアログ」のみを表示したいと思っていますが、初心者なもので、今使用しているマクロを改修しながらバージョンアップしてる状況です。他に良い方法がありましたら教えてください。 2.前質問につながりますが、テキストファイル等をインポートする時にパスとファイ名をマクロで指定しますが、この時にオプションかなにかで ファイル情報の日付をチェックしたいのです。インポート当日にインポートファイルが当日でない時があり古いファイルのままインポートを行なってしまい重複が発生してしまいますので良い対策方法と思いこのような方法はどうかと思いましたが他に良い方法がありましたら教えてください。

  • Excelのマクロ

    Windows XPでExcel2003を使っています. 今までそういうことは全くなかったのですが, 急に,Excel2003を起動しただけで,マクロに関する警告が 出るようになりました. OFFICE11\xlstart\Cleaner.xla OFFICE11\xlstart\DG_97.xla  はマクロを含んでいます という内容です. この種の警告は,マクロが埋め込まれているファイルを開くとき に出てきますが,今回はマクロが入っているはずのないファイル, ましてや既存ファイルを開くのではなく,Excel2003のソフトを起動して 新規ファイル(Book1など)を作ろうとしただけで,必ず出るように なってしまっています. セキュリティレベルを変えれば,こうした警告は出なくなったりは しますが,出ていなかったものが出るようになったわけですから, 何が変わったのでしょうか. 以前のように出ないようにするには,どうしたらいいのでしょうか. 何かの設定の問題でしたら,設定方法を教えて下さい.

専門家に質問してみよう