平風造雨 | 【求助】請問匯入文字檔的技巧 小弟目前有將cobol資料庫(其實就是一堆文字檔)轉出 進RDBMS的需求,因此想借助EXCEL將欄位裁切出來 但目前匯入文字檔僅有「固定寬度」這個方法較能準確 將欄位切割(因為以字元辨識切割常會失敗,如果用COBOL 將分隔字元加在文字檔也是可以,但非常麻煩,需每個檔案 幫他寫一支轉文字檔,因此該方法不考慮)。 說了這麼說,其實我想做的就是寫一支可動態輸入欄寬的巨集 例如我在一個inputbox輸入"2,3,12,1......."或在儲存格a1~aX 輸入相關欄位寬度便可自動轉入,否則看著下圖一個一個切,小弟 可能會得亂視。 不知各位可有什麼好方法呢?小弟先行謝過了。 |
回覆 |
Take it easy~ | cinta兄, 這樣看起來... 難道不是空白分隔嗎? 是的話 勾選"連續分隔字元視為單一分隔.." |
回覆 |
平風造雨 | 引用:
因為是早期的系統,所以連一個空格都捨不得浪費 所以由COBOL的公用程式匯出時不見得會有空格把兩 個欄位分開,如果要加入空格,還是要另外寫程式 可是一樣都是寫程式,用VBA會來的快很多 我曾觀察過匯入的巨集錄製如下: array(x,x),array(x,x) 或 array(x,y,z,a,b,c......) 我目前暫時的solution是將欲分割的寬度寫在cell上 在逐一填入array(依欄位的多寡要常修改巨集),如: array(cell(1,1),cell(2,1).....) 但LEO兄與沙拉油兄(應該都比我年輕吧 ) 屢屢有令人驚豔的解法,因此想到PCZONE來 請問各位高見,如有解法,還請不吝賜教,先行謝過囉! | |
回覆 |
Take it easy~ | 這樣.. 你看合不合用吧-- Option Base 1 Public Sub import_text() Dim Array1() As Variant txtfile = "C:\temp\testdata.txt" i = 1 While Cells(i, 1) <> "" ReDim Preserve Array1(i) Array1(i) = Array(Cells(i, 1), 1) i = i + 1 Wend Workbooks.OpenText txtfile, DataType:=xlFixedWidth, FieldInfo:=Array1 End Sub 請將欄寬(正確的說應該是每一欄的起始位置) 輸入在 A 欄, 要從 A1 開始。 注意: 若從第1個字元就要匯入, 則 A1 要輸入 0. 再改一下 txtfile 變數的值, 就可以Run了。 容我稍稍偷懶一下-- 程式裡沒有對 A 欄資料做任何檢查, 你自個兒留意唄 |
回覆 |
Take it easy~ | 不過.. 有點好奇的是, 你怎知道每次每欄切割的位置.. 還得每次輸入... 那麼多欄, 難道一個一個算? |
回覆 |
平風造雨 | 引用:
比我土法所練出來的鋼好多了... 至於欄寬有FD表可以看啊 只要請工讀生一一輸入完 insert進TABLE就OK了.... | |
回覆 |
|
XML | RSS 2.0 | RSS |
本論壇所有文章僅代表留言者個人意見,並不代表本站之立場,討論區以「即時留言」方式運作,故無法完全監察所有即時留言,若您發現文章可能有異議,請 email :[email protected] 處理。