喜歡攝影的我,喜歡到處拍拍照,吃點當地的特色食物。 跟朋友聊天之餘,推薦我寫成網誌跟大家分享。 沒外出的日子,喜歡在家當隱性宅,寫程式看看書,追劇。 希望我的手札文,不會讓你翻桌 XD
2020年10月24日 星期六
Excel VBA:批次檔案處理 (一般excel檔案處理;csv、xlsm、xls....)
延續 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更新:
參考檔案下載
累積營收與月營收簡單資料整理分析:2020.9月份
小編整理了一份2020年9月份營收的資料,作簡單分享。
全部資料都是透過VBA自動化作成的。
概念股清單,參考GOODINFO網站的清單建立的,
當然也是VBA作的。
累績營收成長衰退:
為"本期累積營收"減去"去年同期累積營收"再除以"去年同期累積營收"計算後繪製成圖。

營收成長衰退:
為"本期營收"減去"去年同期營收"再除以"去年同期營收"計算後繪製成圖。

根據卷商網站資料重作更新如下:


Excel VBA:減資資料擷取
最近想針對減資這個做一個資料整理,本來是想在財報裡整理舊資料做彙整,
但是發現收集的資料不夠久,所以決定寫一個專門整理這類資料的VBA
架構:
按鈕一:輸入股票代號>收集"變更公司執照"時間>彙整"變更公司執照"時間並列表
按鈕二:按照"變更公司執照"時間開始擷取"實收股本金額(元)"此項資料
成品:

後記,大約寫了219行,接下來思考如何以批次方式做上市公司股號作批次處理與收集資料
Excel VBA:批次檔案處理 (TXT 純文字檔案;操作)
延續 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檔案批次處理。
執行結果:

缺點:OpenText開檔速度慢了點。
待續:txt其實有時候會存在轉碼問題。
其他:Csv、.Xls.Xlsm等比較簡單,另篇說明。
Excel VBA入門:開啟純文字檔(txt);Workbooks.OpenText
語法參考MSDN:Workbooks.OpenText
練習了一下:
以TAB當間隔時:

Private Sub CommandButton1_Click()
FILEPATH = ActiveWorkbook.Path ' 取得目前啟用中工作簿路徑
Workbooks.OpenText FileName:=FILEPATH & "\TEST.txt", _
DataType:=xlDelimited, Tab:=True
End Sub
開啟後:

以逗號當間隔時:

Private Sub CommandButton1_Click()
FILEPATH = ActiveWorkbook.Path ' 取得目前啟用中工作簿路徑
Workbooks.OpenText FileName:=FILEPATH & "\TEST.txt", _
DataType:=xlDelimited, Comma:=True
End Sub

10.18新增:
筆者比較喜歡這個寫法,透過other設定為true,
就可以用OtherChar這個方式,做分割字元設定使用。
Private Sub CommandButton1_Click()
FILEPATH = ActiveWorkbook.Path
Workbooks.OpenText Filename:=FILEPATH & "\TEST.txt", _
DataType:=xlDelimited, Other:=True, OtherChar:=","
End Sub
指數變化(2026.07.31) 開始透過AI做整理
指數變化(2026.07.31) 開始透過AI做整理 一、上周焦點: 7/27 美國 耐久財訂單(6 月) - 全部耐久財訂單月增 0.3%,結束前一月 -4.0% 的跌勢,增幅低於市場預期約 1.8%。 - 核心耐久財(扣除運輸設備)約月增 0.6%,顯示一般設備需求溫...
-
美國實質可支配所得 利率與黃金 消費者信心 利率PK DW PK FED紐約分行 上海貨櫃指數 BDI CRB 美國m 1 m2 s&p 美國 非農 美國 非農就業職務空缺率 美國股市 行事曆 fomc 會議紀要與開會時間 全球股市行事曆 全球股市 巴菲特指數 外...
-
流程(IPO) :Input、Process、Output 流程:一個流程,只要具備有輸入(INPUT)、處理(PROCESS)與輸出(OUTPUT),即可稱為IPO,各流程IPO的掌握不論是在製造業、服務業應用,其實道理都是相同的,應用在程式設計上,更是如此,解析出各流程IP...
-
寫給自己速查 垂直屬性:HorizontalAlignment 水平屬性:VerticalAlignment 置中:xlCenter 靠左靠右:XLLEFT、XLRIGHT Sheets("工作表1").Range("m2").Ve...























