oke maksih pak penjelasanya.. mudah di pahami. jadiketika data yang mau saya ambil selalu ada di a5 tinggal ganti makro yang di module1
AmbilData sFileName, 1, "a2", rngDBAnchor.Offset(0, 1), sErrMsg AmbilData sFileName, 1, "a5", rngDBAnchor.Offset(0, 1), sErrMsg dan penjelasan lainya merupakan bonus hehehe suwun pak. Pada Sabtu, 11 Januari 2014 15:08, Mr. Kid <[email protected]> menulis: Hai LB, Pada prosedur MergeFiles : >> data daftar nama file ada di baris berbunyi : Set rngFiles = Sheet1.Range("d6").CurrentRegion.Resize(, 1) 'definisi daftar file >> teks folder dari si nama file ada di baris berbunyi : sPath = Sheet1.Range("d4").Value & "\" 'ambil nilai path >> proses mengambil data dilakukan dalam loop per nama file yang disimpan dalam >> variabel rngFiles, pada blok for each >> dalam blok for each tersebut, nama file lengkap (full name) disusun dengan >> baris berbunyi : sFileName = sPath & rngFile.Value 'susun nama file lengkap >> tabel target didefinisikan oleh baris : (header pertama [terkiri] dari tabel >> lokasi hasil penggabungan) Set rngDBAnchor = Sheet2.Range("a1") 'definisi anchor header tabel >> ketika file sumber data ada, maka proses pengambilan data dari file tersebut >> dilakukan oleh baris berbunyi : AmbilData sFileName, 1, "a2", rngDBAnchor.Offset(0, 1), sErrMsg Artinya, proses pengambilan data dilakukan oleh prosedur bernama AmbilData. Deklarasi prosedur tersebut berbunyi : '------------------------------------- 'Prosedur AmbilData : '------------------------------------- 'Input : 'sFileFullName :: string :: nama file lengkap beserta path dan ekstensinya yang akan diambil datanya 'vSht :: variant :: nama sheet atau indeks sheet lokasi data di sFileFullName 'sFirstFieldAddress :: string :: alamat cell baris pertama pada kolom pertama data 'rngAnchorTargetTable :: range :: object range header pertama di lokasi paste values '------------------------------------- 'Kid, Jakarta, 2012-12-16, Excel VBA '------------------------------------- Public Sub AmbilData(sFileFullName As String, vSht As Variant, sFirstFieldAddress As String, _ rngAnchorTargetTable As Range, Optional sRes As String = vbNullString) Jadi, prosedur ambil data membutuhkan data inputan berupa : 'sFileFullName :: string :: nama file lengkap beserta path dan ekstensinya yang akan diambil datanya 'vSht :: variant :: nama sheet atau indeks sheet lokasi data di sFileFullName 'sFirstFieldAddress :: string :: alamat cell baris pertama pada kolom pertama data 'rngAnchorTargetTable :: range :: object range header pertama di lokasi paste values Pada baris pengambilan data di prosedur MergeFiles tadi, yang berbunyi : AmbilData sFileName, 1, "a2", rngDBAnchor.Offset(0, 1), sErrMsg berarti si prosedur AmbilData diberi inputan : 1. variabel teks sFileName (milik prosedur mergefiles yang sudah berisi nama file lengkap) untuk parameter input bernama sFileFullName (milik prosedur AmbilData) yang bertipe string ( As String ) yang bertindak sebagai :: nama file lengkap beserta path dan ekstensinya yang akan diambil datanya 2. nilai 1 (milik prosedur mergefiles) untuk parameter input bernama vSht (milik prosedur AmbilData) yang bertipe variant ( As Variant ) yang bertindak sebagai :: nama sheet atau indeks sheet lokasi data di sFileFullName 3. nilai teks berbunyi "a2" (milik prosedur mergefiles) untuk parameter input bernama sFirstFieldAddress (milik prosedur AmbilData) yang bertipe string ( As String ) yang bertindak sebagai :: alamat cell baris pertama pada kolom pertama data 4. variabel object range rngDBAnchor.Offset(0, 1) (milik prosedur mergefiles yang merujuk ke kolom ke-2 [di 1 kolom setelah kolom rngDBAnchor karena kolom rngDBAnchor akan diisi nama file [tanpa ekstensi]) untuk parameter input bernama rngAnchorTargetTable (milik prosedur AmbilData) yang bertindak sebagai :: object range header pertama di lokasi paste values 5. variabel teks sErrMsg (milik prosedur Mergefiles yang masih kosong) untuk parameter input bernama sRes (milik prosedur AmbilData) yang bertindak sebagai penampung teks pesan error. Seluruh proses Dari penjelasan di atas, jika : A. daftar nama file mulai di sheet bernama DAFTAR_FILE cell KZ321 membentuk sebuah daftar 1 kolom banyak baris dan dikelilingi oleh cell kosong (di atas daftar, di kiri daftar, di kanan daftar, dan di bawah daftar) berarti baris berbunyi : Set rngFiles = Sheet1.Range("d6").CurrentRegion.Resize(, 1) 'definisi daftar file diubah menjadi : Set rngFiles = sheets("DAFTAR_FILE").Range("KZ321").CurrentRegion.Resize(, 1) 'definisi daftar file B. nama folder sumber data disimpan di sheet bernama NAMA_FOLDER cell GJ7, maka baris : sPath = Sheet1.Range("d4").Value & "\" 'ambil nilai path diubah menjadi : sPath = Sheets("NAMA_FOLDER").Range("GJ7").Value & "\" 'ambil nilai path C. tabel hasil penggabungan ada di sheet bernama HASIL_PENGGABUNGAN dan tabel dibuat agak tidak berkaidah database dengan header pertama tabel hasil diletakkan pada cell XY123 dan 1 baris diatas header adalah kosong (baris XY122 dikosongkan) berarti baris berbunyi : Set rngDBAnchor = Sheet2.Range("a1") 'definisi anchor header tabel diubah menjadi : Set rngDBAnchor = sheets("HASIL_PENGGABUNGAN").Range("XY123") 'definisi anchor header tabel D. Nama sheet sumber data disetiap file selalu yang bernama DATA_DARI_NEGERI_SEBERANG dan selalu dimulai dari cell SD45 maka baris pengambilan data yang berbunyi : AmbilData sFileName, 1, "a2", rngDBAnchor.Offset(0, 1), sErrMsg diubah menjadi : AmbilData sFileName, "DATA_DARI_NEGERI_SEBERANG", "SD45", rngDBAnchor.Offset(0, 1), sErrMsg Kira-kira demikian. Jadi, prosedur yang dibentuk seperti AmbilData tersebut dapat disimpan dalam sebuah library dan bisa digunakan secara luas. Programming tidak mengenal template prosedur untuk suatu tugas yang bisa diubah-ubah scriptnya, tetapi yang ada adalah prosedur yang disusun memiliki kemampuan spesifik dan dapat digunakan secara luas. Wassalam, Kid. 2014/1/10 Lazuardi Biru <[email protected]> > >dh > >dear master >mau tanya soal vba_MergeTables_multiplefiles buatan pak kid. > > >kalo data yang mau di ambil pertama di kolom A5 >bunyi makro mana yang harus dirubah. >dan hasil saya letakan di kolom B2 > > >berikut saya lampirkan filenya > > >salam >LB >

