• ベストアンサー

VBAを実行しないと開けないエクセルファイル

タイトルのようなエクセルファイルを作りたいです。 閲覧者がVBAの実行を認めない限り、閲覧不可にしたいのです。もし認めない場合はメッセージボックス等で「開くことができません」と表示され、エクセルが閉じるようにしたいです。 どのようなVBAのプログラムを組めば実行できますか?

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

  • ベストアンサー
  • emsuja
  • ベストアンサー率50% (1066/2117)
回答No.1

利用者が VBA の使用を認めないのだから VBA でそのような機能を組んでもメッセージボックスを出すことが出来ないのでは?

sirokuman
質問者

お礼

非常にわかりやすい回答をありがとうございます。 完全に見失っていました。

その他の回答 (2)

  • imogasi
  • ベストアンサー率27% (4737/17069)
回答No.3

なんか初心者の思い付きを、やりたいと主張しているようにしか見えない。 VBAは相当経験があるのか?色々VBAの本を読んだり、VBAコードを書いてやってみての質問か? ブックを開いたとき、何かVBAで(質問者が意図する)、利用が始まるに先立って、実行したい事項や処理があるなら(初期設定なども含めて)、(プロジェクトでThisWorkbookを選び、General(左)でWorkbookを選び、Declaration(右)でOpenを選んで、そこに)にVBAで記述する手もあるが、それではだめなのかな。 == まづ、文章で、目的と、やりたいことを記述できるようになるのが先だろう。

sirokuman
質問者

お礼

初心者ですよ。 まさか、経験者でなければ質問する権利がないとおっしゃいませんよね。

  • ballville
  • ベストアンサー率47% (233/487)
回答No.2

エクセルファイルはただのデータファイルですから、開くことを防ぐ手立てはありません。ユーザはVBAが動かないLibreOfficeなどのオフィスソフトでひらくかもしれませんし。ただ、暗号化するなどして開いても意味のないように設定することは可能です。 その際、VBAを実行しないユーザにメッセージを送るのですから、じかに、シートに書いておくしかないですね。 「このファイルを開くには、VBA実行を許可してください」と。 で、実際のシートのデータは 1)VBAプログラム中に書く 2)暗号化してシートのメーッセージ以外のところに書いておき、VBAで復号する 3)別途ファイルを用意(暗号化したもの)し、VBAで読み出し復号してシートに貼り付ける などの方法が考えられます。 と、方法は考えつきますがいずれも面倒くさくあまり生産的な試みとは思えません。そもそもなぜそのようなことをしたいのでしょう。

sirokuman
質問者

お礼

多少なりともファイルのセキュリティを上げる方法としてスクリーンキャプチャを認めないプログラムが有るらしく、それを実行したかったのですが、VBAを拒否されたら意味がない。 そのためにVBAを認めない限りファイルを開かないようにしたかったのですが、意味がなさそうです。

関連するQ&A