2016-08-26 3 views
0

VBAでAccessデータベースをExcelに接続し、単一のテーブル「カテゴリ」からワークシートにデータをインポートします。テーブルの代わりに、データベースにすでに存在するクエリをインポートすることはできますか?
私はラインでクエリ名にテーブル名を変更するとき、それはなぜあなたはレコードセットとテーブル定義に変更されません?15.アクセスからのクエリのインポート

'connection Declairation 
    Dim conn As ADODB.Connection 
    Dim data As ADODB.Recordset 

    Set conn = New ADODB.Connection 
    Set data = New ADODB.Recordset 
    ' end of connection Declairation 
    conn.ConnectionString = ConstrAccess 

    conn.Open 
    On Error GoTo closeconnection 
       With data 
        .ActiveConnection = conn 'specfied the connection 
        .Source = "Category" ' works only for Table Type 
        .LockType = adLockReadOnly 
        .CursorType = adOpenForwardOnly 
        .Open 
       End With 
       On Error GoTo closerecordset 


       Datasheet.Range("a2").CopyFromRecordset data 
       On Error GoTo 0 



closerecordset: 
       data.Close 
closeconnection: 
    conn.Close 


End Sub 
+0

問題を再現できません。名前付きストアドクエリは、Excel 2013、Win 10、MS ActiveX 6.1ライブラリのリファレンスで使用できます。あなたが受け取ったエラーは何ですか? – Parfait

+0

'Data'>' From Access'>アクセスファイルを選択してください>あなたのクエリがリストに表示されない場合は、リストに表示されるまでクエリを変更する必要があります。例えば、 'SELECT * FROM([クエリ名])' – Slai

+0

@パルファットは、接続文字列を紛失して申し訳ありません。Const ConstraAccess As String = "Provider = Microsoft.ACE.OLEDB.12.0;データソース=(データベースのパス).accdb ;セキュリティ情報を永続化する=偽; " –

答えて

0

「エラー」と表示このようにしてデータベースを開く必要はありません。 Microsoft Office xx.x Accessデータベースエンジンのリファレンス(tools-> references)を追加してください。オブジェクトライブラリ

Sub test() 
Dim BDAnalyzed As Database 
Dim RecordTable As Recordset 
Dim RecordTableDef As TableDef 
Dim CounterTitles As Long 
Const DesiredQuery = "Title For Query" 
Const PathToDB = "C:..." 
    Set BDAnalyzed = DBEngine.Workspaces(0).OpenDatabase(PathToDB) 
    Set RecordTable = BDAnalyzed.OpenRecordset(DesiredQuery, dbOpenDynaset) 
    Set RecordTableDef = BDAnalyzed.TableDefs(RecordTable) 
    For CounterTitles = 0 To RecordTableDef.Fields.Count - 1 
    MsgBox RecordTableDef.Fields(CounterTitles).Name 
    Next CounterTitles 
End Sub 
+1

ありがとうございます。あなたのコードは私のものよりも簡単です、私はそれから学ぶことを試みます。 –

関連する問題