2020年10月24日 星期六

Excel VBA 批次處理檔案:四個純文字檔案範例(txt檔)

這篇把一些收集純文字TXT資料的方法做一些整理。

方案一:

如果你的檔案內容資料堆壘是由上往下,長得像這樣:

image

fn = FreeFile '設定為FreeFile 函數

Dim InputStr As String

Open "F:\TEST.txt" For Input As #fn 

 '開啟F:\TEST.txt檔案。雙引號內可以自己改路徑跟檔名歐               

     While Not EOF(fn) '判斷檔案是否到最後一行
                
         Line Input #fn, InputStr '從檔案讀出一列,
         
         Debug.Print InputStr '在即時運算視窗印出來

    Wend
    
 Close #fn '關閉檔案

方案二:

如果你的檔案內容資料堆壘是由左往右,且是用tab做區隔的:

image

                   fn = FreeFile '設定為FreeFile 函數

                   Open "F:\TEST.txt" For Input As #fn 

                     '開啟F:\TEST.txt檔案。,雙引號內可以自己改路徑跟檔名歐
                          
                    Line Input #fn, InputStr '從檔案讀出一列,
                    
                    If Len(InputStr) > 0 Then '略過無字串的空行
                    
                    arrStr = Split(InputStr, vbTab) 

                    ' 把讀入的文字列依tab間隔分成數個字串, 置於 arrStr 陣列裡
                    
                        For j = LBound(arrStr) To UBound(arrStr)

                     '用lbound與ubound控制迴圈起始與結束
                        
                            Debug.Print arrStr(j)

                         '把字串一個一個在即時運算視窗,印出來。
                                                      
                        Next j
                    
                    End If
                    
                Close #fn


方案三:

如果你的檔案內容資料堆壘是由左往右,且是用逗號(,)做區隔的(csv檔案):

image

                    fn = FreeFile '設定為FreeFile 函數

                   Open "F:\TEST.txt" For Input As #fn  

                    '開啟F:\TEST.txt檔案。,雙引號內可以自己改路徑跟檔名歐
                          
                    Line Input #fn, InputStr '從檔案讀出一列,
                    
                    If Len(InputStr) > 0 Then '略過無字串的空行
                    
                    arrStr = Split(InputStr, ",") 

                    ' 把讀入的文字列依逗號分成數個字串, 置於 arrStr 陣列裡 '
                    
                        For j = LBound(arrStr) To UBound(arrStr) 

                        '用lbound與ubound控制迴圈起始與結束
                        
                            Debug.Print arrStr(j)

                             '把字串一個一個在即時運算視窗,印出來。
                                                      
                        Next j
                    
                    End If
                    
                Close #fn

方案四:

如果檔案不止一行,且單行多筆資料,

則加上 While Not EOF(fn)~Wend迴圈控制即可,如下:

               fn = FreeFile '設定為FreeFile 函數

               Open "F:\TEST.txt" For Input As #fn  '開啟 tt.txt 檔
                          
               While Not EOF(fn) '迴圈判斷是否到最後一行
                          
                    Line Input #fn, InputStr '從檔案讀出一列,
                    
                    If Len(InputStr) > 0 Then '略過無字串的空行
                    
                    arrStr = Split(InputStr, ",") 

                    ' 把讀入的文字列依逗號分成數個字串, 置於 arrStr 陣列裡
                    
                        For j = LBound(arrStr) To UBound(arrStr) 

                        '用lbound與ubound控制迴圈起始與結束
                        
                            Debug.Print arrStr(j) 

                            '把字串一個一個在即時運算視窗,印出來。
                                                      
                        Next j
                    
                    End If
                
                Wend
                    ㄖ
                Close #fn


Excel vba 文書自動化(SPC 管制圖自動化) 技術實作篇 (讀純文字檔,四個操作方式),不會有EXCEL版的操作歐,EXCEL版操作 可參考

沒有留言:

張貼留言

我的雷達:2024/11/15

  似乎有一種不安的味道