Board logo

標題: [發問] VBA記錄 [打印本頁]

作者: PJChen    時間: 2019-5-29 21:03     標題: VBA記錄

各位大大好,

我在工作中使用的VBA非常多,常常在執行後or忘了有沒有執行,必須要開啟被執行的檔案查看,非常的不方便,
程式都固定放在一個專門用來執行VBA的Macro.xlsm檔案中,我想針對10多個程式,因為密集操作,特別容易混淆...到底執行了?忘了執行?
想請問有沒有一種可以記錄VBA的語法?可以讓我各自加在特別容易混淆不清的VBA後面,使它可以拋出為TXT檔,我希望它可以記錄以下:
1. VBA名稱, 使用or完成時間 (因為程式執行都很快速,所以其中一個時間就可以了),同一行.中間加".........."隔開
2. 雖然VBA各自獨立,但我希望抛出的TXT報表,可以依程式執行順序自動接續寫下去,而不要把寫入TXT的內容分成很多檔案.
3. TXT存檔路徑D:\0_自訂表單\VBA記錄\檔名:VBA_年月日.TXT (一天一個檔案即可)
4. 我在Macro.xlsm檔案中加入一個觸發鈕,屆時可以連結這個"VBA_年月日.TXT"
5. 寫入TXT只在幕後執行,不用開啟,當我想查看時再按觸發鈕讓它自行打開.
6.  例如:附件中的Macro.A.xlsm                                                                              [attach]30719[/attach]
裡面放了3個VBA,希望TXT呈現的內容為以下的例子(只是舉例)

Sub backupfile()...........20190529 18:00:35
Sub 選取工作表B2值化()...........20190529 18:02:35
Sub 測試()...........20190529 18:10:35
作者: kim223824    時間: 2019-5-31 11:50

回復 1# PJChen


   這樣你就在這個檔案內,加一頁LIST的清單,將你執行過的檔案訊息紀錄下來就好了。
作者: PJChen    時間: 2019-5-31 21:52

回復 2# kim223824

確實手動也是一個方法,但我想學的是VB做法,不是打字,否則也就不用問人拉...
作者: n7822123    時間: 2019-6-4 04:20

本帖最後由 n7822123 於 2019-6-4 04:32 編輯

回復 1# PJChen

你給的檔案我打不開!

我自己做個範例
在你每個程序最下面呼叫 "記錄"這個程序即可,要給予程序名稱
如下,請參考看看!
[attach]30770[/attach]

Sub backupfile()
'你的程式碼開始
'........
'........
'........
'........
'你的程式碼結束
記錄 "backupfile"
End Sub

Sub 選取工作表B2值化()
'你的程式碼開始
'........
'........
'........
'........
'你的程式碼結束
記錄 "選取工作表B2值化"
End Sub

Sub 測試()
'你的程式碼開始
'........
'........
'........
'........
'你的程式碼結束
記錄 "測試"
End Sub

Sub 記錄(ByVal subname As String)
'路徑 D:\0_自訂表單\VBA記錄\
'檔名    VBA_年月日.TXT
Dim ff$, txt As Object
Application.DisplayAlerts = False
Application.ScreenUpdating = False
fpath0 = "D:\0_自訂表單\VBA記錄"    '自己設定路徑
If Dir(fpath0, 16) = "" Then MsgBox "找不到路徑,請確認!": Exit Sub
fname = "VBA_" & Format(Now, "yyyymmdd") & ".txt"
fullnm = fpath0 & "\" & fname
ff = Dir(fullnm)
If ff = "" Then
  Set txt = Workbooks.Add
  txt.Sheets(2).Delete: txt.Sheets(2).Delete
  txt.Sheets(1).[A1] = "Sub " & subname & "..................." & Format(Now, "yyyymmddhhmmss")
  txt.SaveAs fullnm, xlTextPrinter
  txt.Close
End If
Set txt = Workbooks.Open(fullnm)
n& = txt.Sheets(1).Cells(Rows.Count, 1).End(3).Row
Cells(n + 1, 1) = "Sub " & subname & "..................." & Format(Now, "yyyymmddhhmmss")
txt.Close True
End Sub

Sub 開啟txt()
Application.DisplayAlerts = False
Application.ScreenUpdating = False
fpath0 = "D:\0_自訂表單\VBA記錄"    '自己設定路徑
If Dir(fpath0, 16) = "" Then MsgBox "找不到路徑,請確認!": Exit Sub
fname = "VBA_" & Format(Now, "yyyymmdd") & ".txt"
fullnm = fpath0 & "\" & fname
ff = Dir(fullnm)
If ff = "" Then
  MsgBox "找不到" & fullnm & ",請確認!": Exit Sub
Else
  Shell "notepad " & fullnm
End If
End Sub
作者: n7822123    時間: 2019-6-4 04:36

本帖最後由 n7822123 於 2019-6-4 04:38 編輯

回復 4# n7822123

txt.Sheets(1).[A1] = "Sub " & subname & "..................." & Format(Now, "yyyymmddhhmmss")
Cells(n + 1, 1) = "Sub " & subname & "..................." & Format(Now, "yyyymmddhhmmss")

這兩行格式沒改的跟你一樣
yyyymmddhhmmss 請改 yyyymmdd hh:mm:ss

[attach]30771[/attach]




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