2020年12月2日 星期三

VBA:自動寫存檔

 小編,經常處理很多案子要存檔,感覺滿實用的,寫一篇作整理。

副程式作動原理很簡單,就是直接複製一份要存檔的工作表後,直接存檔,不影響主要作業的工作表。

副程式:

'COPYRIGHT BY dropit.liu.
Function savefile_by5(SOLDTONO, SHEET_TAG,FILE_TYPE)
FILEPATH = ActiveWorkbook.Path
Source = Excel.ActiveWorkbook.Name
Sheets(SHEET_TAG).Copy
WORKNAME = Excel.ActiveWorkbook.Name
'準備存檔輸出。
Application.DisplayAlerts = False
With ActiveWorkbook
A = "Report_" & SOLDTONO & "_" & Format(Now(), "YYYYMMDDHHMM")
Save_Name = FILEPATH & "\" & A
.SaveAs Filename:=Save_Name, FileFormat:=FILE_TYPE
End With
WORKNAME = Excel.ActiveWorkbook.Name
Application.DisplayAlerts = True
Workbooks(WORKNAME).Close
Workbooks(Source).Activate
savefile_by5 = A
End Function


主要有3個參數,
SOLDTONO:設定輸出檔案名稱;EX:"Report_"
SHEET_TAG:要另存新黨的工作表;EX:"SHEET1"
FILE_TYPE:檔案存檔類型;EX:52;此部分可參考MSDN資料
Save_Name = FILEPATH & "\" & A;這一行根據FileFormat:=FILE_TYPE的設定,自己加上& ".xlsm" 這部分歐

應用1:例如現在想要針對"工作表1"作單獨輸出,可以這樣設定(當然要弄一個按鈕先):

Private Sub CommandButton1_Click()
Call savefile_by5("test", "工作表1", 52)
End Sub
view raw gistfile1.txt hosted with ❤ by GitHub

那這時候去檢查目前檔案所在的資料夾就會多一個存檔結果!!

圖1.
應用2:例如現在想要針對"工作表1、工作表2、工作表3"作多輸出,可以這樣設定:




Private Sub CommandButton2_Click()
SHEET_TAG = Array("工作表1", "工作表2", "工作表3")
Call savefile_by5("test", SHEET_TAG , 52)
End Sub

沒有留言:

張貼留言

指數變化(2025.03.28)

 指數變化(2025.03.28) 上周焦點: 美國消費者信心指數 3/25 92.9 美國耐久財訂單月增率 3/26 1.4 PCE 月增 0.4 年增 2.8 (不多阿,最高還有5.5ㄝ)   本周愛看: 美國非農業就業人數變化 美國ISM製造業採購經理人指數 美國芝加哥FE...