Hai Tio,

coba buat object ado connection nya dulu.
Lakukan connection baru buka recordset.

dim con as adodb.connection

set con=new adodb.connection
con.open myconnect

'baru baris sisanya yang ada di script Anda.








2016-02-04 14:52 GMT+07:00 Tio Adi Bayu Adjie [email protected]
[belajar-excel] <[email protected]>:

>
>
> Salam Excel Expert,
>
> Saya ada code untuk import query Microsoft access ke Excel tapi tidak
> jalan. Mohon pencerahannya, bagaimana solusinya ?
>
> Error yang muncul di .Parameters("[Harga <= Dari?]") = Range("B1").Value
> (yg saya kasih tanda warna hijau). Di computer saya 2003 tidak berhasil, tapi
> kalau di Access 2007 berhasil. Mohon pencerahannya
>
>
>
> Berikut yang saya dapat :
>
>
>
> Sub CopyRecordDariAccess2()
>
> 'Sebelum menjalankan procedure dibawah ini, pastikan library ini sudah
> ditambahkan
>
> 'di Tools -> References:
>
> '- Microsoft ActiveX Data Objects Library
>
> 'Versi sesuai dengan Office yg diinstall di PC nya
>
>
>
> 'Tahap 1: Deklarasi nama object dan variable yg digunakan
>
> Dim MyConnect As String
>
> Dim MyRecordset As ADODB.Recordset
>
> Dim MyQueryDef As DAO.QueryDef
>
> Dim MyDatabase As ADODB.Recordset
>
>
>
> 'Tahap 2: Deklarasi jenis koneksi database dan lokasinya
>
> MyConnect = "Provider=Microsoft.JET.OLEDB.4.0;" & _
>
> "Data Source=" & ActiveWorkbook.Path & "\KolaborasiAccessExcel.mdb"
>
>
>
> 'Tahap 3: Tentukan nama table/query
>
> Set MyDatabase = New ADODB.Recordset
>
> MyRecordset.Open "[TestParameterQuery]", MyConnect, adOpenStatic,
> adLockReadOnly
>
>
>
> Set MyQueryDef = MyDatabase.QueryDefs("TestParameterQuery")
>
>
>
> 'Tahap 3: Definiskan Parameter yg digunakan
>
> With MyQueryDef
>
> .Parameters("[Harga <= Dari?]") = Range("B1").Value
>
> End With
>
>
>
> 'Langkah 4: Membuka query
>
> Set MyRecordset = MyQueryDef.OpenRecordset
>
>
>
> 'Tahap 4: Copy seluruh record ke Excel
>
> Sheets("Sheet1").Select
>
> ActiveSheet.Range("A2").CopyFromRecordset MyRecordset
>
>
>
> 'Tahap 5: Tambahkan judul kolom di Excel
>
> For i = 1 To MyRecordset.Fields.Count
>
>     ActiveSheet.Cells(1, i).Value = MyRecordset.Fields(i - 1).Name
>
> Next i
>
>
>
> 'Tahap 6: Bersihkan memory di VBA
>
> MyRecordset.Close
>
> Set MyRecordset = Nothing
>
>
>
> Terima kasih.
>
> Tio_,_._,___
>
> 
>

Kirim email ke