アプリ版:「スタンプのみでお礼する」機能のリリースについて

そんなことを考えるだけ時間の無駄(本末転倒)の気がしないでもないですが
ユーザが使ってるExcelでマクロが有効なのか無効なのかを判断する方法ってあるんでしょうか?
※ Excel開いて設定確認するんではなくて他のプログラムなどで知る方法があるか
  という意味です

マクロ作成者はユーザ環境確認できず 使用者もExcelに詳しい人ではないといった状況前提

現在漠然とした形で考えているのがマクロで適当なファイルを作成するようにしておいて
他のプログラムからExcelでそのファイルを開き一定時間内にファイルが作成されなかったら
マクロ無効になってるといった形でできるかな  と思っているんですが他に方法あるでしょうか

A 回答 (6件)

No4です。



もしかして、オプション設定の基本的な設定で無効にしてるかどうか調べたいという事でしょうか。

HKEY_CURRENT_USER\Software\Microsoft\Office\14.0\Excel\Security

VBAWarnings
もしくは
Level

に記載されています。ユーザーがデフォルトのまま変更していなければ上記の値は存在しないかもしれません。
    • good
    • 0
この回答へのお礼

>オプション設定の基本的な設定で無効にしてるかどうか調べたいという事
そういう事です

>~~~に記載されています
確認しました
この情報と自分で気が付いた情報として
HKEY_CURRENT_USER\Software\Microsoft\Office\14.0\Excel\Security\Trusted Documents の
DisableTrustedDocuments
を合わせてチェックすればよさそうです(こちらは信頼済みドキュメントの有効・無効)

チェックなどはそこ見るのが簡単だとは思いますが
Officeのバージョンに依存してしまうので将来考えると実際にファイル動かして
確認する方がいいのかちょっと悩むところです

もう少し検討したうえでどの方法をとるか決めたいと思います
回答ありがとうございました

お礼日時:2014/06/25 02:34

2003の頃は起動s時にマクロを無効のボタンを押して、動かないからみてくれとか言われたことがあったものですから、エクセルを操作しているユーザーから動かないと言われたときの確認のためかと思ってましたが違ったのですね。



> WEB等見てると何かの拍子に無効に切り替わる可能性があるように思えたため

レジストリにはフルパスで記載されていますから、フォルダ名を変更したとかファイルを移動した場合には同一ファイルでも無効になってしまいますので、そのあたりの事があるのではないでしょうか。

とりあえず、実行しているファイルでレジストリを確認するのが手っ取り早いのではないでしょうか。
    • good
    • 0
この回答へのお礼

>エクセルを操作しているユーザーから動かないと言われたときの確認のためか
>と思ってましたが違ったのですね。
はい
現在まだきちんと形になっているものではなく
テスト的に自分の環境で作ったマクロ動作確認してる時にそのマクロを
他の環境で操作させる時に問題になりそうな事案として 対処方法がないかを検討している
といったものです

初期設定=インストール 等は 行ったうえでユーザに渡すから 設定破壊でもしない限り
考えなくてもいいような気はするけど 一応考えてみるか といった程度の事案

No5の御礼にも書きましたが レジストリ参照だとバージョン依存の問題もあるため
実現するとしたらどういった形で実現するのがいいかをもう少し検討したいと思います

いずれにしてもレジストリの場所が分かりましたので助かりました
回答ありがとうございました

お礼日時:2014/06/25 02:42

> これって私が漠然と館府が得てる方法と何か明らかな違いがあるんでしょうか?



一度をファイルを作成した後にマクロを無効にしたら、無効でも有効だと判断されてしまいます。

> ・わざわざファイルを分割する意味がよくわからない

質問にあった
> 使用者もExcelに詳しい人ではない
ですので、調べたいファイルを開いて何も動かないのがマクロ有効無効とかそんな事があることもわからないなら、別ファイルを起動して有効かエラーが出るようにすれば、使用者に確認するときのツールになるという意味です。

>    エクセル上でのメッセージ表示などではなく
>   外部からどういった状態になってるか確認できる手法がないかを模索しています

エクセル2007は知りませんが、2010以降でしたらファイルの最初の起動時にマクロの有効ボタンを押すと次回からは有効のままになるようにレジストリにそのファイル名を書き込む仕様で、そのファイル一覧は
HKEY_CURRENT_USER\Software\Microsoft\Office\14.0\Excel\Security\Trusted Documents\TrustRecords
ここに記載されています。2013だと14.0が15.0になります。

ただ、2010の場合次回からも有効にするにしないと、状態は無効のままになります。
    • good
    • 0
この回答へのお礼

>ファイルを作成した後にマクロを無効にしたら、無効でも有効だと判断されて
そういう意味ですか
そういった誤判定は起こさないように
他のプログラムからマクロで作成するファイルは削除した後で該当ファイルオープン
マクロ自動起動でチェックファイルを書き込んだ後
一定処理を行った後じどうでExcelセットで終了させる予定なので
途中でマクロの状態が変更もできないはずですし誤判定も起こりえないと考えています
でもってそのプログラム自体をオペレータが操作することになります
(有効・無効判定以外は基本的に作成済みで動作確認しています)
   表面上 オペレータには Excel動かしてるとわからないようにするつもりです
(起動時のスプラッシュも消します)

>最初の起動時にマクロの有効ボタンを押すと次回からは有効のままになるよう
基本的にその状態で動かすことを考えていますが
WEB等見てると何かの拍子に無効に切り替わる可能性があるように思えたため
(操作ミス以外で本当にそんなことがあるかは不明)
何かの対処も考えた方がいいのかな(簡単な方法でもないかな) といったことから
質問させていただきました

お礼日時:2014/06/24 16:19

No1です



書き忘れましたが、ユーザー側でファイル名に全角の空白とか入っているとエラーになるので、一応テストしてマクロ有効なのにエラーになる場合は、ファイル名や階層が深いところにあるとかパス名も確認してみてください。
    • good
    • 0

こんにちは。



>そんなことを考えるだけ時間の無駄(本末転倒)の気がしないでもないですが
無駄ではないのですが、掲示板では、その質問はタブーですね。

>ユーザが使ってるExcelでマクロが有効なのか無効なのかを判断する方法ってあるんでしょうか?
>※ Excel開いて設定確認するんではなくて他のプログラムなどで知る方法があるか

あります。
もう何年も前になりますが、Micorosoft 自身が、それを図らずも明らかにしてしまったのです。
VBAの上級者なら、知っている人もいるでしょうけれども、VBAを勉強を深めていったら、いずれ知ることになるでしょう。たぶん、外部プログラムで、よほどあからさまでなければ、やってみたことはありませんが、アンチウィルスには掛からないと思います。

>他のプログラムからExcelでそのファイルを開き一定時間内にファイルが作成されなかったら
>マクロ無効になってるといった形でできるかな

ご質問者さんの想像の範囲にはありませんが、それは、セキュリティの切り替えも可能ですから、マクロを無効にしてあっても、マクロを有効にしてウィルスを放り込み、複製を作らせるというマクロ・ウィルスが可能になってしまいます。したがって、少なくとも、私は、この解答はできないのです。
    • good
    • 0
この回答へのお礼

>あります。
>もう何年も前になりますが、Micorosoft 自身が、それを図らずも明らかにしてしまったのです
一応あるんですか。

>VBAを勉強を深めていったら
実際どこまでやるか定かではありませんが現在事前調査をしている段階です
Cなどのプログラム経験はありますがVBA作成についても実質数時間絵ベルの人間です

>マクロを有効にしてウィルスを放り込み、
>複製を作らせるというマクロ・ウィルスが可能になってしまいます。
私自身はあくまで設定状態を確認したいだけなんですが
回答容姿次第では確かにそういった面はあるかもしれませんね(
(読めるなら書き込みもできるだろ といった意味で)

個人的にはマクロ動かす前提でそのファイル使うので
そんな対処ぐらいできるのが当然と考えてはいますが
(だからこんなこと考えてるだけ時間の無駄かな と)
もし何か南端にできるようなものであれば考えてもいいかなと思った次第です

回答ありがとうございました

お礼日時:2014/06/24 13:18

判断するほうのファイルに記載するマクロ


Sub Example1()
MsgBox Application.Run("ユーザーファイル.xlsm!Example2")
End Sub

ユーザーファイルに記載するマクロ
Function Example2() As String
Example2 = "有効"
End Function

で、いいと思います。ユーザー側でマクロが有効だとメッセージが表示されますが、有効じゃないとエラーになりますのでそれで判断できるでしょう。

ただし、LAN内で使えるかどうかは私にはテストできないので不明です。
    • good
    • 0
この回答へのお礼

マクロ触った時間が実質数時間程度の知識なので何か勘違いしてるのかもしれませんが
これって私が漠然と館府が得てる方法と何か明らかな違いがあるんでしょうか?

・スクリプト記載のファイル開から動作を確認しようとしてるのは同じ
・わざわざファイルを分割する意味がよくわからない
  有効じゃないとエラーになります  とありますが 無効状態なら
  初めから何も表示されませんよね?
    エクセル上でのメッセージ表示などではなく
    外部からどういった状態になってるか確認できる手法がないかを模索しています

という状態であまりメリット感じないんですが何か勘違いしてますか?

回答ありがとうございました

お礼日時:2014/06/24 13:05

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!