入力中の回答があります。ページを離れますか?※ページを離れると、回答が消えてしまいますページを離れるA回答を続ける入力中のお礼があります。現在、Excelのマクロ及びVBAで作成したツールを第三者へ配布する事を予定しています。その際に、VBA及びマクロを表示、改ざんできないように制御したいと思い、以下のような事ができないか考えています。5:タイトルバー上の文字列も出来れば任意に変更したい。マクロ、モジュール、ワークシートの保護という事を行いたいと思っています。Excelで制御可能なのでしょうか?また、こういったレベルについて記載のあるExcel関連書やサイトなどお奨めがあったら教えていただけると助かります。VBA自体は数年前にAccessでやっただけで浦島太郎だし、ExcelとAccessで勝手が違うし・・・と苦戦しています。お手間かけますがよろしくお願いいたします!!通報するこの質問への回答は締め切られました。解除」に関するQ&A:Excelの特定ファイルのみ、読み取り専用モードが解除できません。20:03質問とは直接は関係ないかもしれませんが、↓もご一読ください。参考になると思います。情報ありがとうございます。14:39こんにちは。#5のWendy02です。>Excelにこだわって(というかExcelでやるしかないと思い込んで)ました。#5で書いたのは、私のある意味ボヤキです。VBAプログラムというのは、かなり制限された状態の中で、物事を組み立てているわけで、VBAプログラマーには、プロが育ちにくい環境であることは言うまでもありません。VBAプログラマーとして、職が成り立っているわけでもなく、VBが分かれば、Excelでも分かるだろう程度の人がほとんどではないか、と想像するのです。本格的な言語に移って製作したほうが、どれほど自由なのか分かりません。組み合わせて、特化した機能を使ったほうが楽なのです。ついて必要性を求めないのは、しょせん、それを使っても、Excelのアドインと何も変わらないというか、単に、コンパイルした分だけ、ソースのセキュリティが守られる程度に過ぎないと思っているのです。恩恵は受けながらも、一方では、不必要な機能が多すぎて、アプリケーション化には、その他の機能の負担が大きすぎるわけです。01:08こんばんは。基本的には、私などは手を出さない部類です。私個人で使用するものには、そういうものは行っていますが、他人に配布するものには、そういう思い切ったものというのは出せません。身近な人でないと、そういうものは提供できないのです。1~6のリクエストの内容は、ショートカットキーは、主要なものに限りますが、それ以外は概ね可能です。経験的に、他人の配布したものを使って、不快な思いをさせられたことが何度かあるわけで、ここの掲示板でも、Excelブックのマクロのフリーソフトウェアのトラブルで相談で、私が「それは作った人が悪い」と断言してしまうぐらいなわけで、逆に、こちらとしても、だんだん、思い切りが出来なくなるのです。違って、Excelというものは、多数のブックを開けますから、しょせん、ワン・オブ・ゼムで、ブックを作るしかないわけです。ユーザーに、そのブックだけを占有させ使用させるというようには行かないし、強制させることも、なかなか難しいものがあります。他に影響を与えないようにし、本体(Application)に、それ痕跡を残さないようにする、というのが、私のマクロのマナーにしています。「立鳥後を濁さず(ブックをクローズした時には何もなかったようにする)」っていうようなことだと思うのです。iniファイルを書き込んだりレジストリを操作したりすることは、場合によってはあります。)その点で、アドインがよいのですが、「アドイン配布」というのも、それはそれなりの責任がないと、人に迷惑を掛けてしまうわけで、アドイン配布の原則は、「人に提供する最低限の機能」ということ、になるのかと思うのです。ヘルプファイルを含めて、アドインはアドイン内で処理させるというのが、一つのマナーだと思います。知識が必要だと思います。購入したり、VSTOを最初から勉強というのでは気が遠くなるほど、先の話になってしまいますし、これらは、それほどに有用ではありませんが、知識として必要になる部分があります。(ヘルプ作成ツールなどは、フリーで手に入ります。)それから、マクロのセキュリティを上げた場合、という問題がありますが、一つは、「デジタル署名」を入れることですが、それ以上の証明書である、CA証明は、私など個人では、とてもコストが合いませんので、セキュリティを「高」にした場合は、利益供給をしない、という方法で立ち向かうしかありません。それ以上に、マクロ使用可能状態でないと、主要シートを開かない、という仕組みも作ったことがありますが、大真面目に配布ブックに組み込むというのには、チュウチョがあります。今後、アドインとして、Excelブックと、マクロファイルと分離していく、という方向性がつよいです。*を全部分かるレベルの方が、それを行おうとして、どうしたらよいものだろうか、というご質問なら、まだ良いのですが・・・。通報するこの回答へのお礼ご回答ありがとうございます。Excelファイル自体は、提携拠点のような箇所への配布を考えています。同一社内のようにフランクでもなく、かといって全く連絡が取れない場所ではないところへの配布であり、内容を変更された場合のリスクを回避したい為に、ある程度のアプリケーション化をして配布できればというのが最初の発想でした。ある程度完成に近いExcelで作成した物に手を加えるというのが命題でしたので、Excelにこだわって(というかExcelでやるしかないと思い込んで)ました。Accessとは違い、アプリケーション化にする為にはExcelだけでというのには限界がありそうですね。いくら、Excelの環境を元に戻す処理を入れたとしても強制終了などのケースも考慮しないといけないでしょうし。Excel1ファイルだけで!という点にこだわっていること自体をクリアにして、もう一度考え直したいと思います。皆様の回答で、気づかせていただきました。ともに恥ずかしい質問をしてしまったのだなぁと反省です・・・。色んな意味で思い込みはいけませんね。皆様、本当にありがとうございました。23:37>その際に、VBA及びマクロを表示、改ざんできないように制御したいと思いこれだけなら、VBAのプロジェクトにパスワードを掛ける事が出来るので、閲覧も編集もできないようにロックできます。1~4のような事を行いたいなら、状態(設定)を保存して確実に戻す事が可能な方法で行う事です。(万一復元が出来なかった場合のサポートも確実に行えるだけのスキルも必要でしょう)他の方も書かれていますが、そのまま終了してしまうと環境を手動で戻す事は大変(不可能)になります。トラブルで強制終了になる場合もあるので、必要なメニューの追加程度にとどめるべきかと思います。6については勉強してください。起動方法によってはキャンセル可能(実行されません)です。>こういったレベルについて記載のあるExcel関連書やサイトなどお奨めがあったらネット検索すれば主要なサイトはすぐに見つかります。参考になる良いサイトが紹介されいますね。殆どの必要な情報が見つかるはずですから、サイトの内容をじっくりとお読みになるのが一番かと思います。どのような物を作成しているのか解らないのですが、シートを使わない(見せない)で済むものなら、フォームだけを表示させる事も可能です。この場合、他のソフトで作ったオリジナルのプログラムのように見せる事も可能です。配布を考えての改変等の対策も必要ですが、「ユーザー」の事を考えないと一方的な作業を押しつけるプログラムにしかなりませんよ。いった使い方がされるのかを考えて、ユーザーの使い勝手を向上させるように考えていかないと、「必要な対策」が見えなくなってしまいます。通報するこの回答へのお礼ご回答ありがとうございます。皆様にご回答いただいて、Excelファイルでという選択肢が正しいのかどうか今一度考察してみないといけないことを痛感しています。ありがとうございました。22:45シェアウェア?個人的にはユーザーの環境を大きく改変するような仕様は好きではありません。実装する場合は、実行後に環境を戻すために細心の注意が必要だと思います。参考までに下記マクロを実行するとシート表示のみでメニューもツールバーもタイトルバーも見えなくなり、右クリックも効かなくなります。Excelを終了させてしまうと一般ユーザーさんは結構大変です。VBEを起動してもう一度同じマクロを実行します。Subマクロ無効時対策として下記のような仕様を使った事があります。どのレベルまで有効か解りませんが、一般的なユーザーであれば問題無いと思っています。VBAでBook保護を解除しマクロ無効時シートと他シートの表示・非表示を入れ替える。通報するこの回答へのお礼ご回答ありがとうございます。すべて非表示にする事は可能なのですね。ご指摘のどおり、Excelのデフォルト環境を変えたままでの終了がありえるという所を考えていかないといけませんね。Excelだけで考えるのは難しいのかな・・・。18:38エクセルファイルのアイコン上で右クリックでプロパティ、そして読み取り専用をチェックするのじゃ駄目なんですか?1番とか4番は相手のPC次第なんで無理だと思います。この回答への補足さっそくのご回答ありがとうございます。配布先が第三者なので、だれでも任意に変更可能なファイル属性の変更ではファイル内容の保護は難しいのではと考えています。1:はAccessでは出来ていたように思うのですが(古い知識でボケています)Excelでは出来ないのでしょうか・・・。引き続き何か情報がありましたら、よろしくお願い致します。対策」に関するQ&A:Win7の起動含め動きが極端に遅いです。ツール」に関するQ&A:ミドルウエアの具体例を教えてください。VBA」に関するQ&A:〔VBA・マクロ〕EXCELからACCESSデータをひっぱるには?お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!全カテゴリから検索このカテゴリから検索Q質問する(無料)このQ&Aを見た人はこんなQ&Aも見ています大人のためのおしりトラブル座談会【PR】おしりの悩みといえば、痔を思い浮かべる方も多いのではないでしょうか。今回は、おしりトラブルに悩む女性3人が集まり座談会を開催しました。Basic(VBA)5エクセルでマクロを別のPCで利用するにはExcel(エクセル)6VBAでエクセルシートを更新(リフレッシュ)する方法を教えて下さい。VBA】ネットワーク上の共有フォルダにあるExcelを開くExcel(エクセル)9worksheetクラスのcopyメソッドが失敗しました。Basic(VBA)大人のためのおしりトラブル座談会【PR】おしりの悩みといえば、痔を思い浮かべる方も多いのではないでしょうか。今回は、おしりトラブルに悩む女性3人が集まり座談会を開催しました。Basic(VBA)5エクセルでマクロを別のPCで利用するにはExcel(エクセル)6VBAでエクセルシートを更新(リフレッシュ)する方法を教えて下さい。VBA】ネットワーク上の共有フォルダにあるExcelを開くExcel(エクセル)9worksheetクラスのcopyメソッドが失敗しました。【EXCEL】チェックボックスの作り方及び、同ボックスの文字の編集の仕方を教えて下さい。EXCELのある列にある、決まった値の個数の合計及びその行の他の列の数値の合計。回答数ランキングです。職業ビジネスアドバイザーこの専門家の回答をチェック他の専門家の回答をチェックこのQ&Aを見た人が検索しているワードエクセルExcelマクロファイル方法このQ&Aと関連する良く見られている質問Qエクセルで個人用マクロの配布方法このたびわたしが作成した業務用の簡単なマクロを社内の他部門(遠隔地)の10名ほどのかたがたにメールで配布して使っていただくことになりました。自分では個人用マクロブックに登録し、任意のエクセルのシートに対して使用していたものです。一応そのマクロだけをエクスポートしてModule1.basというファイルは作ったのですが、これまでマクロそのものを配布したことがないので送った先の人にどうインポート方法を説明したらよいのかわかりません。マクロはよく知らないひとたちのはずです。いい説明方法があれば教えてください。成功しました!!他の端末へのインストールも出来ました。?ええ、最初から修正やバージョンアップはあるものとして、考慮してましたから、その手順で大丈夫ですよ。ない状態でメニューをクリックすることも、あり得るってことです。この場合、エラーの発生が予想されますね。画面がでてきたら、初心者の方はビックリしてしまうでしょう。プロジェクトも保護しておいた方が良いでしょう。プロジェクトのプロパティー]から行います。Subのようにコードの冒頭に書き込みます。ステートメントも必要があれば使います。使ってトラップします。使えない関数になります。この辺は、場数を積めば勘処が養えるので、無理に今全部やる必要はありません。エラーが発生したときに困ったら、読み返してみて下さい。rngTarget(rngTarget.Count).Rowの方が良いと思います。ついてこれは、前回のご質問のやつですよね。そちらに手が回らず、済みません。アドイン化、、大変だったと思いますが、いろいろやってみて下さい。自分にとって都合がよく便利で、自分だけのツールが作れますよ。あ、慣れてきたら、アドインの名前はもっとセンスのいいヤツに変えて下さいね。成功しました!!他の端末へのインストールも出来ました。?ええ、最初から修正やバージョンアップはあるものとして、考慮してましたから、その手順で大丈夫ですよ。ない状態でメニューをクリックすることも、あり得るってこと...続きを読む他の回答も見るQExcelを配布するときの注意点などVBAを使ったExcelのデータ表をブログで配布しようと思っているのですが、何か注意点はありますか?消しておいた方が良いデータがあるなどなど。よろしければアドバイスよろしくお願いします。別ブックから該当データを検索し、必要なデータを取得する方法について部品表というブックがありますA列に商品名、B列に商品番号が入力してあります。C列のコードは未入力です。R-134256また、コード一覧表という別のブックには、A列に商品番号と、B列にコードが、何千件も入力されています。やりたいことは部品表のC列のコード欄に、コード一覧表ブックから商品番号と一致するコードを貼り付けしたいのです。部品表は、何百種類もありますので、関数ではなく、マクロで処理を希望します。xlAndと、してみたものの、検索しても、その検索結果の隣のセルのコードをどうやって取得すればいいのかが、わかりませんでした。基本事項は本で学びましたが、呪文のようなコードはよく理解できません。懸命にネットで検索して、訳して理解する努力をしてはいますが。部品表というブックがありますA列に商品名、B列に商品番号が入力してあります。C列のコードは未入力です。R-134256また、コード一覧表という別のブックには、A列に商品番号と、B列にコードが、何千件も入力されています。やりたいことは部品表のC列のコード欄に、コード一覧表ブックから商品番号と一致するコードを貼り付けしたいのです。部品表は、何百種類もありますので、関数...続きを読むAベストアンサーこんにちは。実用性も踏まえました。メインの動作はワークシート関数のVLOOKUPをVBA上で使用していますので理解はしやすいかと思います。質問文から察するに「部品表.xls」と「コード一覧表.xls」の両方を開いて処理されていますが「コード一覧表.xls」はプログラム内で開いて閉じているので実行するときは「コード一覧表.xls」は閉じて置いてください。実用性も踏まえました。メインの動作はワークシート関数のVLOOKUPをVBA上で使用していますので理解はしやすいかと思います。質問文から察するに「部品表.xls」と「コード一覧表.xls」の両方を開いて処理されていますが「コード一覧表.xls」はプログラム内で開いて閉じているので実行するときは「コード一覧表.xls」は閉じて置いてください。VBAで業務を簡素化するために、現在開いているブックのファイル名を取得する方法が分かりません。作業手順をマクロを使って処理していますが、オリジナルのワークブックをファイル名を変えて保存し、以後、このワークブックを読み込んで使用しています。このときのVBAは、オリジナルのファイル名を使っているため、ファイル名を変更するとエラーになり、以後の業務に使用できません。常にファイル名を取得出来るVBAをどなたか、教えて下さい。操作対象になっているブックの名前はActiveWorkbook.Nameですね。>VBAは、オリジナルのファイル名を使っているため、ファイル名を変更するとエラーになりというような文脈からすると、ThisWorkbook.Nameの方ですかね。他のフォルダーにあるEXCELの項目の内容を取り込みたいです。他のフォルダーのEXCELのRange("A2:A3").ValueをメインプログラムのRange("C2:C3").Valueにセットしたい時です。・コマンドボタン押したら、どこのEXCELから取り込むかのポップアップ(?)は、表示はできてます。・作業者が選んだパスとブックもMsgBoxで表示できてるので、もらう相手の場所も取得できてます。・となると次はOPEN,INPUTですか?テキストデータの取り込みですと、Inputでそのバッファを定義してるのですが、なんか違うような。Nothing私がやる方法です。SubここでDMNの値を四捨五入したいです。これとは別に切上げ、切捨ても教えていただけるとありがたいです。引数で、対象桁を変更できます。ユーザーフォームを閉じるユーザーフォームを開く時はUserForm1.Showですが閉じる時は?UserForm1.Closeだとコンパイルエラーになります。ユーザーフォームを閉じることができます。最初にメニュー画面となるブックを開いた後、データブックをバックグランドのみで開きたいのですが、エクセルVBAで単純にOPENを行うと画面上にデータブックが表示されてしまいます。操作作業者に画面が次々入れ替わることを見せたくないのですが、ブックをバックグラウンドだけで開く方法はあるのでしょうか。VBAについては素人で宜しくお願いします。Aベストアンサーごめんなさい。解決済みと思って見ていませんでした。?後で開いた3つのブックは、VBAで操作しないのですか。一応何処でどのように使うのか判りませんので・・・こんな感じで如何でしょうか。ブックを開いてから非表示にするまでの瞬時の画面のことですね。