延續 Excel VBA:批次檔案處理 (TXT 純文字檔案;架構) 這一篇,
做一般excel檔案操作,相對簡單的。
流程類似txt檔案;
前處理:筆者用 EXCEL VBA 開啟檔案 FileDialog應用 做使用。
資料處理:以有使用的行與列判斷資料位置。
輸出資料處理結果:直接貼在工作表2中。簡單處理。
以上流程僅需要2個命令按鈕跟2個工作表。
'第一個按鈕(commandbutton1):清除工作表2資料與格式
Private Sub CommandButton1_Click()
Sheets("工作表2").Cells.Clear
End Sub
'第二個按鈕(commandbutton1):'檔案批次處理。
Private Sub CommandButton2_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:=","
'修改這部分即可
Workbooks.Open Filename:=FILE_OPEN.SelectedItems(i)
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
2021.10.18更新:
參考檔案下載
沒有留言:
張貼留言