【求助】請問匯入文字檔的技巧 - PCZONE 討論區

返回   PCZONE 討論區 > ▲ -- 電 腦 軟 體 討 論 區 > -- OFFICE 相 關 軟 體 討 論 版


PCZONE 討論區



通知

-- OFFICE 相 關 軟 體 討 論 版 Word、Excel、PowerPoint、Access、Outlook、FrontPage或Office XP等的問題解答與經驗分享

平風造雨
【求助】請問匯入文字檔的技巧
小弟目前有將cobol資料庫(其實就是一堆文字檔)轉出
進RDBMS的需求,因此想借助EXCEL將欄位裁切出來
但目前匯入文字檔僅有「固定寬度」這個方法較能準確
將欄位切割(因為以字元辨識切割常會失敗,如果用COBOL
將分隔字元加在文字檔也是可以,但非常麻煩,需每個檔案
幫他寫一支轉文字檔,因此該方法不考慮)。
說了這麼說,其實我想做的就是寫一支可動態輸入欄寬的巨集
例如我在一個inputbox輸入"2,3,12,1......."或在儲存格a1~aX
輸入相關欄位寬度便可自動轉入,否則看著下圖一個一個切,小弟
可能會得亂視
不知各位可有什麼好方法呢?小弟先行謝過了。

上傳的圖檔
檔案類型: jpg 剪鄂簿01.jpg (53.6 KB, 191 次觀看)
回覆
Take it easy~

cinta兄, 這樣看起來...
難道不是空白分隔嗎? 是的話
勾選"連續分隔字元視為單一分隔.."
回覆
平風造雨

引用:
最初由 Leon Chou 發表
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~

不過.. 有點好奇的是,
你怎知道每次每欄切割的位置..
還得每次輸入...
那麼多欄, 難道一個一個算?
回覆
平風造雨

引用:
最初由 Leon Chou 發表
不過.. 有點好奇的是,
你怎知道每次每欄切割的位置..
還得每次輸入...
那麼多欄, 難道一個一個算?
謝謝,正合所用呢。
比我土法所練出來的鋼好多了...

至於欄寬有FD表可以看啊
只要請工讀生一一輸入完
insert進TABLE就OK了....

回覆







 XML   RSS 2.0   RSS 
本站使用 vBulletin 合法版權程式
站務信箱 : [email protected]

本論壇所有文章僅代表留言者個人意見,並不代表本站之立場,討論區以「即時留言」方式運作,故無法完全監察所有即時留言,若您發現文章可能有異議,請 email :[email protected] 處理。