Board logo

標題: 請問如何每月VBA創建資料夾 [打印本頁]

作者: bear0925900003    時間: 2013-7-26 19:18     標題: 請問如何每月VBA創建資料夾

本帖最後由 GBKEE 於 2013-7-27 09:09 編輯

小弟不才想自行製作財務報表,其內容包括日報表、周報表、月報表
想請各位大大幫忙解決的問題如下:
1.利用VBA於每月月初開啟財報檔案時自動創建一個以月份為資料夾名稱之資料夾
2.資料夾每月固定於月初創建一次,內含小弟所製作的日報表、周報表、月報表之空白表單
3.每月所製作的財報記錄自動儲存於該月資料夾中
4.因財報為連續性文件,因此須於每月月初資料夾創建時,自動刷新刪除表格記錄之資料

若有大大能幫忙解決上述之問題,小弟感激萬分!!
作者: GBKEE    時間: 2013-7-27 09:08

回復 1# bear0925900003
試試看
  1. Option Explicit
  2. '***表單範本.xls (空白表單的活頁簿)-> 因財報為連續性文件,因此須於每月月初資料夾創建時,自動刷新刪除表格記錄之資料
  3. Const 表單資料夾 = "D:\"        '請製作  **** D:\表單範本.xls (空白表單) *********
  4. Const 表單名稱 = "報表單.xls"   '月報表活頁簿名稱
  5. Sub Auto_Open() '一般模組(Module1) 開啟檔案自動執行的程序
  6.     Dim Fs As Object, xlMonth As String
  7.     xlMonth = 表單資料夾 & Format(Date, "YYYYMMDD 財務報表")    '每月的資料夾
  8.     If Dir(xlMonth, vbDirectory) = "" Then MkDir (xlMonth) 'vbDirectory 16 除無屬性的檔案外,另指定路徑或檔案夾。
  9.     Set Fs = CreateObject("Scripting.FileSystemObject").GetFile(表單資料夾 & "\表單範本.xls")
  10.     If Dir(xlMonth & "\" & 表單名稱) = "" Then Fs.Copy xlMonth & "\" & 表單名稱          '複製表單範本(空白表單) 改名為 "報表單.xls"
  11. End Sub
複製代碼

作者: bear0925900003    時間: 2016-12-14 14:00

請問大大Const 表單資料夾 = "D:\"是屬於預設儲存路徑
如何把Const 表單資料夾指定在A1儲存格,讓儲存格在輸入路徑後可以改變儲存路徑
作者: c_c_lai    時間: 2016-12-15 05:44

回復 3# bear0925900003
請將你的檔案上傳,以方便解題者之詮釋,
謝謝。
作者: bear0925900003    時間: 2016-12-15 09:09

可否將GBKEE大大於本篇提出的程式碼稍作修改,條件如下
Option Explicit
'***表單範本.xls (空白表單的活頁簿)-> 因財報為連續性文件,因此須於每月月初資料夾創建時,自動刷新刪除表格記錄之資料
Const 表單資料夾 = "D:\"        '← "D:\" 可否指定儲存格內容(在儲存格內輸入路徑)
Const 表單名稱 = "報表單.xls"   
Sub Auto_Open()
    Dim Fs As Object, xlMonth As String
    xlMonth = 表單資料夾 & Format(Date, "YYYY年MM月財務報表")   '←如何使日期顯示往前一個月,例如本月為2016年12月顯示為2016年11月
    If Dir(xlMonth, vbDirectory) = "" Then MkDir (xlMonth)
    Set Fs = CreateObject("Scripting.FileSystemObject").GetFile(表單資料夾 & "\表單範本.xls")
    If Dir(xlMonth & "\" & 表單名稱) = "" Then Fs.Copy xlMonth & "\" & 表單名稱         
End Sub
作者: GBKEE    時間: 2016-12-15 10:00

回復 5# bear0925900003
試試看
  1. Option Explicit
  2. '***表單範本.xls (空白表單的活頁簿)-> 因財報為連續性文件,因此須於每月月初資料夾創建時,自動刷新刪除表格記錄之資料
  3. 'Const 表單資料夾 = "D:\"        '← "D:\" 可否指定儲存格內容(在儲存格內輸入路徑)
  4. 'Const 表單名稱 = "報表單.xls"
  5. Sub Auto_Open()
  6.     Dim Fs As Object, xlMonth As String, 表單資料夾 As String, 表單名稱 As String
  7.     表單資料夾 = ActiveSheet.Range("A1")   ' 也可以指定 **表單資料夾 = Sheets("Sheet1").Range("A1")
  8.     表單名稱 = ActiveSheet.Range("A2") '      也可以指定 **表單名稱 = Sheets("Sheet1").Range("A2")
  9.     xlMonth = 表單資料夾 & Format(Date, "YYYY年MM月財務報表")   '←如何使日期顯示往前一個月,例如本月為2016年12月顯示為2016年11月
  10.     If Dir(xlMonth, vbDirectory) = "" Then MkDir (xlMonth)
  11.     Set Fs = CreateObject("Scripting.FileSystemObject").GetFile(表單資料夾 & "\" & 表單名稱)
  12.     If Dir(xlMonth & "\" & 表單名稱) = "" Then Fs.Copy xlMonth & "\" & 表單名稱
  13. End Sub
複製代碼

作者: bear0925900003    時間: 2016-12-15 15:31

GBKEE大妳真是神人,有考慮開班授課嗎?我報名
作者: GBKEE    時間: 2016-12-16 19:21

回復 7# bear0925900003
我是普通人而已,只是專研VBA比你多一些的時間吧,
開課是你的恭維話,學識尚淺,不敢開課.




歡迎光臨 麻辣家族討論版版 (http://forum.twbts.com/)