oh ok, jadi urutan kolomnya tetap.

Maaf ya, karena sudah terlalu banyak tanya...
Ada baiknya Anda membaca email ini sampai akhir dan berusaha memahaminya.

Untuk kasus Anda ini, sebenarnya bisa (ingat, sebenarnya bisa) diselesaikan
dengan mendefinisikan array tersebut berisi banyak sekali elemen.
Contoh : Array(2,2,2,2,2,dst sampai banyak banget sebanyak jumlah kolom
terbanyak yang mungkin dimiliki oleh suatu text file entah yang mana)
Meski solusinya sederhana demikian, implikasinya tidaklah sederhana walau
tampak seakan akan sudah dinamis.

Begini,
Untuk proses membaca text file (banyak text file) dan akan disalin ke
sebuah worsheet, umumnya dilakukan dengan salah satu cara berikut :
1. memanfaatkan data connection ke text file.
    > Cara ini mengandalkan file schema.ini di sebuah folder yang berisi
text file yang akan dibaca
    > Cara ini cocok untuk delimited text file.
    > Dalam schema.ini hanya berisi 1 nama file, misalnya myText.txt
    > Di Excel, pada sebuah sheet dibuat data connection ke text file yang
merujuk ke nama file myText.txt
    > Proses di dalam VBA adalah :
       1. meng-copy text file asal (misal bernama a.txt) ke folder berisi
schema.ini tadi, dengan nama text file diganti menjadi myText.txt
       2. melakukan proses refresh
       3. melakukan copy dari sheet hasil data connection (misal bernama
sheet 'Koneksi') dan paste values ke sheet 'KumpulanData'
       *** Jadi, misal di folder bernama SumberTextFile berisi file a.txt,
b.txt, c.txt dsb
       *** di folder bernama Proses berisi schema.ini (dibuat dengan
notepad) dan text file bernama myText.txt
       *** Proses loop berisi :
              1. copy a.txt dari folder bernama SumberTextFile ke folder
Proses dengan nama file menjadi myText.txt
                       Filecopy "D:\SumberTextFile\" & sFile ,
"D:\Proses\myText.txt"      'sfile akan berganti isinya tergantung proses
loop
              2. Refresh
                       thisworkbook.refreshall
              3. copas value antar sheet

sheets("Koneksi").range("a1").currentregion.offset(1).copy
                        with sheets("KumpulanData")

.cells(.rows.count,1).end(xlup).offset(1).pastespecial xlpastevalues
'sesuaikan opsi jenis pastenya sesuai kebutuhan
                        end with

        ## Cara ini memiliki keuntungan karena dimungkinkan adanya
pengolahan terhadap data (bisa dilakukan ETL terhadap isi text file)
menggunakan query, misalnya mengagregat atau memfilter dan sebagainya. Jadi
yang diambil dari textfile bisa pada record terpilih atau kolom-kolom
tertentu maupun kolom-kolom baru hasil komputasi tertentu.
        ## Prosesnya cepat, nama file yang diproses tetap, yaitu myText.txt
        ## lebih lengkap tentang membuat koneksi ke sebuah text file bisa
dilihat mulai dari sini
<http://excel-mr-kid.blogspot.co.id/2011/07/koneksi-data-ke-text-file-01.html>
.
        ## Pada dasarnya datatype akan disesuaikan dengan isi kolom
tersebut.

2. memanfaatkan methods OpenText milik object Workbooks.
    > Silakan lihat di Excel VBA Help -> Excel Object Model References ->
Workbooks -> OpenText
    > Cocok untuk text file yang mencerminkan datatype setiap kolom
(berapapun kolomnya, statis maupun dinamis) yang konsisten.
    > Permasalahan yang merepotkan adalah penentuan datatype setiap field
jika memang dibutuhkan karena tidak konsistennya datatype setiap nilai
dalam sebuah kolom tertentu. Karena diperlukan tabel referensi yang
mendefinisikan setiap karakteristik text file pada suatu sheet
    > Jika datatype nya sama untuk setiap kolom akan dipaksa bertipe text,
maka perlu pendifinisian array pada inputan fieldinfo
    > Jika datatype nya sama untuk setiap kolom, tetapi jumlah kolomnya
dinamis, maka pendefinisian array pada inputan fieldinfo cukup
didefinisikan sebanyak jumlah kolom terbanyak yang diperkirakan. Misal,
semua file yang dibaca tidak mungkin punya kolom melebihi 50 bijik, maka
langsung buat array fieldinfo berisi 49 elemen.
    > Proses loop berisi :
       1. membuka text file yang di loop dengan workbooks.opentext
       2. melakukan copas value dari hasil workbooks.opentext ke workbook
lokasi sheet tujuannya. Misal ke sheet 'kumpulan data'
       3. menutup workbooks hasil workbooks.opentext tanpa di-save agar isi
text file tidak berubah.

3. Membaca setiap baris text file dan melakukan parse (split text)
     > Proses loop berisi :
         1. membuka text file dengan Open filenya for input as blabla dan
seterusnya
         2. loop setiap baris isi text file dengan do while not eof blabla
         3. menyimpan isi baris ke sebuah variabel string
         4. melakukan split text dan menyimpannya ke sebuah variabel array
bertipe string dengan split( variabel_isi_baris , delimiternya )
         5. menulis array hasil split text ke worksheet tujuan
         6. menutup text file dengan close blabla

--- Kembali ke kasus ---
Pada kasus Anda ini, yang digunakan adalah fitur Get External Data (untuk
membentuk query table) tapi memanfaatkan opentext (Anda record macro nya
dengan ribbon Get External Data -> pilih From Text File).
Proses membuat query table disetiap kali membaca text file baru yang
di-loop adalah kegiatan yang mubazir.
Proses split text oleh opentext yang dilakukan berulang dengan ditentukan
array fieldinfo datatype nya yang terlalu banyak karena jumlah kom yang
berbeda-beda antar text file juga menambah beban.
Ada baiknya, Anda beralih untuk menggunakan cara 1.
--------------------------------

Regards,
Kid



2017-04-20 11:43 GMT+07:00 him mah [email protected] [belajar-excel] <
[email protected]>:

>
>
> kalau wadah sheet nya sih ngga masalah pak, berapapun kolomnya
>
> yang masalah adalah jumlah kolom yang ada di text filenya
> terkait dengan TextFileColumnDataTypes
>
> kalau  8 kolom seperti ini
> Array(1,1,1,1,1,1,1,1)
>
> kalau  10 kolom seperti ini
> Array(1,1,1,1,1,1,1,1,1,1)
>
> kalau  15 kolom seperti ini
> Array(1,1,1,1,1,1,1,1,1,1,1,1,1,1,1)
>
>
> jadi gimana mencuat array nya menjadi dinamis sesuai dengan jumlah kolom
> yang ada di text filenya
>
> terima kasih
>
>
>
> Pada 20 April 2017 10.23, 'Mr. Kid' [email protected] [belajar-excel] <
> [email protected]> menulis:
>
>>
>>
>> hmmm....
>>
>> 1. Berarti a.txt yang berisi 8 kolom (misalnya) dengan b.txt yang berisi
>> 17 kolom (misalnya) memiliki 8 kolom pertama yang sama ?
>> 2. Sedang c.txt yang berisi 23 kolom (misalnya) akan memiliki 8 kolom
>> pertama yang sama dengan a.txt dan b.txt, dan 17 kolom pertama yang sama
>> dengan b.txt ?
>> 3. Wadah data (sebuah sheet tempat menyimpan data dari kedua .txt file
>> tersebut) berisi banyak kolom mengikuti jumlah kolom terbanyak yang sudah
>> diketahui ? (misal 49 kolom, karena terkadang atau pernah ada z.txt yang
>> berisi 49 kolom)
>>
>> Demikiankah ?
>>
>> Regards,
>> Kid
>>
>>
>>
>>
>>
>>
>> 2017-04-18 14:25 GMT+07:00 him mah [email protected] [belajar-excel] <
>> [email protected]>:
>>
>>>
>>>
>>> Seperti itu pak kid. Cuma sheet hasilnya cuma satu. Data akan
>>> ditambahkan dibaris selanjutnya.
>>>
>>> Yang jadi masalah adalah jumlah kolom yang ada di text file
>>>
>>> Pada tanggal 18 Apr 2017 12:54, "'Mr. Kid' [email protected]
>>> [belajar-excel]" <[email protected]> menulis:
>>>
>>>>
>>>>
>>>> hmmm....
>>>> Setiap file txt yang dibaca akan di copy menambahkan di sheet tertentu
>>>> yang sesuai ya.
>>>> Jadi ada 3 txt file :
>>>> a.txt akan di-copy menambahkan data di sheet dtA,
>>>> b.txt akan di-copy menambahkan data di sheet dtB,
>>>> c.txt akan di-copy menambahkan data di sheet dtC.
>>>>
>>>> Tapi nama txt filenya tidak tetap, seperti bulan ini namanya
>>>> a-Apr17.txt, b-Apr17.txt, c-Apr17.txt
>>>> Jumlah kolom di a.txt berbeda dengan di b.txt dan berbeda dengan c.txt.
>>>>
>>>> Begitu ya ?
>>>>
>>>>
>>>> 2017-04-18 7:18 GMT+07:00 him mah [email protected] [belajar-excel]
>>>> <[email protected]>:
>>>>
>>>>>
>>>>>
>>>>> sebenarnya tujuannya akan dibuat database excel dari beberapa file txt
>>>>> jadi untuk file D:\aku.txt
>>>>> akan dibuat dinamis sesuai dengan lsit file yang ada di sheet
>>>>>
>>>>> mungkin ada cara lain pak kid
>>>>>
>>>>> Pada 17 April 2017 19.35, 'Mr. Kid' [email protected]
>>>>> [belajar-excel] <[email protected]> menulis:
>>>>>
>>>>>>
>>>>>>
>>>>>> Boleh tahu kenapa pakai VBA?
>>>>>> Bagaimana kalau pakai data connection saja yang tanpa VBA?
>>>>>>
>>>>>> Regards,
>>>>>> Kid
>>>>>> Sent from my smart enough phone
>>>>>>
>>>>>> On Apr 17, 2017, at 13:10, him mah [email protected]
>>>>>> [belajar-excel] <[email protected]> wrote:
>>>>>>
>>>>>>
>>>>>>
>>>>>> dear all
>>>>>>
>>>>>> maaf mau tanya lagi terkait dengan
>>>>>> impor data dari text file ke excel
>>>>>>
>>>>>> kalau dari menu record macro
>>>>>> terbentuk kode seperti ini
>>>>>>
>>>>>>
>>>>>>     With ActiveSheet.QueryTables.Add(Connection:= _
>>>>>>         "TEXT;" & D:\aku.txt" _
>>>>>>         , Destination:=Worksheets("Sheet 1").Range("$A$1"))
>>>>>>         .Name = "ImportingFileName"
>>>>>>         .FieldNames = False
>>>>>>         .RowNumbers = False
>>>>>>         .FillAdjacentFormulas = False
>>>>>>         .PreserveFormatting = True
>>>>>>         .RefreshOnFileOpen = False
>>>>>>         .RefreshStyle = xlInsertDeleteCells
>>>>>>         .SavePassword = False
>>>>>>         .SaveData = True
>>>>>>         .AdjustColumnWidth = True
>>>>>>         .RefreshPeriod = 0
>>>>>>         .TextFilePromptOnRefresh = False
>>>>>>         .TextFilePlatform = 437
>>>>>>         .TextFileStartRow = 2
>>>>>>         .TextFileParseType = xlDelimited
>>>>>>         .TextFileTextQualifier = xlTextQualifierDoubleQuote
>>>>>>         .TextFileConsecutiveDelimiter = False
>>>>>>         .TextFileTabDelimiter = False
>>>>>>         .TextFileSemicolonDelimiter = False
>>>>>>         .TextFileCommaDelimiter = True
>>>>>>         .TextFileSpaceDelimiter = False
>>>>>>         .TextFileColumnDataTypes = Array(1,1,1,1,1,1,1,1)
>>>>>>         .TextFileTrailingMinusNumbers = True
>>>>>>         .Refresh BackgroundQuery:=False
>>>>>>     End With
>>>>>>
>>>>>>
>>>>>> yang masih menjadi kendala adalah di baris
>>>>>>
>>>>>>         .TextFileColumnDataTypes = Array(2,2,2,2,2,2,2,2)
>>>>>>
>>>>>> kalau seperti yang diatas kan jumlah kolomnya ada 8
>>>>>> misal kita tidak tahu jumlah kolomnya ada berapa
>>>>>> bisa 8 bisa lebih kecil atau bisa lebih besar
>>>>>>
>>>>>> kira-kira untuk
>>>>>>
>>>>>> baris tersebut modifikasi seperti apa ya
>>>>>>
>>>>>>
>>>>>> terima kasih
>>>>>>
>>>>>>
>>>>>>
>>>>>
>>>>
>>
> 
>

Kirim email ke