[リストへもどる]   [VBレスキュー(花ちゃん)]
一括表示

投稿時間:2006/08/29(Tue) 13:17
投稿者名:あれくす
Eメール:
URL :
タイトル:
パスワード付きMDBファイルを起動する方法
初めて投稿します。
VBを始めたばかりの初心者ですがよろしくお願いします。

通常、パスワード付きのMDBファイルを開く場合は
エクスプローラなどからMDBファイルをダブルクリックし、
パスワードを入力するとACCESSの画面が表示されます。
この動作をVB6で実現したいのですがどのようにしたらよいでしょうか?

Microsoftのホームページから、

  Dim dbs As Database
  Set dbs = DBEngine(0).OpenDatabase("DBPass.mdb", False, False, _
      ";pwd=Password")

といったサンプルソースは見つけたのですが
これでは画面上にACCESSの画面が表示されません。

わかりづらい説明で申し訳ありませんが
ご指導よろしくお願いします。

投稿時間:2006/08/29(Tue) 19:04
投稿者名:neptune
Eメール:
URL :
タイトル:
Re: パスワード付きMDBファイルを起動する方法
こんにちは
> 通常、パスワード付きのMDBファイルを開く場合は
> エクスプローラなどからMDBファイルをダブルクリックし、
> パスワードを入力するとACCESSの画面が表示されます。
> この動作をVB6で実現したいのですがどのようにしたらよいでしょうか?
これはmdbを開くのではなくAccessアプリケーションを起動するという
考え方ではないでしょうか?

OLEでAccessを起動し、Accessから、OpenCurrentDatabase メソッドを使用して
開くという考え方でどうでしょう?

> Microsoftのホームページから、
>
>   Dim dbs As Database
>   Set dbs = DBEngine(0).OpenDatabase("DBPass.mdb", False, False, _
>       ";pwd=Password")
>
> といったサンプルソースは見つけたのですが
> これでは画面上にACCESSの画面が表示されません。
これはmdb(Accessに非ず)に接続するための構文でまったく筋が違います。


で、ここまで書きましたが、VBでmdbを扱うのならAccessを起動する必要なんか
ありません。
> Microsoftのホームページから、
の構文でmdbを開くと楽です。AccessはJetのDBですから、DAOでデータ操作はできない事は
(多分)ないと思います。印刷は別ですよ。
個人的には、極端ない言い方をするとAccessの挙動を気にしなければならない分
鬱陶しいです。

何がしたいのかわからないのでこのあたりまで。

投稿時間:2006/09/05(Tue) 12:45
投稿者名:あれくす
Eメール:
URL :
タイトル:
Re^2: パスワード付きMDBファイルを起動する方法
返事が遅くなりましたがご回答ありがとうございました。

>これはmdbを開くのではなくAccessアプリケーションを起動するという
考え方ではないでしょうか?

全くその通りです。

>何がしたいのかわからないのでこのあたりまで。

説明が不足していたようで申し訳ありません。
実際のデータ操作はACCESSで行っているのですが
長いパスワードが付いたmdbファイルが複数あり、
それぞれパスワードが異なります。
mdbファイルを開くたびパスワードを入力するのが大変なので
例えばVBのフォームにテキストボックスを置いて
エクスプローラからmdbファイルをテキストボックスにドラッグ&ドロップすることで
パスワードを入力せずにACCESSを起動できないかと思いました。
おそらくShell関数でmdbファイルを開くことは可能と思いますが
パスワードの入力まではできないと思ったので
このような質問を書き込みました。
「面倒と思わずパスワードを入力しろ」「パスワードを短くしろ」
と言われてしまうとそれまでなのですが。。。

よろしくお願いします。

投稿時間:2006/09/05(Tue) 14:16
投稿者名:matsu
Eメール:
URL :
タイトル:
Re^3: パスワード付きMDBファイルを起動する方法
> 説明が不足していたようで申し訳ありません。
> 実際のデータ操作はACCESSで行っているのですが
> 長いパスワードが付いたmdbファイルが複数あり、
> それぞれパスワードが異なります。
> mdbファイルを開くたびパスワードを入力するのが大変なので
> 例えばVBのフォームにテキストボックスを置いて
> エクスプローラからmdbファイルをテキストボックスにドラッグ&ドロップすることで
> パスワードを入力せずにACCESSを起動できないかと思いました。
> おそらくShell関数でmdbファイルを開くことは可能と思いますが
> パスワードの入力まではできないと思ったので
> このような質問を書き込みました。
> 「面倒と思わずパスワードを入力しろ」「パスワードを短くしろ」
> と言われてしまうとそれまでなのですが。。。
>
> よろしくお願いします。

Access2000以前の場合、OpenCurrentDatabaseでパスワードを指定できないので
以下のようになると思います。
objAccessはモジュールレベルで定義してください。
VBから開く場合でもパスワードの指定は必要ですが。
ファイルとパスワードの対応はどのように考えているのでしょうか?

Dim objDb           As Object
Dim strPath         As String

strPath = "C:\hoge.mdb"

Set objAccess = CreateObject("Access.Application")

Set objDb = objAccess.DBEngine.OpenDatabase(strPath, False, False, "MS Access;PWD=パスワード")
objAccess.OpenCurrentDatabase (strPath)
objDb.Close
Set objDb = Nothing
objAccess.Visible = True

投稿時間:2006/09/05(Tue) 17:27
投稿者名:あれくす
Eメール:
URL :
タイトル:
Re^4: パスワード付きMDBファイルを起動する方法
matsu様、ご回答ありがとうございます。

教えて頂きました通りなのですが、

Private Sub Command1_Click()

Dim objDb           As Object
Dim strPath         As String

strPath = App.Path & "\abc.mdb"

Set objAccess = CreateObject("Access.Application")

Set objDb = objAccess.DBEngine.OpenDatabase(strPath, False, False, _
"MS Access;PWD=123456789")
objAccess.OpenCurrentDatabase (strPath)

objDb.Close
Set objDb = Nothing
objAccess.Visible = True

End Sub

としてみました。
すると一瞬ACCESSが起動しますがすぐ閉じてしまいます。

>ファイルとパスワードの対応はどのように考えているのでしょうか?

上記が解決できればの前提ですが、ファイル名が変わることはありませんので
指定されたファイル名からselect caseでパスワードを判断したいと思っています。

よろしくお願いします。

投稿時間:2006/09/05(Tue) 17:42
投稿者名:neptune
Eメール:
URL :
タイトル:
Re^5: パスワード付きMDBファイルを起動する方法
こんちは

省略
> Set objDb = objAccess.DBEngine.OpenDatabase(strPath, False, False, _
> "MS Access;PWD=123456789")
> objAccess.OpenCurrentDatabase (strPath)
>
> objDb.Close
> Set objDb = Nothing
> objAccess.Visible = True
省略
> としてみました。
> すると一瞬ACCESSが起動しますがすぐ閉じてしまいます。
せっかくサンプルを書いてくれているんですから、何をやっているかぐらいは
調べましょう。UPされたソースでは当然の動きです。


> 上記が解決できればの前提ですが、ファイル名が変わることはありませんので
> 指定されたファイル名からselect caseでパスワードを判断したいと思っています。
これはそのままコード化すればいいと思うんですが・・・

投稿時間:2006/09/11(Mon) 18:25
投稿者名:matsu
Eメール:
URL :
タイトル:
Re^5: パスワード付きMDBファイルを起動する方法
> Private Sub Command1_Click()
>
> Dim objDb           As Object
> Dim strPath         As String
>
> strPath = App.Path & "\abc.mdb"
>
> Set objAccess = CreateObject("Access.Application")
>
> Set objDb = objAccess.DBEngine.OpenDatabase(strPath, False, False, _
> "MS Access;PWD=123456789")
> objAccess.OpenCurrentDatabase (strPath)
>
> objDb.Close
> Set objDb = Nothing
> objAccess.Visible = True
>
> End Sub
>
> としてみました。
> すると一瞬ACCESSが起動しますがすぐ閉じてしまいます。

もう解決してるかもしれませんが、
objAccess.Visible = True

objAccess.UserControl = True
に変更してみてください。