• ベストアンサー

マクロを上書き保存時に削除または停止させる

エクセル2003での質問です。 Auto_Openでマクロを実行させ、上書き保存し、次に開くときはそのAuto_Openのマクロを実行しないようにしたのですが、何か良い方法はありますでしょうか? ちなみに、Auto_Openマクロでは他のファイルにリンクしている表をコピーして値のみ張付け、そのまま上書き保存してリンクをさせないようにしています。 どなたか分かる方がいらっしゃいましたら宜しくお願い致します。

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

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

#3の回答者です。 #3の補足のコードは直しましたが、このようなスタイルではどうでしょうか。 >保存用のフォルダ(共有ネットワーク内)に入れています。 >保存用に入れたファイルはAuto_Openマクロが動かないようにしたいと思っています。 共有ネットワークに入っているフォルダのフォルダパスは、\\(¥¥)となりますから、以下のようにして、Auto_Open は動かないようにします。試してみてください。 考え方の理屈は分かっていただけると思いますので、もし違うようでしたら、実際のフォルダを登録する方法もあると思います。 なお、シート名は、実際の名前に書き換えてください。 Sub Auto_Open()  ''MsgBox ThisWorkbook.Path '確認用  If ThisWorkbook.Path Like "\\*" Then Exit Sub  With Worksheets("Sheet1") 'シート名   .Range("B8:C8").Value = .Range("B8:C8").Value   .Range("A10:E22").Value = .Range("A10:E22").Value   .Range("A25:E37").Value = .Range("A25:E37").Value   .Range("E24").Select   End With End Sub

geos_test2006
質問者

お礼

完璧です!! ありがとうございました! これで大分楽になります(T_T)//

その他の回答 (3)

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

ご質問の内容では、良く分かりません。 >Auto_Openでマクロを実行させ、上書き保存し、次に開くときはそのAuto_Openのマクロを実行しないようにした…… Auto_Open を上書き保存しなければ動きませんが、次に開けた時点でマクロを動かしたくないというのなら、Auto_Openに登録する必要性などありえません。なぜ、Auto_Openに登録しているのか、その理由と仕組みが分からないと、本当の解決には至らないような気がします。どうも事情が分かりません。 >マクロを上書き保存時に削除または停止させる 自爆型のマクロというのは、Excelでは使ったことがありません。マクロ関数で書くなら可能かもしれません。そうでなければ、アドイン型でも可能ですが、アドインを外すマクロが残ってしまいます。 VBAマクロを削除させるのは、今は、ウィルスもどきなので禁止技になっています。Auto_Open で、レジストリや、iniファイルの有無のチェックで起動させないことは出来ますが、VBAとしては上級ワザのひとつかもしれません。レジストリや、iniファイルの代わりに、CustomDocumentPropertiesに登録しても良いと思います。 もう少し、詳しいお話を聞かないと、私は、何も答えられませんね。

geos_test2006
質問者

補足

Auto_Openのマクロは以下の通りになります。 Sub Auto_Open() Range("B8:C8").Select Selection.Copy Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ :=False, Transpose:=False Range("A10:E22").Select Application.CutCopyMode = False Selection.Copy Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ :=False, Transpose:=False Range("A25:E37").Select Application.CutCopyMode = False Selection.Copy Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ :=False, Transpose:=False Application.CutCopyMode = False Range("E24").Select End Sub 表の中の数値が入力シート(外部ファイル)にリンクしているので、 一旦表をコピーして、値だけ貼り付ける作業をしています。 このファイルを上書き保存して、保存用のフォルダ(共有ネットワーク内)に入れています。 保存用に入れたファイルはAuto_Openマクロが動かないようにしたいと思っています。 まとめると、該当ファイルを開いた時に、外部ファイルにリンクした表をコピーして値だけ貼り付け、 Auto_Openマクロを次回起動時に動かないようにして、上書き保存出来れば最高です。

  • ogawa_sora
  • ベストアンサー率36% (468/1280)
回答No.2

今晩は。 「Auto_Open」とは、古いバージョンのExcelもお使いですか。 Excel2002以降は「Workbook_Open」イベントプロシージャを使いますが、開くとき「Shift」キー を押しながらブックを開くと無効となり実行されませんから、同じやり方で良いと思います。 趣旨と違っていたらすいません。

geos_test2006
質問者

補足

Excel2003を使用しています。 Shiftを押さないでファイルを開いた時にAuto_Openが作動しないように出来る方法を探しています。

  • merlionXX
  • ベストアンサー率48% (1930/4007)
回答No.1

geos_test2006さんの意図が、お書きになった通りなら Sub Auto_Open()   If Sheets("Sheet1").Range("A1").Value = "実行済み" Then     Exit Sub   Else     Sheets("Sheet1").Range("A1").Value = "実行済み"     現在のAuto_Openで実行のコード   End If End Sub とでもして判定させればいいと思います。 まあ、実際にはA1セルじゃなくもっとめだたないところがいいかな。 でも違う意図、たとえば値だけになった表を、マクロのないBOOKにして保存したいとか、ならまた違う方法も考えられます。

関連するQ&A