2013-05-01 19 views
6

編集:この質問に対する回答は、受け入れられた回答のコメント内にあります。Excelからのアクセスを開くVBA

私のExcelファイル内のボタンをクリックしてAccessデータベースを開こうとしています。私は現在このコードを持っています:

Private Sub bttnToAccess_Click() 

Dim db As Access.Application 

Set db = New Access.Application 
db.Application.Visible = True 
db.OpenCurrentDatabase "C:\Users\wcarrico\Desktop\wcarrico-CapstoneFinalSubmission.accdb" 

End Sub 

これは簡単に動作するように思われ、その後すぐにアクセスがシャットダウンします。重要な場合、Accessファイルには、開いたときにいくつかのテスト自体を実行するAutoExecマクロがあります。

+0

作品削除しますは、Excel内のアクセスGUIを実行しようとする、または単にデータベースに接続し、内部のデータを照会しようとしていますか? –

+0

私は、ユーザーのデータベースに簡単にアクセスできます。私はVBAで非常に初心者であり、AcessのGUIが何であるかはわかりません。データベースは基本的に結婚式を計画するための別個のツールです。 Excelファイルとアクセスファイルは、最終的にインポートを介してリンクされます。 –

答えて

6

アクセスアプリケーションを開こうとしないでください。データアクセステクノロジの1つ、すなわち - OLE-DBまたは - ODBCを使用して接続オブジェクトを作成するだけです。

Google「ODBC接続文字列」または「OLE-DB接続文字列」を使用して、特定の設定(およびアクセスファイルタイプ)に応じた詳細を取得します。

おそらく、ADODBはデータアクセスに使用する最も簡単な現在のライブラリです。

更新: が、その後データを使用してAccessからデータをインポートしてみ - >アクセスウィザードから。 Yuは常にあなたのためにいくつかのインフラストラクチャを作成する、あなたのためのいくつかのVBAコードを自動的に生成するためにマクロの記録機能を使用することができます。私は、VBAオブジェクトモデルの新しい部分を調べるときにこれを定期的に使用します。

アップデート - 変数がスコープの外に出るためかもしれ
以下のコメントから、問題の最終的解決、。関数外の宣言をモジュールレベルに移動する

+0

私は非常にすばやくGoogleの検索結果のいくつかを見て、何について話していたのか、そこからどこに行くのか分かりませんでした。このプロジェクトは、学校でのVBAクラスの紹介のためのものなので、私はちょうど学び始めました。 また、上記のインポートについての私のコメントは、私の意図を混乱させるかもしれないと思います。私はゲストリスト、ベンダー、および他のほとんどのものを管理する結婚式計画のためのデータベースを設計しました。私が現在取り組んでいるExcelファイルは、結婚式の財務面(モデル化、最小最大の計算など)をより多く扱っています。私は実際にはアクセスファイルを開くだけで何もできないようにしたい。 –

+0

OPがVBAで非常に初心者である場合、レコードセットをナビゲートするのは少し難しいかもしれません。 – ApplePie

+1

@ AlexandreP.Levasseur:ポイント獲得;投稿が更新されました。 –

1

コードが開始されました。オブジェクト変数に割り当てられたアプリケーションインスタンスを作成してアクセスしました。プロシージャの最後に、変数がスコープから外れてアクセスがシャットダウンしました。

Accessアプリケーションインスタンスのモジュールレベルの変数を使用する答えを受け入れました。その場合、Accessはプロシージャが終了した後も実行されたままです。ただし、ユーザーがExcelを終了すると、Accessも終了します。

アクセスを開始し、ユーザーが終了するまで実行し続けることを目標にしている場合は、アプリケーションインスタンスをオブジェクト変数(Set db = New Access.Application)に割り当てずにAccessを直接起動するだけです。そのdb変数は、Excelコードが他の目的に必要な場合に便利です。ただし、実際にはdbファイルを開くためにのみ使用されます。

WScript.ShellRunメソッドを使用すると、Accessセッションでdbファイルを開くことができます。

Private Sub bttnToAccess_Click() 
    Const cstrDbFile As String = "C:\Users\wcarrico\Desktop\wcarrico-CapstoneFinalSubmission.accdb" 
    Dim objShell As Object 
    Set objShell = CreateObject("WScript.Shell") 
    objShell.Run cstrDbFile 
    Set objShell = Nothing 
End Sub 
+0

このメソッドを試したところ、実行時エラー "Object 'IWshShell3'のメソッド 'Run'が失敗しました... – SandPiper

0

私は、これは古いスレッドですけど、Accessデータベースを開こうとしているが、クリックした2つの特定の参照を持っていない場合は、Excel VBAでこのエラーを取得します。 (ツール、VBAエディタ画面の参照)。 「Microsoft Access 15.0 Object Library」と「Microsoft ActiveX Data Objects 6.1 Library」をクリックする必要があります。

0

New宣言が、それは

関連する問題