ExcelのVBAプロジェクトにパスワードを設定したところ、Excelを閉じる際に意図せぬパスワード要求をされて困っています。
■現象発生ブックの作成手順は以下の通りです。
(1)新規ブックを作成し、VisualBasicEditorで「Microdoft DAO 3.6 Object Library」を参照設定します。
(2)新規ユーザーフォーム「UserForm1」を作成し、以下のコードを記述します。
Private Sub UserForm_Initialize()
Dim db As DAO.Database
Dim strXLSName As String
strXLSName = ThisWorkbook.Path & "\" & ThisWorkbook.Name
Set db = OpenDatabase(strXLSName, True, True, "EXCEL 8.0;HDR=YES;")
db.Close
Set db = Nothing
End Sub
※上記は、原因箇所のみ残して他は割愛させていただいたので意味のないコードになっています。
(3)ThisWorkbookに、以下のコードを記述します。
Private Sub Workbook_Open()
UserForm1.Show
End Sub
(4)VBAProjectのプロパティで、表示用にロックにチェックし、パスワードを入力します。
(5)ブックを保存します。
■現象発生手順は以下の通りです。
(1)上記の作成手順で作成したブックを開く(自動でUserForm1が開く)
(2)自動で開いたUserForm1を閉じる
(3)ブックを上書き保存して、ブックのみを閉じる
(4)Excelを閉じる
すると、意図しないVBAプロジェクトのパスワード要求ダイアログが表示されてしまいます。
当現象は最新までUpdate済みのExcel2007およびExcel2000で発生しました。
(他のバージョンは未確認です)
以下も拝見しましたが解決せず、お手上げ状態となっています。
http://questionbox.jp.msn.com/qa1272177.html
どなたか解決策をご存知でしたら、アドバイスいただけないでしょうか?
No.1ベストアンサー
- 回答日時:
こんにちは。
コードとして、何かちょっとヘンですね。
自ブックに、DAOでアクセスするというのでは、無理がありませんか?
>Excelを閉じる際に意図せぬパスワード要求をされて困っています。
Excel が終了後に VBA プロジェクトのパスワードのプロンプトが表示されます。
http://support.microsoft.com/default.aspx?scid=k …
ここで書かれてあるとおりだと思います。
その文章の中にある、ActiveX DLL を、DAO に読み替えればよいのですが、それを解決する手段が分かりません。
「この問題のActiveX DLLのクラス設計を修正するために、そのClassが終わる前に、ワークブック関連情報はきちんと解放させなければならない。一般のシナリオには、クラスの中でTerminateイベントが発生しないように書かれているので、オブジェクト(ワークブックとActiveX DLLのクラス)間で、循環参照を持ってしまう。」(英語から、ざっと訳してみました。日本語の方は機械翻訳だから分かりにくいです。)
しかし、今のコードから、既製品のDAOは解法する手段がないのです。別のデータ・ブックにするしかないのではないかと思います。
回答ありがとうございます!!
>自ブックに、DAOでアクセスするというのでは、無理がありませんか?
SQL文が使えると便利なので、DAOとADOを試してみた次第です。
※ちなみにADOでも同じ現象が発生します。
DAOやADOを使わない方法で考え直してみます。
ありがとうございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) エクセルのマクロを使ってメールを送る方法について教えてください 2 2022/03/29 01:36
- Visual Basic(VBA) VBA Bookの表示、非表示 1 2022/09/16 20:44
- Visual Basic(VBA) マクロVBA 1シートをまとめる 閉じ方 初心者 SOS! 1 2022/06/17 14:54
- Visual Basic(VBA) VBA This Workbookモジュールを別ファイルにコピーする方法 1 2022/09/14 01:51
- Visual Basic(VBA) ExcelのVBAコードについて教えてください。 1 2023/08/10 14:24
- Visual Basic(VBA) 【前回の続き続きです、ご教示ください】VBAの記述方法がわかりません。 2 2022/08/24 20:49
- Visual Basic(VBA) 【ご教示ください】VBAの記述方法がわかりません。 2 2022/08/12 21:28
- その他(Microsoft Office) マクロVBAについて 1 2022/09/06 18:12
- Visual Basic(VBA) 【前回の続きです、ご教示ください】VBAの記述方法がわかりません。 2 2022/08/16 16:44
- Visual Basic(VBA) Excelのマクロコードについて教えてください。 1 2022/03/27 13:25
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
大学定期試験過去問サイト「過...
-
メールをパスワードつきで送る方法
-
Excelのセルにユーザー名...
-
インスタの捨て垢で友達のスト...
-
LINE TCBというところからLINE...
-
メールエラー
-
メールアドレス 上バーの入力...
-
メールを返信したら、英語のメ...
-
インスタのアイコンについてるN...
-
Skypeのアカウントについて 作...
-
ビーリアルのユーザー名を変え...
-
中学生男子です。 Twitterなど...
-
携帯電話を解約してもSMSの受信...
-
インスタのアカウントの消し方...
-
星の王子さまというアプリで、 ...
-
YouTubeが毎回ログインしないと...
-
メールアドレスを人に教えるの...
-
メールのマナー編
-
インスタのパスワードが合って...
-
メールアドレスで上付きのハイフン
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Excelのセルにユーザー名...
-
メールをパスワードつきで送る方法
-
LINE TCBというところからLINE...
-
メールアドレス 上バーの入力...
-
大学定期試験過去問サイト「過...
-
メールエラー
-
メールのマナー編
-
メールアドレスで上付きのハイフン
-
インスタの捨て垢で友達のスト...
-
インスタのアイコンについてるN...
-
メールを返信したら、英語のメ...
-
steam版 apexのログアウト方法...
-
ビーリアルのユーザー名を変え...
-
メールアドレスから個人を特定...
-
携帯電話を解約してもSMSの受信...
-
「@」(アットマーク)の無いメ...
-
YouTubeが毎回ログインしないと...
-
解約済みの iPadについて 解約...
-
カカオで退会せずに、アプリだ...
-
CSVファイルを添付するときにパ...
おすすめ情報