• ベストアンサー

ExcelVBAでパスワードを記録しておく方法

お世話になります。 VBAでパスワードを必要とするマクロを作りたいのですが、マクロを組み込んだブックを開いてメッセージボックスや特定のセルにパスワードを入力させそのパスワードを複数のプロシージャ(SubやFunction)で使いたいと考えています。 ブックを開いている間だけパスワードを保存しておきたいのですがどのような方法がありますでしょうか?

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

  • ベストアンサー
  • ham_kamo
  • ベストアンサー率55% (659/1197)
回答No.1

標準モジュールに、 Public Password As String と宣言しておいて、 ThisWorkBookに、 Private Sub Workbook_Open()   Password = InputBox("パスワードを入力してください。") End Sub としておけば、起動時にパスワードの入力を求められ、グローバル変数のPasswordに格納されるので、どこのマクロからも参照できます。

1percent
質問者

お礼

お礼が遅くなってもうしわけありません。 簡単なコードで確認してみましたができそうです。 ありがとうございました。

関連するQ&A

  • ExcelVBAで・・・

    お世話になります。 この度、ExcelVBAでデータベースシステムを作ることになりました。 そこで、ファイルにパスワードを設定するVBAを作成したいのですがどうやっていいのかわかりません。 手順として、 (1)初期パスワードを設定する(TextBoxに入力してもらう) (2)そのパスワードがないとファイルを見れないようにする。 なのですが、そのTextBoxに入力したパスワードをどこに保存?したら良いのかが良くわかりません。 セル内に入れておいても見られそうな気がして…。

  • セルから呼び出したプロシージャ内でセルの塗りつぶし

    初めて質問させていただきます 宜しくお願い致します セルから呼び出したプロシージャ内からセルの塗りつぶしを 実行しても塗りつぶしが有効になりません たとえば A1のセルに10を入力 B1のセルに=TEST(A1) と入力 マクロのモジュール内に Public Function TEST(tmp_No As Integer) As Integer TEST = tmp_No * 25 '(1)ここから If TEST = 250 Then    'Msgbox "チェック用MSG"    Cells(1, 1).Interior.ColorIndex = 38 End If '(2)ここまで End Function というファンクションプロシージャがあるとします 引数で10を持って行ってるので10×25で TESTが250になりB1には計算結果として 250と問題なく表示されています しかし (1)~(2)のセルの塗りつぶしは実行されません 仮にチェック用のメッセージボックスのコメント を外すとキチンとメッセージボックスは 表示されます また、塗りつぶしダケのマクロを作成し Public Sub cell_paint()    Cells(1, 1).Interior.ColorIndex = 38 End Sub 実行すると、これも問題なく動作しますので EXCELの設定ではないと判断しています セルから呼び出したプロシージャの時 だけ、動作しないようなのですが なぜでしょうか? 他の方法で回避可能でしょうか? ※実際には塗りつぶしの判定方法が  20個あり、条件付書式では対応出来ないので  マクロで処理を試みてます 宜しくお願い致します

  • 【EXCEL2007】 VBA(マクロ)の編集

    EXCEL初心者です。 マクロというものを最近知り、マクロ作成の練習をしているところです。 今こういったことで悩んでいます。 ■『「上書き保存しますか」というメッセージ』で「いいえ」が押された場合に、 『「保存する」という動作をしない(Exit sub)』というソースを 書きたいが、どのようにソースを作成すればいいのか。 ■現在こういった『VBA(マクロ)』を作成しています。 『(1)「B2」セルに文字を入力 (2)マクロ機能を登録した「ボタン」をクリック (3)「B2」セルに入力した名称で「新しいブックを作成」 (4)そのブック名称で指定先に「保存」する。』 今のところ、「マクロの記録」でそういうプログラムを作ること自体は勝手にできてくれました。 「B2」セルに「SampleSheet」と入力して、ボタンを押せば、 「SampleSheet」という「名称」で「新しいブックを作成」することはできています。 ■ですが、例えば「B2」セルに入れた名称が、『保存先にすでにあり』 「上書き保存しますか」というメッセージが出た場合、 上書き保存したくないので、「いいえ」ボタンを押すと 「エラーメッセージ」が出てしまいます。 そこで、 『「上書き保存しますか」というメッセージ』で「いいえ」が押された場合に、 『「保存する」という動作をしない、そのマクロ自体を終了する(Exit sub)』というソースを 書きたいんですが、どのようにソースを作成すればいいのかがわかりませんでした。 ■参考ソースをのせていただけると助かります。 ご回答、よろしくお願いします。

  • EXCELの保存にパスワード。

    エクセルでブックを保存する際に、パスワードを表示して、それがあっていないと上書き保存できないようにするにはどうしたらいいのでしょう。 また、マクロで「BeforSave」を使って、保存しようとしたら「はい。いいえ。」のメッセージを出し、「はい」ならそのまま保存、「いいえ」なら保存せずにブックに戻る、というようなことができますか。

  • ExcelVBA コードの実行について

    VBA勉強中の者です。早速ですが質問させて頂きます。 sheet1のA2セルをアクティブにした時、メッセージボックスに「ここはA2です」と表示させたく、 sheet1に以下のコードを記述しました。 Private Sub Worksheet_SelectionChange(ByVal Target As Range) If Target.Address = Range("A2").Address Then MsgBox "ここはA2です" End If End Sub VBEを開いた状態でsheet1のA2を選択したところ上手く動作したのですが、 この状態で▲マークの再生ボタン(sub/ユーザーフォームの実行)を押しても マクロ呼び出し画面が出てしまうだけで実行できません。 何故なのでしょうか? 目的の動作は「ブックを開いた」時からずっと有効にさせていたいのです。 どなたかご助力お願いいたします。

  • SubではなくFunctionで作られる理由

    access2007を使っています。 素朴な疑問なのですがマクロを変換した時はなぜ Subプロシージャーではなく、Functionなのでしょうか? 「クエリを開く」と言うマクロを、VBAに変換したところ ******************************************************* Function マクロ1() On Error GoTo マクロ1_Err DoCmd.OpenQuery "クエリ1", acViewNormal, acEdit マクロ1_Exit: Exit Function マクロ1_Err: MsgBox Error$ Resume マクロ1_Exit End Function ******************************************************* となりました。 戻り値や返り値はないものは、FunctionプロシージャーではなくSubプロシージャーで作るものと思っていたのですが なぜ上記のコードはFunctionなのでしょうか? Functionで作る理由を教えてください。 特に意味はないのでしょうか? ちなみにFunctionをSubに書き換えて実行したら問題なくクエリが開きました。

  • エクセル2003 パスワードでシートを振り分ける方法

    エクセル2003をXPで使用しています。 ひとつのブックに全部で11のシートがあります。 ブックを開くときにパスワードを求め、パスワードに応じて 開くシートを振り分けたいと考えています。 たとえば・・・ パスワード「AAA」を入力するとシート1だけが見えて、他は見えない パスワード「BBB」を入力するとシート2だけが見えて、他は見えない ・ ・ ・ パスワード「KKK」を入力するとすべてのシートが見える こんな感じですが、過去ログを見る限りVBAならできそうだと思うのですが、自分なりの改造ができなく、困っています。 うまく説明できないのですが ☆データが入っているシート数は、11。(各シート名はsheet1~sheet11) ☆表紙がわりのシートを別に1つ作る。(シート名はmain) ☆パスはsheet1がAAA、sheet2がBBB、以下つづいてsheet1がKKKとする。 ☆ブックを開くとき、マクロを有効にしないと何も表示されない。 ☆マクロを有効にしてブックを開くと、mainだけが開き、ユーザーフォームが表示。(ユーザーフォームはパスワート入力とOKボタンのみ。) ☆パスワードを入力してOKボタンを押すと、パスワードに応じたシートだけが表示される。 100%他力本願で申し訳ございませんが、この条件を満たすマクロを組めるかた、よろしくお願いします。

  • VBA コピー&ペースト

    次の作業をVBAでマクロを組みたいのですが、どのような構文にすればよいでしょうか。VBA初心者のため、お知恵を拝借させてください。 [目的] 1.ブックA(コピー先)に設定したハイパーリンク先のブックB(コピー元)へジャンプ 2.ブックBへジャンプ後、特定のセルの値をコピー 3.コピーした値をブックAの特定セルへペースト 4. 1.~3.の作業をリピート 対象は、上の作業が未完(ブックAのペースト先のセルがブランク)のもの [詳細] ・ブックB(リンク先)の保存先はサーバー ・リンク先はブックBの特定のシート ・ブックAで設定したハイパーリンクのセルの値がリンク先のシート名 ・ブックBは複数、リンク先のシートも複数(ハイパーリンクごとにリンク先が異なる) ・ブックBにはマクロが設定、開くたびにマクロ有効無効のメッセージ(Excel2003のため) ・コピペする項目は3つ ・ブックA,Bともに開いた状態で、2.~4.のリピートというマクロでも構いません。 以上ですが、他に情報が必要でしたらお申しつけください。 よろしくお願いいたします。

  • ExcelVBAをどのブックでも使う

    お世話になっています。 今回、いろんなブックで使っているシートを最新のデータに入れ替えるVBAを作りました。 これをどのExcelのファイルを開いたときにも動くようにしたいのです。 (入れ替えたいシートの検索なども入っている) 今は特定のブックの標準モジュールになっていて、ユーザ設定でコマンドボタンにしてありますが、他のブックでそのボタンを実行しても、当然特定のブックを開いて実行してしまいます。 これはどのように保存?したら他のブックでも使えるのでしょうか? 他のブックに標準モジュールを作って、すべてに入れていくしかないのでしょうか? ご存知の方がいらっしゃったら、ご教授ください。

  • マクロの記録で何も記録できない理由は?

    「ブックを開く」という動作が知りたかったので、 現在開いているブック1から、マクロの記録ボタンを押し、 デスクトップにあるブック2をダブルクリックして開きました。 しかし記録終了ボタンを押した後、 ブック1の標準モジュールを確認しても Sub Macro1() ' ' Macro1 Macro ' マクロ記録日 : 2009/10/16 ユーザー名 : ' End Sub と何も記録できていません。 何故でしょう? ちなみにブックを開く方法は http://officetanaka.net/excel/vba/file/file01.htm で確認できました。 なのでマクロの記録で記載されない理由を教えてください。 エクセル2003です。