it-swarm-id.com

Cara kueri Tabel Akses MS dari MS-Excel (2010) menggunakan VBA

Saya mencoba menulis beberapa kode vba di Excel untuk meminta tabel di Access. Saya telah mencoba beberapa contoh kode untuk ini seperti tautan yang ditambahkan dan semuanya tampaknya gagal pada bagian "Sambungan terbuka". Saya telah mencoba menggunakan referensi yang berbeda tetapi saya tidak yakin mana yang harus saya gunakan, apa perbedaannya antara beberapa versi yang berbeda (mis. Microsoft ActiveX Data Objects 2.0,2.1, ..., 6.0) atau apa informasi penyedia seharusnya. Untuk informasi penyedia saya biasanya melihat sesuatu di sepanjang baris 

"Penyedia = Microsoft.Jet.OLEDB.4.0; Sumber Data ="

Tetapi saya tidak yakin apakah itu yang perlu saya gunakan atau mengapa/kondisi apa saja yang ada di string penyedia yang ditunjukkan di atas harus berubah. Bisakah seseorang mendidik saya tentang cara melakukan hal seperti ini dengan benar?

Catatan: Jika mungkin saya ingin solusi yang akan bekerja tanpa harus mengunduh aplikasi lain dan akan bekerja untuk versi Access dan Excel 2007 dan 2010 karena ini perlu dijalankan pada komputer yang berbeda dengan versi kantor yang mungkin berbeda.

Tautan ke pertanyaan serupa: Permintaan Excel VBA untuk akses gagalhttp://www.mrexcel.com/forum/showthread.php?t=527490

Kode: 

Sub asdf()

strFile = "C:\Users\bwall\Desktop\Excel Query Access Testing"

Dim cn As Object
Dim rs As Object
Dim strSql As String
Dim strConnection As String
Dim AppPath As String
Set cn = CreateObject("ADODB.Connection")
AppPath = Application.ActiveWorkbook.Path


strConnection = "Provider=Microsoft.Jet.OLEDB.4.0;" & _
    "Data Source=" & AppPath & "\Masterlist_Current_copy.accdb;"
Debug.Print strConnection
strSql = "SELECT [Neptune Number],[Description],[Manufacturer],[Manufacturer P/N] FROM [All Components];"
cn.Open strConnection
Set rs = cn.Execute(strSql)
MsgBox rs.Fields(0) & " rows in MyTable"
rs.Close
Set rs = Nothing
cn.Close
Set cn = Nothing

End Sub  

nilai strConnection = 

Penyedia = Microsoft.Jet.OLEDB.4.0; Data Sumber = C:\Users\bwall\Desktop\Excel Query Access Menguji\Masterlist_Current_copy.accdb;

12
Bryan

Bagian Penyedia harus Provider=Microsoft.ACE.OLEDB.12.0 jika basis data target Anda adalah format ACCDB. Provider=Microsoft.Jet.OLEDB.4.0 hanya berfungsi untuk format MDB yang lebih lama.

Anda bahkan tidak perlu menginstal akses jika Anda menjalankan Windows 32 bit. Jet 4 dimasukkan sebagai bagian dari sistem operasi. Jika Anda menggunakan Windows 64 bit, Jet 4 tidak termasuk, tetapi Anda masih tidak perlu menginstal Access sendiri. Anda dapat menginstal Microsoft Access Database Engine 2010 Redistributable . Pastikan untuk mengunduh versi yang cocok (AccessDatabaseEngine.exe untuk Windows 32 bit, atau AccessDatabaseEngine_x64.exe untuk 64 bit).

Anda dapat menghindari masalah tentang referensi versi ADO dengan menggunakan pengikatan yang lebih lambat, yang tidak memerlukan referensi apa pun.

Dim conn As Object
Set conn = CreateObject("ADODB.Connection")

Kemudian tetapkan properti ConnectionString Anda ke objek samb. Berikut adalah contoh cepat yang berjalan dari modul kode di Excel 2003 dan menampilkan kotak pesan dengan jumlah baris untuk MyTable. Ini menggunakan pengikatan yang terlambat untuk koneksi ADO dan objek recordset, jadi tidak memerlukan pengaturan referensi.

Public Sub foo()
    Dim cn As Object
    Dim rs As Object
    Dim strSql As String
    Dim strConnection As String
    Set cn = CreateObject("ADODB.Connection")
    strConnection = "Provider=Microsoft.Jet.OLEDB.4.0;" & _
        "Data Source=C:\Access\webforums\whiteboard2003.mdb"
    strSql = "SELECT Count(*) FROM MyTable;"
    cn.Open strConnection
    Set rs = cn.Execute(strSql)
    MsgBox rs.fields(0) & " rows in MyTable"
    rs.Close
    Set rs = Nothing
    cn.Close
    Set cn = Nothing
End Sub

Jika jawaban ini tidak menyelesaikan masalah, edit pertanyaan Anda untuk menunjukkan kepada kami string koneksi penuh yang Anda coba gunakan dan pesan kesalahan yang Anda dapatkan sebagai respons untuk string koneksi itu.

20
HansUp
Sub Button1_Click()
Dim cn As Object
    Dim rs As Object
    Dim strSql As String
    Dim strConnection As String
    Set cn = CreateObject("ADODB.Connection")
    strConnection = "Provider=Microsoft.ACE.OLEDB.12.0;" & _
        "Data Source=C:\Documents and Settings\XXXXXX\My Documents\my_access_table.accdb"
    strSql = "SELECT Count(*) FROM mytable;"
    cn.Open strConnection
    Set rs = cn.Execute(strSql)
    MsgBox rs.Fields(0) & " rows in MyTable"

    rs.Close
    Set rs = Nothing
    cn.Close
    Set cn = Nothing

End Sub
5
beginer

Yang Anda butuhkan adalah ADODB.Koneksi

Dim cnn As ADODB.Connection ' Requieres reference to the
Dim rs As ADODB.Recordset   ' Microsoft ActiveX Data Objects Library

Set cnn = CreateObject("adodb.Connection")
cnn.Open "DRIVER={Microsoft Access Driver (*.mdb, *.accdb)};DBQ=C:\Access\webforums\whiteboard2003.mdb;"

Set rs = cnn.Execute(SQLQuery) ' Retrieve the data
0
agcala