• ベストアンサー

エクセル VBAを有効にしないと開けない方法

いつもお世話になっております。 できるかどうかさえ全く?なのですが、 マクロを有効にしないとエクセルブックを開けない方法ってございますか? このようなことをしたい理由は、限られたユーザーのみ開けるようにしたいのですが、パスワードを設定してしまうと他のマクロでこのブックを参照のため頻繁に開くため、そのたびにパスワードを入力しなくてはいけなくなり手間?なので、下記のようにIDを取り、登録されていないユーザーはCloseしてしまうマクロを組もうと思っております。 (もしかしたら、発想自体が間違いかもしれませんので、その場合はご指摘を。) 'ユーザ情報 Type UserInfo windowsId As String End Type '共通変数宣言 Global gUserInfoObj As UserInfo Sub Auto_Open() On Error Resume Next gUserInfoObj.windowsId = GetMyUserName() ・・・・・・ End Sub よろしくお願いいたします。

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

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

私の知るかぎりでは、パスワード以外は無いと思います マクロからパスワードの入力もできるので 最初のみパスワードの入力をしてもらい、それを変数に取り込み 2回目からの参照は変数を使用しBOOKを開けばよいのでは Workbooks.Open Filename:="aaa.XLS", Password:="abc", WriteResPassword:="efg"

TENSAW
質問者

お礼

hige_082さん、 お返事ありがとうございました。 これ応用させていただきます。 今後ともよろしくお願いいたします。

その他の回答 (1)

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

こんにちは。 >マクロを有効にしないとエクセルブックを開けない方法ってございますか? これに関しては、こうした掲示板では書くことはできません。(自主的に) 理由は、マクロウィルスに関係するからです。しかし、ヒントとしては、通常、マクロ入りブックというものは、ユーザーフォルダに入れたものを対象として、チェックが働くことで、他のフォルダーの \Application Data\Microsoft\Excel\XLStart や Program Files の \Microsoft Office\ に対しては、ツール--マクロ--セキュリティ-信頼する発行元で、組み込み済みのアドインやテンプレートを「信頼する」という設定がされているはずです。それらは、マクロが動きます。 もうひとつの方法としては、Resistry のモニタープログラムを置いて、そのセキュリティの変化によって、該当 Resistry の位置を知ることが可能です。総じていえることは、大したセキュリティではないので、とても、こういう設定では、ウィルス自体を防ぐことは不可能だということが同時にわかるはずです。 他の方法としては、ブックから、別のブックをマクロで開ける方法を取るということが考えられます。マクロが設定されていないなら、別のブックを開けることはできません。しかし、これは、WScript 辺りでも、可能なことです。

TENSAW
質問者

お礼

Wendy02さん、 いつもありがとうございます。 これはちょっと私にはハードルが高いです。。。 >別のブックをマクロで開ける方法 これは実は試してみたんですが、マクロで開かれたBook名で検索をかけたり、名前を付けて保存とかされてしまうと、Directoryがばれてしまって(もしかして私は上記のことを勘違いしてますか?)。 もう少し勉強します。 またよろしくお願いいたします。

関連するQ&A