• ベストアンサー

Excel起動時にAuto_Openでマクロを動作させています。

Excel起動時にAuto_Openでマクロを動作させています。 1回目はマクロを行いたいのですが、 次回起動時はマクロを使用したくありません。 (初期にAuto_Openを使用しなければいいのですが、できれば使用したいです) そこで下記はできますでしょうか? ・名前を付けて保存(時)後にマクロを削除するマクロ ・2回目以降起動時(該当のファイル名が違う場合に、Auto_Openが動作しない)マクロ ほかでもよい案があれば教えてください。

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

  • ベストアンサー
  • hige_082
  • ベストアンサー率50% (379/747)
回答No.2

一例です Sub auto_open() If ThisWorkbook.Name = "Book1" Then Call 処理 End If End Sub sub 処理() auto_openにあった処理をこっちへ移動する end sub の様にして If ThisWorkbook.Name = "Book1" Then この行に、最初のファイル名を記入しておき判断させ ファイル名が変わったら"処理"マクロは実行されない 参考まで

その他の回答 (2)

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

1.>1回目はマクロを行いたいのですが、次回起動時はマクロを使用したくありません。 2.>名前を付けて保存(時)後にマクロを削除するマクロ 3.>2回目以降起動時(該当のファイル名が違う場合に、Auto_Openが動作しない)マクロ 全部可能ですが、質問者さんの考え方や技術しだいと思います。そのまま、質問しっぱなしっていうだけでは、上手くないと思います。もちろん、私自身としては、#2さんの回答は、私も使っているテクニックです。ただし、少し複雑なのは、最初にブックを使用した時に自分専用の環境を作り、それでチェックさせるという方法です。だから、フォルダを変えても、動かないような作りにしています。 昔ながらの方法は、キーファイルからマクロを実行して、処理をすればよいのですが、これが一番簡単です。ただし、それでは、趣旨が違うかもしれませんし、それでも、ある程度の技術レベルは必要だと思います。Sheets.Copy は、マクロを除いてコピーということは、出来ないというぐらいは気がつかないといけないかもしれません。 2.に関しては、ご質問の趣旨は、ユーザーの手間なしに、マクロ・コードを削除させるわけです。それ自体は、ここで発言がなくても、インターネット検索すれば、10万件以上も出てきます。ただ、マイクロソフト側が、Extensibilityを使う方法に、セキュリティを設け安全策を講じたわけですが、セキュリティの問題以上に、私は個人的に、自己破壊型マクロは、あまり好きではありません。VBAを長年やっている人なら、一度や二度は試すコードでも、それを実際に実務で使用する人は、まずいないと思います。プロレベルの人が、こうしたテクニックを奨励することもありません。Excelの場合は、ユーザーフレンドリーにも、限界があるからです。 私自身としては、もう一度、こういう設計はしっかりと考えてもらい、最終的な結果からさかのぼって、単なるテクニックではなく、もう少し、周辺環境(OS とVersion, ExcelのVersion)や、その必要な理由や具体的な内容を書いていただかないと、いけないような気がします。面倒だなって思うなら、#2さんのテクニックで十分だと思います。ただ、ある時はマクロ付きブックで、ある時はマクロなしブックという可変型のブックよりも、最初から、マクロ付きブックと、そうでないブックとは明確に分けたほうがよいのは言うまでもありません。

  • keithin
  • ベストアンサー率66% (5278/7940)
回答No.1

マクロを直接除去したり操作するマクロは,まんま「マクロウィルス」の作り方につながりかねないので,ここのような公開の掲示板等では触れない話題です。また比較的最近のエクセルでは,標準ではそういった操作が通らないセキュリティが仕込まれています。 ただ >該当のファイル名が違う場合に、Auto_Openが動作しない といった段取りで良いなら例えば, 1.Auto_Openが起動する 2.全ての(若しくは必要な)シートを,シートの複写して新しいブックを起こす  (現在開いている中のブックの全てのシートを移動するマクロを書いてしまうと上手く行かないので注意) 3.複製ブックを名前を付けて保存し,以後はそちらを使って貰う 4.オリジナルブックは必要なら「致命的な」修正を行い,以後は使えない格好にして上書き保存しておく などのような手はずで,Auto_Openを「置き去り」にしたマクロ無しブックを準備できます。 例: sub Auto_Open() sheets.copy activeworkbook.saveas filename:="no_macro.xls" thisworkbook.sheets(1).range("A1:M100") = "このブックはもう使えません" thisworkbook.close savechanges:=true end sub

関連するQ&A

  • マクロ auto_open がうまくゆかない

    マクロで たとえば auto_open()  Sheets("sheet1").select というように編集しても ファイルをオープンした時全然このマクロ自体が有効にならず、手動で、「セキュリティの警告 マクロが無効にされました オプション」 となっている「オプション」をクリックしてはじめて sheet1 が自動表示されます。 AUTO_ OPEN はファイルを開いた時に即有効になるんではないかと思いますが、どうしてでしょうか。

  • マクロ Auto_Openがうまく動きません

    マクロ Auto_Openについてお伺いします。 エクセル立ち上げ時IMEは半角英数になっており、手動でひらがな入力にしますが、 そこである雑誌を見ると Sub Auto_open () Send Keys ("{Kanji}") End Sub のマクロを組み込めば立ち上げ時日本語入力になるとのこと XPの時はこれで問題なかったように記憶しております。 しかしwindows7になるとうまく働きません。ステップINで確認すると、確かに日本語入力に変わりますが、エクセル立ち上げ時、自動的に変わりません。なぜなのでしょうか。 windows7の場合OSか何か変わったのでしょうか? なんとかwindows7でエクセル立ち上げ時、自動的に日本語ローマ字入力にしたいのですが、 どちら様か良い知恵をアドバイスお願いいたします。

  • アクセスでauto_openは使えない?

    エクセルの場合は、ブックを開いたと同時にマクロを実行させたい時は、 auto_openと言うマクロを標準モジュールに作れば可能ですが、 アクセスVBAの標準モジュールに、auto_openというプロシージャーを作って、 アクセスを再起動しても何も起こりません。 アクセスにおいて ファイルの起動と同時にマクロを実行させたいのなら、 どこかのフォームのOpenイベントに実行させたいコードを記載して、 起動時の設定で、そのフォームを選択するしかないのでしょうか?

  • エクセル起動時に、オートオープンマクロでもう一つのエクセル(以下『マス

    エクセル起動時に、オートオープンマクロでもう一つのエクセル(以下『マスタ情報』と表示)が 連動して起動するように設定をしているのですが、この『マスタ情報』のエクセルが起動している 事実をユーザーに秘密にしておく設定は可能でしょうか?(保存先を知らせたくないためです)  ActiveWindow.Visible = False 『マスタ情報』のエクセルをアクティブにして上記のマクロ構文を付け加えれば確かにウィンドウが 非表示にはなるのですが、ユーザーにツール『ウィンドウ』の『再表示』メニューをクリックされて しまうと、せっかく非表示にした『マスタ情報』のエクセルが再表示されてしまいます。  Sheets(1).Visible = xlVeryhidden ユーザーに再表示させたくない対象のオブジェクトがシートの場合であれば、上記のマクロ構文で 解決できるのですが・・・  ActiveWindow.Visible = xlVeryhidden 上記マクロ構文を試してみたところ、エラーは発生しなかったのですが『マスタ情報』のエクセルは 非表示に設定されることなくマクロの処理が終了してしまいました。ブック(ウィンドウ)を完全に 非表示にする方法をご存知の方、是非教えて頂けますよう宜しくお願いします。

  • Auto_Openマクロ

    Excel2003のマクロで、 Sub Auto_Open() ActiveSheet.DisplayAutomaticPageBreaks = True End Sub としているのですが、起動時に開くシートにしか適用されません。 ページが増えていくのでブック内の全シートに適用するにはどうしたらいいでしょうか?

  • Auto_Open シフトキーの無効

    マクロを有効時にシフトキーを押しながらマクロを有効にするを押すと Auto_Openの処理が動きません(仕様)  逆に、シフトキーを押されてもAuto_Openの処理等のマクロを実行させる方法はありますか? あれば、教えてください。 使用するエクセルは、Excel2003以上で使用します。

  • EXCELアドイン自動起動マクロ

    アドインに登録し、不特定のCSVファイルを読み込んだとき(OPENしたとき)に内容を判別し、起動するマクロを作成しようとしています。 標準モジュールに”Sub Auto_Open()”により記述し、アドイン登録しましたが、期待する動作となりません。 ----------------------------- Sub Auto_Open() MsgBox "ファイルが開く毎に起動させたい" End Sub ----------------------------- ☆EXCEL未起動→ファイルオープンしたときには、上記MsgBoxが表示されるが、EXCEL起動中→ファイルオープンでは表示されません。 ファイルを開くたびに動作するマクロを登録するためには、どのようなテクニックが必要なのでしょうか?

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

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

  • マクロの自動オープンの方法を教えて下さい

    エクセルAのマクロAでエクセルBをオープンした時にエクセルBのマクロBをオープンする方法を教えて下さい。(マクロBをAuto_Openにしてもオープンしません)

  • エクセルで保存時に自動実行させるマクロ?

    エクセル97です。 起動時のAuto_Openや終了時のAuto_Closeのように、ファイルに保存をかけた時に自動的にマクロを実行させるにはどうしたらよいのでしょうか? フォームなどのマクロボタンで保存させるのではなく、通常に保存する場合です。 よろしくお願いします。

専門家に質問してみよう