[belajar-excel] Impor Data Dari text File ke Excel terkait dengan TextFileColumnDataTypes

classic Classic list List threaded Threaded
7 messages Options
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

[belajar-excel] Impor Data Dari text File ke Excel terkait dengan TextFileColumnDataTypes

Milis Belajar Excel mailing list
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
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

Re: [belajar-excel] Impor Data Dari text File ke Excel terkait dengan TextFileColumnDataTypes

Milis Belajar Excel mailing list
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 [hidden email] [belajar-excel] <[hidden email]> 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
>
>
>
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

Re: [belajar-excel] Impor Data Dari text File ke Excel terkait dengan TextFileColumnDataTypes

Milis Belajar Excel mailing list
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' [hidden email] [belajar-excel] <
[hidden email]> 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 [hidden email] [belajar-excel] <
> [hidden email]> 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
>
>
>
>
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

Re: [belajar-excel] Impor Data Dari text File ke Excel terkait dengan TextFileColumnDataTypes

Milis Belajar Excel mailing list
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 [hidden email] [belajar-excel] <
[hidden email]>:

>
>
> 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' [hidden email] [belajar-excel] <
> [hidden email]> 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 [hidden email] [belajar-excel] <
>> [hidden email]> 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
>>
>>
>>
>
>
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

Re: [belajar-excel] Impor Data Dari text File ke Excel terkait dengan TextFileColumnDataTypes

Milis Belajar Excel mailing list
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' [hidden email]
[belajar-excel]" <[hidden email]> 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 [hidden email] [belajar-excel] <
> [hidden email]>:
>
>>
>>
>> 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' [hidden email] [belajar-excel] <
>> [hidden email]> 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 [hidden email] [belajar-excel]
>>> <[hidden email]> 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
>>>
>>>
>>>
>>
>
>
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

Re: [belajar-excel] Impor Data Dari text File ke Excel terkait dengan TextFileColumnDataTypes

Milis Belajar Excel mailing list
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 [hidden email] [belajar-excel] <
[hidden email]>:

>
>
> 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' [hidden email] [belajar-excel] <
> [hidden email]> 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 [hidden email] [belajar-excel] <
>> [hidden email]>:
>>
>>>
>>>
>>> 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' [hidden email]
>>> [belajar-excel]" <[hidden email]> 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 [hidden email] [belajar-excel]
>>>> <[hidden email]>:
>>>>
>>>>>
>>>>>
>>>>> 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' [hidden email]
>>>>> [belajar-excel] <[hidden email]> 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 [hidden email]
>>>>>> [belajar-excel] <[hidden email]> 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
>>>>>>
>>>>>>
>>>>>>
>>>>>
>>>>
>>
>
>
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

Re: [belajar-excel] Impor Data Dari text File ke Excel terkait dengan TextFileColumnDataTypes

Milis Belajar Excel mailing list
makasih pak kid, nanti saya pelajari dulu

untuk link
http://excel-mr-kid.blogspot.co.id/2011/07/koneksi-data-ke-text-file-01.html

ini kayanya jawaban dari kasus saya yang sebelumnya



Pada 20 April 2017 22.07, 'Mr. Kid' [hidden email] [belajar-excel] <
[hidden email]> menulis:

>
>
> 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 [hidden email] [belajar-excel] <
> [hidden email]>:
>
>>
>>
>> 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' [hidden email] [belajar-excel] <
>> [hidden email]> 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 [hidden email] [belajar-excel]
>>> <[hidden email]>:
>>>
>>>>
>>>>
>>>> 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' [hidden email]
>>>> [belajar-excel]" <[hidden email]> 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 [hidden email]
>>>>> [belajar-excel] <[hidden email]>:
>>>>>
>>>>>>
>>>>>>
>>>>>> 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' [hidden email]
>>>>>> [belajar-excel] <[hidden email]> 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 [hidden email]
>>>>>>> [belajar-excel] <[hidden email]> 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
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>
>>>>>
>>>
>>
>
>
Loading...