2017-09-13 18 views
1

パスワードで保護された第2のデータベースを開くvbaコードを含む「ランチャー」データベースを設定しようとしています。VBAにアクセス - パスワードで保護されたデータベースを起動して既存のパスワードを閉じる

を(私はそのようにパスワードを含むVBAを読み取ることができませんACCDEするランチャーデシベルに変換することができます)私、これまでに次のコードを...持っているランチャーデシベルは、フォーム負荷を開いた

Private Sub Form_Load() 
Dim acc As Access.Application 
Dim db As DAO.Database 
Dim strDbName As String 

strDbName = "C:\database Folder\secureDB.accdb" 
Set acc = New Access.Application 
acc.Visible = True 
Set db = acc.DBEngine.OpenDatabase(strDbName, False, False, ";PWD=swordfish") 

acc.OpenCurrentDatabase (strDbName) 

Application.Quit 

End Sub 

その後上記のコードが実行されます。それは動作しますが、問題はランチャーdbのみを閉じようとする最後の行ですが、実際には両方のデータベースを閉じます。私もシェルを使ってメインデータベースを開こうとしましたが、この方法でパスワードを渡すことはできません。

誰かが、最初のデータベースを閉じて2番目のデータベースを開いておく方法を知っていますか?

Private Sub Form_Load() 
Dim acc As Access.Application 
Dim db As DAO.Database 
Dim strDbName As String 

strDbName = "C:\database Folder\secureDB.accdb" 
Set acc = New Access.Application 
acc.Visible = True 
acc.OpenCurrentDatabase strDbName, False, "swordfish" 
Set db = acc.CurrentDb() 'Don't know why you want a reference to the db 
acc.UserControl = True 
Application.Quit 
End Sub 

関連する部分が見える滞在するDBを強制され、失われますApplicationオブジェクトへの参照とすぐに閉じてからそれを停止しacc.UserControl = True、次のとおりです。

+0

で見つけることができます彼らはどのようにこれを行う(私は1つがmdbloaderと呼ばれると思います)。 – BitAccesser

+0

または 'acc.Application.Quit 'を試してください。 – BitAccesser

+0

アクセスデータベースは逆コンパイルできるので、文字列を読み込むことができます(何らかの努力によって)。私の前のコメントで述べたように、私はそのデータベースにパスワードを暗号化したdbパスワードを保存しているので、有効なパスワードを持つユーザーだけがログインできます。 –

答えて

4

は、次を使用することができます。

塩漬けユーザーのパスワードで暗号化されたメインデータベースのパスワードを保存するサンプル・データベースは、私が見て、「アクセスフロントエンドアップデータ」のためのシェルスクリプトまたは検索でコマンドラインオプションを開いてお勧めしthis answer

+0

ありがとうございます。以前はUserControlメソッドについて聞いたことがなかった。私は年齢のためにこれに固執していた。私はすべてのユーザーにパスワードを提供する必要がないようにしようとしています。なぜなら、私はあなたの他の方法と一緒に行くことができなかったからです。あなたの助けをもう一度おねがいします。 – Leroy

+1

ちなみに、これを私の最初の質問に対する回答として追加したいのであれば、私もそれを受け入れることができます。そうでない場合は、私はそれを自分自身で追加して、質問を開いたままにします。ちょうどあなたが信用に値すると思った – Leroy

+0

_UserControl_ - それは私にとって初めてのものでした。しかし、必要はありませんでした... – Gustav

関連する問題