Terima kasih Mr. Kid atas penjelasannya yang tidak mudah kami dapatkan dari internet. Sebagian Code dari file yang saya kirim terdahulu, "scon" nya (huruf miring berrwarna) ada tambahan "Xml" di belakang versi Excel (Excel 12.0),cn.Open "Provider=Microsoft.ACE.OLEDB.12.0;" & _ "Data Source=" & ThisWorkbook.FullName & ";" & _ "Extended Properties=""Excel 12.0 Xml;HDR=YES"";"Saya menggunakan Excel 2013. Yang ingin saya tanyakan:Apa fungsi "Xml" di sini ? Terima kasih. Salam,HK
On Monday, 15 January 2018, 7:56:38 PM GMT+7, 'Mr. Kid' mr.nm...@gmail.com [belajar-excel] <belajar-excel@yahoogroups.com> wrote: Wa'alaikumussalam wr wb Hai Tio, 1. Contoh ADO dan DAO > File kerja wbkApp.xlsm; File Data E:\wbkDT.xls sheet DATA hasil di wbkApp.xlsm sheet HASIL, dengan record pertama di range A2> ADO 'pakai 3 baris berikut jika di VBE -> Tools -> references -> sudah dipilih Ms ActiveX Data Object versi tetrtinggi yang ada '>> kalau dicentang sendiri di references, lalu komputer lain tidak punya, maka akan error. dim cn as adodb.connection, rs as adodb.recordset,sCon as string, sQ as string set cn=new adodb.connection set rs=new adodb.recordset 'kalau tidak mau repot pakai centang references, pakai 3 baris ini : [late binding] '>> untungnya, references selalu dipilihkan yang terbaru oleh OS dim cn as adodb.connection, rs as adodb.recordset,sCon as string, sQ as string set cn=createobject("adodb.connection") set rs=createobject("adodb.recordset") 'connection string dan query untuk koneksi data 'Connection string : [ganti path dan nama file sesuai kebutuhan] [pilih salah satu] scon="Driver={Microsoft Excel Driver (*.xls, *.xlsx, *.xlsm, *.xlsb)};DBQ=E:\wbkDT.xls;" 'driver ODBC (direkomendasikan) 'driver OLEDB,xl2007 ke atas, ganti 8.0 menjadi 12.0, sesuaikan OLEDB.12.0 dengan yang ada di komputer setempat scon="Provider=Microsoft.ACE.OLEDB..12.0;Data Source=E:\wbkDT.xls;Extended Properties=""Excel 8.0;HDR=YES"";" 'query sq="SELECT a.* FROM [DATA$] as a" 'buka koneksi dan ambil recordset cn.open scon rs.open sQ, cn , 1 , 3 '1 : cursor type Open Keyset ; 3 : lock type Optimistic 'paste ke range a2 sheets("hasil").range("a2").copyfromrecordset rs 'tutup rs.close cn.close 'jika perlu cleanup set rs=nothing set cn=nothing > DAO [sangat cepat untuk data MS Access, Excel, dan text file] 'A. khusus > untuk file xl2003 ke bawah saja 'pastikan referensi yang dicentang adalah Ms Data Access Object terbaru (3.6 kalo gak salah) dim db as DAO.database, rs as DAO.recordset 'buka db file dan ambil recordset [sesuaikan nama file] set db=OpenDatabase( "E:\wbkDT.xls" , false, true , "Excel 8.0;HDR=YES;" ) 'kalau data tidak punya header, set HDR dengan NO, false : opsi untuk shared mode, true : read only set rs=db.openrecordset( "DATA$" ) 'nama sheet bisa diganti query, cursor type juga bisa dtentukan, tapi contoh ini pakai default-nya 'B. untuk file xl2002 ke atas 'pastikan referensi yang dicentang adalah Ms Data Access Object terbaru (3.6 kalo gak salah) dim db as DAO.database, rs as DAO.recordset dim ws as DAO.workspace 'buka db file dan ambil recordset [sesuaikan nama file] set ws=createworkspace( "" , "" , "" , 1 ) ' nama workspace : "" , user : "" , pwd : "" , type : odbc [selainnya adalah 2, untuk Jet (khusus database engine MS Access) ' nama file db atau dsn odbc : "" , options : kosong , readonly : kosong , connection string set db=ws.opendatabase( "" , , , "ODBC;Driver={Microsoft Excel Driver (*.xls, *.xlsx, *.xlsm, *.xlsb)};Dbq=E:\wbkDT.xls;" ) set rs=db..openrecordset( "SELECT a.* FROM [DATA$] as a" ) '>langkah selanjutnya<' 'paste ke range a2 sheets("hasil").range("a2").copyfromrecordset rs 'tutup rs.close db.close 'jika perlu cleanup set rs=nothing set db=nothing 2. Syarat : > ADO : a. di komputer telah ter-install dan terregister library Ms ActiveX Data Objects b. pilih connection string yang sesuai dengan driver-nya (ODBC atau OLEDB) c. bisa semua versi Excel, dengan mengatur nilai parameter pada bagian ExtendedProperties jika pakai OLE DB> DAO a. di komputer telah ter-install dan teregister library Ms Data Access Object b. pastikan telah mencentang referensi library Ms Data Access Object, karena menggunakan on the fly pun sama beresikonya (kalau ADO bisa lebih luwes) c. khusus untuk koneksi ke database berupa file seperti MS Access, textfile, Excel versi 2003 ke bawah (yang di-save as versi 2003 ke bawah), pakai cara A d. khusus untuk koneksi ke database berupa file seperti MS Access, textfile, Excel versi 2002 ke atas (yang di-save as sesuai versinya), pakai cara B 3. Referensi yang harus dicentang bisa dilihat di nomor 1 dan nomor 2. ADO berpotensi tidak perlu mencentang, yaitu dengan createobject (lihat nomor 1) 4. Kecepatan : DAO lebih cepat dari ADO ketika mengkoneksi MS Access, Text File, dan Excel ADO secara umum lebih cepat dari DAO ketika mengkoneksi DBMS Oracle, MS SQL Server, MySQL, dan beberapa DBMS lain umumnya yang digunakan adalah ADO dengan driver ODBC. Untuk ADO dengan driver OLE DB ke produk Ms SQL Server lebih cepat dibanding ODBC kecuali saat mengeksekusi stored procedure Wassalamu'alaikum wr wbKid 2018-01-15 11:45 GMT+07:00 Tio Adi Bayu Adjie tio.ad...@ptssb.co.id [belajar-excel] <belajar-excel@yahoogroups.com>: Assalamu Alaikum Wr. Wb. Dear Be-Exceller, Saya tertarik dengan contoh consolidate terlampir yang diberikan Pak Hendrik sebelumnya tentang Consolidate dengan menarik data dari worksheet lain dengan ADO. Yg mau saya tanyakan. 1. Adakah contoh sederhana tentang import data sederhana (bukan consolidate) dari workbook lain dengan ADO dan dengan DAO ? 2. Apakah ada syarat tertentu, seperti excel versi 2010 atau versi yg lebih tinggi atau bisa dengan versi yang lebih rendah ? 3. Apakah ada reference tertentu yang harus di centang, seperti Microsoft office 14.0 Object Library atau reference lainnya ? 4. Import data mana yang lebih cepat, dengan ADO atau DAO ? Terima Kasih Wassalamu alaikum Wr. Wb. Best Regards, Tio Adi Bayu Adjie