2016-09-08 23 views
0

私の同僚は、アクセスデータベースからデータを取得するExcelツールを使用しようとしています。このツールはコンピュータ上では完全に機能しますが、ツールがAccessデータベースに接続できないという問題があります。VBA Excelは別のコンピュータのAccess DBに接続しません

Excelのオプションが正しいこと、つまりマクロが有効になっていることを確認して問題を解決しようとしましたが、まだ問題が発生しています。

この問題は、私の同僚の設定で、ツールが私のために問題なく動作するため、設定されていないものでなければなりません。

Public Const pActuarialPWD = "password2" 
Public Const QuoteDB = "N:\DWH\Commercial Ins\Fleet\Databases\Quote DB.accdb" 

    If bDBOpen = False Then 
     'Connect to database 
     If openQuotedb() = False Then 
      MsgBox "Connection to database failed - contact Actuarial" 
      Exit Sub 
     End If 
    End If 


Function openQuotedb() 

On Error GoTo ErrorHandler 

    openQuotedb = False 
     Set db = OpenDatabase(QuoteDB, False, False, "MS Access;PWD=" & pActuarialPWD) 
    openQuotedb = True 

    Exit Function 

ErrorHandler: 
    MsgBox "Couldn't connect to database. Please contact actuarial. Tool should not be used, as quote information will be lost", vbCritical 

End Function 

私は両方の私のコンピュータと私の同僚にプログラムを通じて回数を強化しましたし、私は問題が何であるかを見ることができない。ここではアクセスDBを読んで、コードの部分のいくつかはあります。私が同僚のPC上のコード "db = ..."の行を踏み越え、db上にカーソルを置くと "db = Nothing"と表示されますが、鉱山ではデータベースに正常に接続します。

ここで間違っている可能性のあるアイデアはありますか?それはちょうどexcesが私の同僚のPCのアクセスに接続するために正しく設定されていないようです。私は考えることができる

唯一のことは、私はエクセル2013使用しているということで、私の同僚は、2010年

+3

あなたの問題はおそらくここにあります:N:\マップドライブですか?両方のコンピュータで同じマップされますか?同じ手紙とすべて? – Blenikos

+1

@Blenikos +1いずれの場合でもフルパス –

+0

HI Benikosを使用する方が安全ですが、それは問題ではありません。両方のコンピュータでNドライブが同じです。私は同僚にOffice 2013でこのツールを試してもらいました。なぜ2010年版でうまくいかなかったのか分かりません。おかげで –

答えて

0

に機能は以下の私のトラブルの多くを保存しているです。あなたの問題を解決するかどうかは分かりませんが、一般的には助けになります。

私は多くのアプリケーションで、さまざまな変更と変数を使ってテストしましたが、毎回機能し、決して失敗しませんでした。多分あなたを助けるでしょう。

Public Function db_connect(Optional sel_db As Variant = "", Optional pass_be As Variant = ";PWD=<password>") As DAO.Database 
     Dim db As DAO.Database 

     If sel_db = "" Then 
      sel_db = "<database_path>" 
     End If 

    On Error GoTo db_locked: 
       Set db = DBEngine.OpenDatabase(sel_db, True, False, pass_be) 
       GoTo DBclose: 
    db_locked: 
       Sleep 100 
       Set db = DB_Connection.db_connect(sel_db, pass_be) 
    DBclose: 
      Set db_connect = db 
    End Function 

だけ行う関数を呼び出す:

Dim db As DAO.Database 
Set pers = DB_Connection.db_connect("full_path or your path with the N drive mapped", ";PWD=<db_password>") 

をWARNING-免責事項!!! 注意してください。この関数には待機機構があり、決して止めずに接続しようとします。パラメータが間違っていたり、データベースが存在しない場合は、無限ループに陥るでしょう。私は問題を知っていてそれを避けていたので、私はそれを修正するのに苦労しなかった。ただし、必要に応じて改善を加えることができます。

関連する問題