- ベストアンサー
Excelのマクロ有効無効判断方法
- Excelでマクロが有効なのか無効なのかを知る方法はありますか?マクロ作成者がユーザ環境を確認できず、使用者もExcelに詳しくないという状況です。
- Excelでマクロが有効か無効かを判断する方法を教えてください。ユーザが使っているExcelで直接設定を確認するのではなく、他のプログラムなどで判断する方法があるか知りたいです。
- マクロが有効なのか無効なのかを判断する方法を教えてください。Excelを開いて設定を確認するのではなく、他の方法で判断することができるか知りたいです。マクロ作成者がユーザ環境を確認できず、使用者もExcelに詳しくない場合の対応方法を教えてください。
- みんなの回答 (6)
- 専門家の回答
質問者が選んだベストアンサー
No4です。 もしかして、オプション設定の基本的な設定で無効にしてるかどうか調べたいという事でしょうか。 HKEY_CURRENT_USER\Software\Microsoft\Office\14.0\Excel\Security VBAWarnings もしくは Level に記載されています。ユーザーがデフォルトのまま変更していなければ上記の値は存在しないかもしれません。
その他の回答 (5)
- kkkkkm
- ベストアンサー率66% (1719/2589)
2003の頃は起動s時にマクロを無効のボタンを押して、動かないからみてくれとか言われたことがあったものですから、エクセルを操作しているユーザーから動かないと言われたときの確認のためかと思ってましたが違ったのですね。 > WEB等見てると何かの拍子に無効に切り替わる可能性があるように思えたため レジストリにはフルパスで記載されていますから、フォルダ名を変更したとかファイルを移動した場合には同一ファイルでも無効になってしまいますので、そのあたりの事があるのではないでしょうか。 とりあえず、実行しているファイルでレジストリを確認するのが手っ取り早いのではないでしょうか。
お礼
>エクセルを操作しているユーザーから動かないと言われたときの確認のためか >と思ってましたが違ったのですね。 はい 現在まだきちんと形になっているものではなく テスト的に自分の環境で作ったマクロ動作確認してる時にそのマクロを 他の環境で操作させる時に問題になりそうな事案として 対処方法がないかを検討している といったものです 初期設定=インストール 等は 行ったうえでユーザに渡すから 設定破壊でもしない限り 考えなくてもいいような気はするけど 一応考えてみるか といった程度の事案 No5の御礼にも書きましたが レジストリ参照だとバージョン依存の問題もあるため 実現するとしたらどういった形で実現するのがいいかをもう少し検討したいと思います いずれにしてもレジストリの場所が分かりましたので助かりました 回答ありがとうございました
- kkkkkm
- ベストアンサー率66% (1719/2589)
> これって私が漠然と館府が得てる方法と何か明らかな違いがあるんでしょうか? 一度をファイルを作成した後にマクロを無効にしたら、無効でも有効だと判断されてしまいます。 > ・わざわざファイルを分割する意味がよくわからない 質問にあった > 使用者もExcelに詳しい人ではない ですので、調べたいファイルを開いて何も動かないのがマクロ有効無効とかそんな事があることもわからないなら、別ファイルを起動して有効かエラーが出るようにすれば、使用者に確認するときのツールになるという意味です。 > エクセル上でのメッセージ表示などではなく > 外部からどういった状態になってるか確認できる手法がないかを模索しています エクセル2007は知りませんが、2010以降でしたらファイルの最初の起動時にマクロの有効ボタンを押すと次回からは有効のままになるようにレジストリにそのファイル名を書き込む仕様で、そのファイル一覧は HKEY_CURRENT_USER\Software\Microsoft\Office\14.0\Excel\Security\Trusted Documents\TrustRecords ここに記載されています。2013だと14.0が15.0になります。 ただ、2010の場合次回からも有効にするにしないと、状態は無効のままになります。
お礼
>ファイルを作成した後にマクロを無効にしたら、無効でも有効だと判断されて そういう意味ですか そういった誤判定は起こさないように 他のプログラムからマクロで作成するファイルは削除した後で該当ファイルオープン マクロ自動起動でチェックファイルを書き込んだ後 一定処理を行った後じどうでExcelセットで終了させる予定なので 途中でマクロの状態が変更もできないはずですし誤判定も起こりえないと考えています でもってそのプログラム自体をオペレータが操作することになります (有効・無効判定以外は基本的に作成済みで動作確認しています) 表面上 オペレータには Excel動かしてるとわからないようにするつもりです (起動時のスプラッシュも消します) >最初の起動時にマクロの有効ボタンを押すと次回からは有効のままになるよう 基本的にその状態で動かすことを考えていますが WEB等見てると何かの拍子に無効に切り替わる可能性があるように思えたため (操作ミス以外で本当にそんなことがあるかは不明) 何かの対処も考えた方がいいのかな(簡単な方法でもないかな) といったことから 質問させていただきました
- kkkkkm
- ベストアンサー率66% (1719/2589)
No1です 書き忘れましたが、ユーザー側でファイル名に全角の空白とか入っているとエラーになるので、一応テストしてマクロ有効なのにエラーになる場合は、ファイル名や階層が深いところにあるとかパス名も確認してみてください。
- WindFaller
- ベストアンサー率57% (465/803)
こんにちは。 >そんなことを考えるだけ時間の無駄(本末転倒)の気がしないでもないですが 無駄ではないのですが、掲示板では、その質問はタブーですね。 >ユーザが使ってるExcelでマクロが有効なのか無効なのかを判断する方法ってあるんでしょうか? >※ Excel開いて設定確認するんではなくて他のプログラムなどで知る方法があるか あります。 もう何年も前になりますが、Micorosoft 自身が、それを図らずも明らかにしてしまったのです。 VBAの上級者なら、知っている人もいるでしょうけれども、VBAを勉強を深めていったら、いずれ知ることになるでしょう。たぶん、外部プログラムで、よほどあからさまでなければ、やってみたことはありませんが、アンチウィルスには掛からないと思います。 >他のプログラムからExcelでそのファイルを開き一定時間内にファイルが作成されなかったら >マクロ無効になってるといった形でできるかな ご質問者さんの想像の範囲にはありませんが、それは、セキュリティの切り替えも可能ですから、マクロを無効にしてあっても、マクロを有効にしてウィルスを放り込み、複製を作らせるというマクロ・ウィルスが可能になってしまいます。したがって、少なくとも、私は、この解答はできないのです。
お礼
>あります。 >もう何年も前になりますが、Micorosoft 自身が、それを図らずも明らかにしてしまったのです 一応あるんですか。 >VBAを勉強を深めていったら 実際どこまでやるか定かではありませんが現在事前調査をしている段階です Cなどのプログラム経験はありますがVBA作成についても実質数時間絵ベルの人間です >マクロを有効にしてウィルスを放り込み、 >複製を作らせるというマクロ・ウィルスが可能になってしまいます。 私自身はあくまで設定状態を確認したいだけなんですが 回答容姿次第では確かにそういった面はあるかもしれませんね( (読めるなら書き込みもできるだろ といった意味で) 個人的にはマクロ動かす前提でそのファイル使うので そんな対処ぐらいできるのが当然と考えてはいますが (だからこんなこと考えてるだけ時間の無駄かな と) もし何か南端にできるようなものであれば考えてもいいかなと思った次第です 回答ありがとうございました
- kkkkkm
- ベストアンサー率66% (1719/2589)
判断するほうのファイルに記載するマクロ Sub Example1() MsgBox Application.Run("ユーザーファイル.xlsm!Example2") End Sub ユーザーファイルに記載するマクロ Function Example2() As String Example2 = "有効" End Function で、いいと思います。ユーザー側でマクロが有効だとメッセージが表示されますが、有効じゃないとエラーになりますのでそれで判断できるでしょう。 ただし、LAN内で使えるかどうかは私にはテストできないので不明です。
お礼
マクロ触った時間が実質数時間程度の知識なので何か勘違いしてるのかもしれませんが これって私が漠然と館府が得てる方法と何か明らかな違いがあるんでしょうか? ・スクリプト記載のファイル開から動作を確認しようとしてるのは同じ ・わざわざファイルを分割する意味がよくわからない 有効じゃないとエラーになります とありますが 無効状態なら 初めから何も表示されませんよね? エクセル上でのメッセージ表示などではなく 外部からどういった状態になってるか確認できる手法がないかを模索しています という状態であまりメリット感じないんですが何か勘違いしてますか? 回答ありがとうございました
お礼
>オプション設定の基本的な設定で無効にしてるかどうか調べたいという事 そういう事です >~~~に記載されています 確認しました この情報と自分で気が付いた情報として HKEY_CURRENT_USER\Software\Microsoft\Office\14.0\Excel\Security\Trusted Documents の DisableTrustedDocuments を合わせてチェックすればよさそうです(こちらは信頼済みドキュメントの有効・無効) チェックなどはそこ見るのが簡単だとは思いますが Officeのバージョンに依存してしまうので将来考えると実際にファイル動かして 確認する方がいいのかちょっと悩むところです もう少し検討したうえでどの方法をとるか決めたいと思います 回答ありがとうございました