2017-01-25 4 views
0

私はExcelにアクセスレコードをインポートしますオンラインを発見したコードのこのビットを持っています。 strFilePathはMDBのためのファイルパスであるとstrTableNameは私がMDBのテーブル - 必要性のフィールド名/ヘッダ

Sub importAccessdata() 

Dim cnn As ADODB.Connection 
Dim rs As ADODB.Recordset 
Dim sQRY As String 
Dim strFilePath As String 

strFilePath = Sheets("Setup").Range("C2").Value 
strTableName = Sheets("Setup").Range("C4").Value 

Set cnn = New ADODB.Connection 
Set rs = New ADODB.Recordset 

cnn.Open "Provider=Microsoft.ACE.OLEDB.12.0;" & _ 
"Data Source=" & strFilePath & ";" 

sQRY = "SELECT * FROM " & strTableName & "" 

rs.CursorLocation = adUseClient 
rs.Open sQRY, cnn, adOpenStatic, adLockReadOnly 

Application.ScreenUpdating = False 
Sheet3.Range("A1").CopyFromRecordset rs 

rs.Close 
Set rs = Nothing 
cnn.Close 
Set cnn = Nothing 
Exit Sub 

End Sub 

レコードのすべてが、しかし私は、フィールド名がそれらを取り込むために得ることができない、非常に高速なインポートインポートするために探していますテーブル名です!データでフィールド名を運ぶためにできる簡単な変更はありますか?

+0

*インポートアクセスレコードをuse-ものです! – Parfait

答えて

1

は、これは私が実際にそれは他の方法でなければなりません* ... Excelに

Private Sub PullSummaryData() 
Const strDb As String = "C:\db\AccessDatabase.accdb" 
Dim rs As ADODB.Recordset 
Dim cn As ADODB.Connection 
Dim i As Integer 

Sheets("Summary").Select 

    Const strQry As String = "SELECT * FROM [AccessDataTable]" 

    Set cn = New ADODB.Connection 
    cn.Open "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & strDb & ";" 

    Set rs = New ADODB.Recordset 

    With rs 
    Set .ActiveConnection = cn 
    .Open strQry 
    End With 

With Sheets("Summary") 
    For i = 1 To rs.Fields.Count 
    .Cells(2,i).Value = rs.Fields(i-1).Name 'fields is a 0 based collection 
    Next i 
    .Range("A3").CopyFromRecordset rs 
End With 

    rs.Close 
    cn.Close 
End Sub 
関連する問題