• ベストアンサー

Excelファイルで作成したものを配布する際の対応策

現在、Excelのマクロ及びVBAで作成したツールを第三者へ配布する事を予定しています。 その際に、VBA及びマクロを表示、改ざんできないように制御したいと思い、以下のような事ができないか考えています。 * 1: メニューバー上のメニューを最低限必要なものだけを表示 2: 1がNGの場合 メニューバー上のメニューを非表示 3: ツールバーの非表示 * 4: ショートカットキーの動作の制御(ショートカットキーで操作してもらいたくない) * 5:タイトルバー上の文字列も出来れば任意に変更したい。 * 6: AUTO_OPENで指定したモジュールを必ず実行されることは出来るのか? (SHIFTキーを押しながらのOpenやモジュールの無効とされても組んだ処理以外のことが出来なければOK) 7: マクロ、モジュール、ワークシートの保護 という事を行いたいと思っています。 特に、今わかならないのが 1:/4:/5:/6:(先頭に*を付けてます)なのですが Excelで制御可能なのでしょうか? また、こういったレベルについて記載のあるExcel関連書やサイトなどお奨めがあったら教えていただけると助かります。 VBA自体は数年前にAccessでやっただけで浦島太郎だし、ExcelとAccessで勝手が違うし・・・と苦戦しています。 お手間かけますがよろしくお願いいたします!!

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

  • ベストアンサー
  • marbin
  • ベストアンサー率27% (636/2290)
回答No.2

質問とは直接は関係ないかもしれませんが、↓もご一読ください。 参考になると思います。 配布の問題 http://www.asahi-net.or.jp/~ef2o-inue/haifu/sub06_010.html

utatau
質問者

お礼

情報ありがとうございます。参考になります。 ありがとうございました!

その他の回答 (5)

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

こんにちは。#5のWendy02です。 >Excelにこだわって(というかExcelでやるしかないと思い込んで)ました。 #5で書いたのは、私のある意味ボヤキです。Excel VBAプログラムというのは、かなり制限された状態の中で、物事を組み立てているわけで、VBAプログラマーには、プロが育ちにくい環境であることは言うまでもありません。Excelの回答をしている「専門家」と称する人が、必ずしも、Excel VBAプログラマーとして、職が成り立っているわけでもなく、VBが分かれば、Excelでも分かるだろう程度の人がほとんどではないか、と想像するのです。 「たかが、Excel」なんですが、逆に、VB の本格的な言語に移って製作したほうが、どれほど自由なのか分かりません。実際、VBからSpreadSheet Control を組み合わせて、特化した機能を使ったほうが楽なのです。私が、Developer や VSTO について必要性を求めないのは、しょせん、それを使っても、Excelのアドインと何も変わらないというか、単に、コンパイルした分だけ、ソースのセキュリティが守られる程度に過ぎないと思っているのです。 Excel Application の恩恵は受けながらも、一方では、不必要な機能が多すぎて、アプリケーション化には、その他の機能の負担が大きすぎるわけです。

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

こんばんは。 基本的には、私などは手を出さない部類です。私個人で使用するものには、そういうものは行っていますが、他人に配布するものには、そういう思い切ったものというのは出せません。よほど、身近な人でないと、そういうものは提供できないのです。 1~6のリクエストの内容は、ショートカットキーは、主要なものに限りますが、それ以外は概ね可能です。 経験的に、他人の配布したものを使って、不快な思いをさせられたことが何度かあるわけで、ここの掲示板でも、Excelブックのマクロのフリーソフトウェアのトラブルで相談で、私が「それは作った人が悪い」と断言してしまうぐらいなわけで、逆に、こちらとしても、だんだん、思い切りが出来なくなるのです。 Access とは違って、Excelというものは、多数のブックを開けますから、しょせん、ワン・オブ・ゼムで、ブックを作るしかないわけです。ユーザーに、そのブックだけを占有させ使用させるというようには行かないし、強制させることも、なかなか難しいものがあります。 他に影響を与えないようにし、本体(Application)に、それ痕跡を残さないようにする、というのが、私のマクロのマナーにしています。つまり、「立鳥後を濁さず(ブックをクローズした時には何もなかったようにする)」っていうようなことだと思うのです。(ただし、内部的には iniファイルを書き込んだりレジストリを操作したりすることは、場合によってはあります。) その点で、アドインがよいのですが、「アドイン配布」というのも、それはそれなりの責任がないと、人に迷惑を掛けてしまうわけで、アドイン配布の原則は、「人に提供する最低限の機能」ということ、になるのかと思うのです。ヘルプファイルを含めて、アドインはアドイン内で処理させるというのが、一つのマナーだと思います。このレベルになると、Developer の知識が必要だと思います。ただし、今更、Developer を購入したり、VSTOを最初から勉強というのでは気が遠くなるほど、先の話になってしまいますし、これらは、それほどに有用ではありませんが、知識として必要になる部分があります。(ヘルプ作成ツールなどは、フリーで手に入ります。) それから、マクロのセキュリティを上げた場合、という問題がありますが、一つは、「デジタル署名」を入れることですが、それ以上の証明書である、CA証明は、私など個人では、とてもコストが合いませんので、セキュリティを「高」にした場合は、利益供給をしない、という方法で立ち向かうしかありません。 それ以上に、マクロ使用可能状態でないと、主要シートを開かない、という仕組みも作ったことがありますが、大真面目に配布ブックに組み込むというのには、チュウチョがあります。今後、アドインとして、Excelブックと、マクロファイルと分離していく、という方向性がつよいです。 せめて、*を全部分かるレベルの方が、それを行おうとして、どうしたらよいものだろうか、というご質問なら、まだ良いのですが・・・。

utatau
質問者

お礼

ご回答ありがとうございます。 Excelファイル自体は、提携拠点のような箇所への配布を考えています。 同一社内のようにフランクでもなく、かといって全く連絡が取れない場所ではないところへの配布であり、内容を変更された場合のリスクを回避したい為に、ある程度のアプリケーション化をして配布できればというのが最初の発想でした。 また、既に、ある程度完成に近いExcelで作成した物に手を加えるというのが命題でしたので、Excelにこだわって(というかExcelでやるしかないと思い込んで)ました。 Accessとは違い、アプリケーション化にする為にはExcelだけでというのには限界がありそうですね。いくら、Excelの環境を元に戻す処理を入れたとしても強制終了などのケースも考慮しないといけないでしょうし。 Excel1ファイルだけで!という点にこだわっていること自体をクリアにして、もう一度考え直したいと思います。 皆様の回答で、気づかせていただきました。 とともに恥ずかしい質問をしてしまったのだなぁと反省です・・・。 色んな意味で思い込みはいけませんね。 皆様、本当にありがとうございました。

  • hana-hana3
  • ベストアンサー率31% (4940/15541)
回答No.4

>その際に、VBA及びマクロを表示、改ざんできないように制御したいと思い これだけなら、VBAのプロジェクトにパスワードを掛ける事が出来るので、閲覧も編集もできないようにロックできます。 1~4のような事を行いたいなら、状態(設定)を保存して確実に戻す事が可能な方法で行う事です。 (万一復元が出来なかった場合のサポートも確実に行えるだけのスキルも必要でしょう) 他の方も書かれていますが、そのまま終了してしまうと環境を手動で戻す事は大変(不可能)になります。 トラブルで強制終了になる場合もあるので、必要なメニューの追加程度にとどめるべきかと思います。 6については勉強してください。Auto_Open は、起動方法によってはキャンセル可能(実行されません)です。 >こういったレベルについて記載のあるExcel関連書やサイトなどお奨めがあったら ネット検索すれば主要なサイトはすぐに見つかります。 すでに参考になる良いサイトが紹介されいますね。 殆どの必要な情報が見つかるはずですから、サイトの内容をじっくりとお読みになるのが一番かと思います。 どのような物を作成しているのか解らないのですが、シートを使わない(見せない)で済むものなら、フォームだけを表示させる事も可能です。 この場合、他のソフトで作ったオリジナルのプログラムのように見せる事も可能です。 配布を考えての改変等の対策も必要ですが、「ユーザー」の事を考えないと一方的な作業を押しつけるプログラムにしかなりませんよ。 どういった使い方がされるのかを考えて、ユーザーの使い勝手を向上させるように考えていかないと、「必要な対策」が見えなくなってしまいます。

utatau
質問者

お礼

ご回答ありがとうございます。 皆様にご回答いただいて、Excelファイルでという選択肢が正しいのかどうか 今一度考察してみないといけないことを痛感しています。 ありがとうございました。

  • papayuka
  • ベストアンサー率45% (1388/3066)
回答No.3

シェアウェア? 個人的にはユーザーの環境を大きく改変するような仕様は好きではありません。 実装する場合は、実行後に環境を戻すために細心の注意が必要だと思います。 参考までに下記マクロを実行するとシート表示のみでメニューもツールバーもタイトルバーも見えなくなり、右クリックも効かなくなります。 間違ってこの状態で Excelを終了させてしまうと一般ユーザーさんは結構大変です。 戻すには ALT + F11 でVBEを起動してもう一度同じマクロを実行します。 *** 下記マクロを試す場合は「自己責任」で!! *** Sub 実行注意() Dim cmb As CommandBar  With Application   .ScreenUpdating = False   .DisplayFullScreen = Not .DisplayFullScreen     For Each cmb In .CommandBars       cmb.Enabled = Not cmb.Enabled     Next cmb  End With End Sub マクロ無効時対策として下記のような仕様を使った事があります。 どのレベルまで有効か解りませんが、一般的なユーザーであれば問題無いと思っています。 1)マクロ無効時に前面に表示するシートのみを残して、他のシートは非表示にする 2)Bookを保護(もちろんパスワード付きで) 3)Workbooks_Open(Auto_Openでも可)でパスワード入力を要求しOKの場合は VBAでBook保護を解除しマクロ無効時シートと他シートの表示・非表示を入れ替える。 4)パスワードが合わない場合は何度もパスワード入力を要求し、キャンセルした場合は Bookを閉じる。

utatau
質問者

お礼

ご回答ありがとうございます。 すべて非表示にする事は可能なのですね。 ただ、ご指摘のどおり、Excelのデフォルト環境を変えたままでの終了がありえるという所を考えていかないといけませんね。 やはりExcelだけで考えるのは難しいのかな・・・。

  • vivasabo
  • ベストアンサー率27% (18/65)
回答No.1

エクセルファイルのアイコン上で右クリックでプロパティ、そして読み取り専用をチェックするのじゃ駄目なんですか?1番とか4番は相手のPC次第なんで無理だと思います。

utatau
質問者

補足

さっそくのご回答ありがとうございます。 配布先が第三者なので、だれでも任意に変更可能なファイル属性の変更ではファ イル内容の保護は難しいのではと考えています。 1:はAccessでは出来ていたように思うのですが(古い知識でボケています)Excelでは出来ないのでしょうか・・・。 引き続き何か情報がありましたら、よろしくお願い致します。

関連するQ&A