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
>

Kirim email ke