Pak HK, Excel 12.0 diikuti : Xml : untuk xlsx Macro : untuk xlsm tanpa keduanya : untuk xlsb, xlsx, dan xlsm
Excel 8.0 tidak ada ikutannya karena semuanya xls dan berlaku untuk xl2002 (mungkin malah dari sebelumnya, tapi setelah Excel 4) dan xl2003 Regards, Kid 2018-01-16 17:13 GMT+07:00 hendrik karnadi hendrikkarn...@yahoo.com [belajar-excel] <belajar-excel@yahoogroups.com>: > > > 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 wb > Kid > > > > 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 > > > > > >