none
エクセル2010でVBAのパスワード保護されたブックを閉じると、VBA projectパスワードの入力が求められる。 RRS feed

  • 質問

  • はいめまして。Windows7 エクセル2010(Office2010)を使用しています。

    マクロコードをパスワード保護したブックに、Userformを幾つか作成してあります。ブックを開いた後、これら全てのUserFormを

    Showした後、Unloadしない場合があります。この時、ブックを閉じると、VBAprojectパスワードの入力ウィンドウが度々表示されて

    しまします。

    簡単に再現する例を下記いたします。

    1.新規マクロブックに、Userform1~UserFprm3までを3つ作成

    2.それぞれのUserFormにコマンドボタンを1つ配置し、そのコマンドボタンのコードは、Unload Userform○ (○には自身の番号)にします。

    3.そして標準モジュール1に、下記2つのプロシージャーを記載してあります。

    Option Explicit

    Sub test1()

    UserForm1.Show
    UserForm2.Show
    ThisWorkbook.Save

    End Sub

    Sub test2()

    If Workbooks.Count <= 1 Then
    Application.Quit
    ThisWorkbook.Close SaveChanges:=False
    Else
    ThisWorkbook.Close SaveChanges:=False
    End If

    End Sub

    Sub test3()

    UserForm3.Show

    End Sub

    4.シート1のどこかに、test1とtest2、test3のコマンド実行ボタンを用意します。

    6.マクロ保護のパスワードを設定し保存します。(仮に、aaa)

    5.test1→test2の実行では VBAproject パスワード入力の表示が度々発生します。test1→×ボタンでブックを閉じても発生します。

    ところが、tes1→test2→test3のように、UserFormを全てShowした後に、全てUnloadしてからブックを閉じた場合では発生しません。

    Excelアドインは(ソルバーアドイン、ユーロ通貨対応ツール、ラベル印刷ウィザード、分析ツール、分析ツールVBA)のレ点は外してあります。

    COMアドインには何もありません。どうしてVBAproject パスワード入力の表示がされてしまうのでしょうか。教えていただきたくお願いいたします。

    2015年7月10日 10:48

回答

  • osushigo さん、おはようございます。

    今から外出しますので、テストするのは14時以降になると思います。

    さて、お書きになった内容からの推測ですが、パスワード・マネージャーのようなソフトがインストールされていませんか?
    これは、逐一パスワードを入力しなくても済むように、各所で入力するパスワードを記憶しておき、当該の画面になれば自動的にパスワードが入力されるようなソフトです。
    ノートPCなどには最初からプリインストールされていたりします。

    取り急ぎ、リプライまで。
    • 編集済み Ashidacchi 2015年7月10日 23:25
    • 回答としてマーク osushigo 2015年7月11日 2:51
    2015年7月10日 23:23
  • Ashidacchiさん、本当にありがとうございます。

    症状の発生がなくなりました。

    教えていただきましたソフトはインストールされていませんでしたが、そのようにExcel以外のソフトに目を向け、無くても困らないものを1つ1つアンインストールしていきました。

    その結果、Dropbox というソフトのアンインストール後は、先のVBA保護パスワード付きのマクロブックを閉じた後、VBAprojectパスワード入力を求める表示は、再発していません。数十回試していますが、一度も症状が発生していません。

    UserFormがあり、VBA保護パスワードがされていて・・・というように、ある条件下で発生するような症状であったことから、Excelのマクロに問題が潜んでいると思っていたのですが、ご連絡いただいたヒントから解決できました。

    なぜDropboxが・・なのかは全然分かりませんが、Officeがしっかり利用できれば安心です。大事なヒントを教えていただき本当に助かりました。

    また何か質問させていただいた際は、どうぞよろしくお願いします。ありがとうございました。

    • 回答としてマーク osushigo 2015年7月11日 3:11
    2015年7月11日 3:10

すべての返信

  • osushigo さん、

    明日にでもお教えいただいた(記載されている)コードやフォームなどを作ってみたいと思いますが、コードだけを見た限りの質問があります。

    1) UserForm1.Show
        UserForm2.Show
        ThisWorkbook.Save
        となっていますが、どうして2つのフォームを表示した直後に Workbook を保存する必要があるのでしょうか?
      また、フォームは、右上の[×]やあなたが作るかもしれない[閉じる]ボタンで close するのが普通だと思いますが、
      フォームにはそんな機能(自分を close する機能)がないのでしょうか?

    2) If Workbooks.Count <= 1 Then
        Application.Quit
        ThisWorkbook.Close SaveChanges:=False
        Else
        ThisWorkbook.Close SaveChanges:=False
        End If
        となっていますが、他のブックが開いているかを調べている(ブックの数をかぞえている)理由は何でしょうか?
      コードではなく、文章で書かれている範囲で想像する限り、複数のブック/ファイルを意識する必要性が分かりません。

    パスワード入力が求められる原因は今のところ分かりませんが、それ以前の問題があるような気がします。もしかして、それらがパスワード入力が求められる遠因になっているのかなぁとも思います

    以上

    2015年7月10日 12:48
  • ご連絡ありがとうございます。もっとシンプルにしました。モジュール1には、下に記載しました2つのtest1とtest2のコードだけにしてみました。そして、UserForm1~UserForm3を作成してあります。それぞれのUserFormには、コマンドボタンを1つずつ配置しまして、それぞれのコマンドボタンのコードは、自身を閉じる Unload Meの記載にしました。

    VBAprojectパスワード保護をかけ、パスワードは、aaaにしています。

    シート1には、test1とtest2を実行する2つのボタンだけがあります。この状態でtest1の実行ボタンだけを押します。そうすると、UserForm1表示→コマンドボタンで閉じる→UserForm2→コマンドボタンで閉じる、となります。

    この後、通常のエクセルを閉じる操作をしてブックを閉じますと、VBAprojectパスワードの入力表示が、度々発生してしまいます。そして、このVBAprojectパスワード入力表示の症状は、ブックを閉じる際に、シート上部の上書き保存をクリック後に、シートの×ボタンで閉じても、上書き保存しないで、シートの×ボタンで閉じても、度々発生することに変わりがありません。

    そしてもう1つが、test1の実行後、test2のボタンを押し、UserForm3表示→コマンドボタンで閉じるまで実行した場合です。その後、同じようにブックを閉じる操作をしますと、今回新たな症状が確認できました。このtest2まで実行時(UserForm1~UserForm3までを表示してUnloadした場合)は、上書き保存しないで、シートの×ボタンで閉じると、その後に同じVBAprojectパスワード入力表示が、一瞬表示しかかり、勝手に消えるという症状が今回度々出ました。上書き保存して閉じた場合は、今は症状の発生はありません。

    よってUserFormとVBAのパスワード保護に関係はありそうですが、上記のtest2まで実行時のように、全てのUserFormを表示後にUnloadしても、『症状が出かかる場合がある』ことが今回わかりました。

    標準モジュールは、モジュール1だけです。その中身は下記の2つのプロシージャーだけとなっています。それ以外にマクロの記載は、UserForm1~UserForm3のコマンドボタン実行時の、Unload Meです。その他にマクロは書いていません。ワークシートは、新規ブックを開いた状態のまま、シート1~シート3までです。シート1には、test1とtest2のそれぞれを実行するボタンを配置しています。セルへの入力はありません。シート2とシート3にも何も記載もありません。新規ブックのままです。

    アドインは未使用で、Liveメッセンジャーはアンインストール済です。どうそ原因らしいものがございましたら教えていただきたくお願いします。

    ---標準モジュール1の中身です-------

    Sub test1()

    UserForm1.Show
    UserForm2.Show

    End Sub


    Sub test3()

    UserForm3.Show

    End Sub

    -------------------------------------

    2015年7月10日 23:14
  • osushigo さん、おはようございます。

    今から外出しますので、テストするのは14時以降になると思います。

    さて、お書きになった内容からの推測ですが、パスワード・マネージャーのようなソフトがインストールされていませんか?
    これは、逐一パスワードを入力しなくても済むように、各所で入力するパスワードを記憶しておき、当該の画面になれば自動的にパスワードが入力されるようなソフトです。
    ノートPCなどには最初からプリインストールされていたりします。

    取り急ぎ、リプライまで。
    • 編集済み Ashidacchi 2015年7月10日 23:25
    • 回答としてマーク osushigo 2015年7月11日 2:51
    2015年7月10日 23:23
  • Ashidacchiさん、本当にありがとうございます。

    症状の発生がなくなりました。

    教えていただきましたソフトはインストールされていませんでしたが、そのようにExcel以外のソフトに目を向け、無くても困らないものを1つ1つアンインストールしていきました。

    その結果、Dropbox というソフトのアンインストール後は、先のVBA保護パスワード付きのマクロブックを閉じた後、VBAprojectパスワード入力を求める表示は、再発していません。数十回試していますが、一度も症状が発生していません。

    UserFormがあり、VBA保護パスワードがされていて・・・というように、ある条件下で発生するような症状であったことから、Excelのマクロに問題が潜んでいると思っていたのですが、ご連絡いただいたヒントから解決できました。

    なぜDropboxが・・なのかは全然分かりませんが、Officeがしっかり利用できれば安心です。大事なヒントを教えていただき本当に助かりました。

    また何か質問させていただいた際は、どうぞよろしくお願いします。ありがとうございました。

    • 回答としてマーク osushigo 2015年7月11日 3:11
    2015年7月11日 3:10
  • osushige さん、

    参考になって何よりです。

    結果オーライなので良いのですが、osughige さんもいぶかしく思われているとおり、私も Dropbox が今回の原因だとは少し考えにくように思います。

    気になるので(個人的な追求になってしまいますが)、もし差し支えなければ、問題が発生していた Excel ファイル(???.xlsm)を OneDrive などで共有していただけないでしょうか?
    シンプルなので、書いていただいている内容に従って私が作ってもよいのですが、同一条件にするには osushige さんのファイルを使うのがベストですから。

    ちなみに、Dropbox や OneDrive(昔の SkyDrive)などのネットワークストレージは、自分用には必要ではないのですが、このフォーラムなどでファイルを渡したりするために OneDrive をインストールしています。

    お時間があり、OneDrive などをお使いならば、ファイル共有をお願いいたします。

    以上
    2015年7月11日 4:31