
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
この行に、最初のファイル名を記入しておき判断させ
ファイル名が変わったら"処理"マクロは実行されない
参考まで
No.3
- 回答日時:
1.>1回目はマクロを行いたいのですが、次回起動時はマクロを使用したくありません。
2.>名前を付けて保存(時)後にマクロを削除するマクロ
3.>2回目以降起動時(該当のファイル名が違う場合に、Auto_Openが動作しない)マクロ
全部可能ですが、質問者さんの考え方や技術しだいと思います。そのまま、質問しっぱなしっていうだけでは、上手くないと思います。もちろん、私自身としては、#2さんの回答は、私も使っているテクニックです。ただし、少し複雑なのは、最初にブックを使用した時に自分専用の環境を作り、それでチェックさせるという方法です。だから、フォルダを変えても、動かないような作りにしています。
昔ながらの方法は、キーファイルからマクロを実行して、処理をすればよいのですが、これが一番簡単です。ただし、それでは、趣旨が違うかもしれませんし、それでも、ある程度の技術レベルは必要だと思います。Sheets.Copy は、マクロを除いてコピーということは、出来ないというぐらいは気がつかないといけないかもしれません。
2.に関しては、ご質問の趣旨は、ユーザーの手間なしに、マクロ・コードを削除させるわけです。それ自体は、ここで発言がなくても、インターネット検索すれば、10万件以上も出てきます。ただ、マイクロソフト側が、Extensibilityを使う方法に、セキュリティを設け安全策を講じたわけですが、セキュリティの問題以上に、私は個人的に、自己破壊型マクロは、あまり好きではありません。VBAを長年やっている人なら、一度や二度は試すコードでも、それを実際に実務で使用する人は、まずいないと思います。プロレベルの人が、こうしたテクニックを奨励することもありません。Excelの場合は、ユーザーフレンドリーにも、限界があるからです。
私自身としては、もう一度、こういう設計はしっかりと考えてもらい、最終的な結果からさかのぼって、単なるテクニックではなく、もう少し、周辺環境(OS とVersion, ExcelのVersion)や、その必要な理由や具体的な内容を書いていただかないと、いけないような気がします。面倒だなって思うなら、#2さんのテクニックで十分だと思います。ただ、ある時はマクロ付きブックで、ある時はマクロなしブックという可変型のブックよりも、最初から、マクロ付きブックと、そうでないブックとは明確に分けたほうがよいのは言うまでもありません。
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が見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Excel マクロの編集がグレーに...
-
エクセルで、「いいね」のよう...
-
Excelのマクロでボタンを押すと...
-
WPSOffice_マクロの有効化について
-
複数のマクロボタンをまとめて...
-
エクセル ボタンに設定したマク...
-
エクセルの表を複数枚印刷した...
-
Excelのマクロ名の並び順の法則...
-
エクセルでマクロ(Excel 4.0)...
-
エクセル マクロ名にブック名...
-
エクセルマクロで、別のブック...
-
Excelマクロで、稼働中のマクロ...
-
コピーしたデータを2行ずつに貼...
-
VBA マクロ名のパスをとるには
-
エクセルの、記録を終了したマ...
-
リーグ戦(10チーム2コート)作...
-
マクロをマクロを使ってコピー...
-
Excelマクロをバックグラウンド...
-
マクロ実行ボタンを自動削除したい
-
LDPlayerのマクロの編集方法を...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
WPSOffice_マクロの有効化について
-
Excel マクロの編集がグレーに...
-
複数のマクロボタンをまとめて...
-
エクセル ボタンに設定したマク...
-
Excelのマクロでボタンを押すと...
-
エクセルで、「いいね」のよう...
-
エクセル マクロ名にブック名...
-
エクセルでマクロ(Excel 4.0)...
-
エクセルの、記録を終了したマ...
-
LDPlayerのマクロの編集方法を...
-
(Excel VBA)シートコピー時マ...
-
Excelマクロで、稼働中のマクロ...
-
エクセルの表を複数枚印刷した...
-
エクセルで明日の日付を表示す...
-
Excelのマクロ名の並び順の法則...
-
別シートのマクロボタンをマク...
-
Excelマクロをバックグラウンド...
-
エクセルマクロで、別のブック...
-
他のBOOKにマクロを反映させな...
-
EXCELのマクロが他のパソコンで...
おすすめ情報