返回列表 上一主題 發帖

[發問] VBA記錄

[發問] 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                                                                               Macro.A.rar (26.29 KB)
裡面放了3個VBA,希望TXT呈現的內容為以下的例子(只是舉例)

Sub backupfile()...........20190529 18:00:35
Sub 選取工作表B2值化()...........20190529 18:02:35
Sub 測試()...........20190529 18:10:35

回復 1# PJChen


   這樣你就在這個檔案內,加一頁LIST的清單,將你執行過的檔案訊息紀錄下來就好了。

TOP

回復 2# kim223824

確實手動也是一個方法,但我想學的是VB做法,不是打字,否則也就不用問人拉...

TOP

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

回復 1# PJChen

你給的檔案我打不開!

我自己做個範例
在你每個程序最下面呼叫 "記錄"這個程序即可,要給予程序名稱
如下,請參考看看!
test-0604.rar (35.41 KB)

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
程式是依需求寫的,需求表達不清楚
或者沒有上傳附件,愛莫能助

TOP

本帖最後由 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

test-0604.rar (36.17 KB)
程式是依需求寫的,需求表達不清楚
或者沒有上傳附件,愛莫能助

TOP

        靜思自在 : 【停滯不前,終無所得】人都迷於尋找奇蹟,因而停滯不前;縱使時間再多、路再長,也了無用處,終無所得。
返回列表 上一主題