延續 Excel VBA:批次檔案處理 (TXT 純文字檔案;架構) 這一篇,與
Excel VBA入門:開啟純文字檔(txt);Workbooks.OpenText
大概已經知道整個處理流程;
本篇就是操作面做說明。
前處理:筆者用 EXCEL VBA 開啟檔案 FileDialog應用 做使用。
資料處理:以有使用的行與列判斷資料位置。
輸出資料處理結果:直接貼在工作表2中。簡單處理。
以上流程僅需要2個命令按鈕跟2個工作表。
原始資料:
第一個按鈕(commandbutton1):清除工作表2資料與格式
Private Sub CommandButton1_Click()
Sheets("工作表2").Cells.Clear
End Sub
第二個按鈕(commandbutton1):txt檔案批次處理。
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Private Sub CommandButton1_Click() | |
Dim FILE_OPEN As FileDialog '宣告FILE_OPEN為檔案對話框 | |
Set FILE_OPEN = Excel.Application.FileDialog(msoFileDialogFilePicker) | |
'設定FILE_OPEN為選取檔案功能 | |
FILE_OPEN.InitialFileName = Excel.ActiveWorkbook.Path | |
'對話框開始目錄的設定 | |
FILE_OPEN.Filters.Add "Excel File", "*.xls*" | |
'設定對話框要顯示的副檔名 | |
FILE_OPEN.Filters.Add "所有檔案", "*.*" | |
FILE_OPEN.Show '顯示對話框 | |
For i = 1 To FILE_OPEN.SelectedItems.Count | |
Source = Excel.ActiveWorkbook.Name | |
'儲存目前作業中檔案名稱 | |
Windows(Source).Activate | |
'啟用目前作業中檔案名稱 | |
Workbooks.OpenText Filename:=FILE_OPEN.SelectedItems(i), _ | |
DataType:=xlDelimited, Other:=True, OtherChar:="," | |
WORKNAME = Excel.ActiveWorkbook.Name | |
Windows(WORKNAME).Activate | |
s1 = ActiveSheet.UsedRange.Columns.Count | |
'取得總使用行數 | |
s2 = ActiveSheet.Range("a656536").End(xlUp).Row | |
'取得資料總列的方法 | |
temp = ActiveSheet.Range(ActiveSheet.Cells(1, 1),_ | |
ActiveSheet.Cells(s2, s1)).Value | |
Windows(WORKNAME).Close | |
Windows(Source).Activate | |
Sheets("工作表2").Activate | |
s3 = ActiveSheet.Range("a65360").End(xlUp).Row | |
'取得總使用列數 | |
If s3 = 1 Then '資料空白時 | |
ActiveSheet.Range(ActiveSheet.Cells(1, 1), _ | |
ActiveSheet.Cells(s2, s1)) = temp | |
Else | |
'向下堆壘資料 | |
ActiveSheet.Range(ActiveSheet.Cells(s3 + 1, 1),_ | |
ActiveSheet.Cells(s3 + s1, s1)) = temp | |
End If | |
Next i | |
end sub |
執行結果:
缺點:OpenText開檔速度慢了點。
待續:txt其實有時候會存在轉碼問題。
其他:Csv、.Xls.Xlsm等比較簡單,另篇說明。
沒有留言:
張貼留言