2
我在工作簿ABC中有一個宏。我想知道其他工作簿正在調用這個宏,因爲我們將要替換它的功能。有什麼辦法可以告訴工作簿在執行時調用宏嗎?還是Application.Run隱藏了被調用的宏?找出什麼工作簿叫做宏
我在工作簿ABC中有一個宏。我想知道其他工作簿正在調用這個宏,因爲我們將要替換它的功能。有什麼辦法可以告訴工作簿在執行時調用宏嗎?還是Application.Run隱藏了被調用的宏?找出什麼工作簿叫做宏
我不知道如何獲取工作簿名稱。您可以登錄工作站和用戶,然後轉到工作站並啓動Excel,然後轉到文件 - >最近,以查看計算機上使用的最新工作簿。
您可以將日誌文件寫入工作簿包含該宏的位置。
像這樣的東西從宏中調用。
在您的VBA IDE中,進入工具菜單並選擇參考。選擇 「Microsoft腳本運行時」
Private Sub LogUsage()
Dim ts As TextStream
Dim fs As FileSystemObject
Dim strLogFile As String
strLogFile = Application.ActiveWorkbook.Path & "\Usage.txt"
'Check if the file exists, if it does, open it, if it doesn't create it
Set fs = New FileSystemObject
If fs.FileExists(strLogFile) = True Then
Set ts = fs.OpenTextFile(strLogFile, ForAppending)
Else
Set ts = fs.CreateTextFile(strLogFile, True, False)
End If
'Log your entry
ts.WriteLine "Used by " & Environ$("Username") & " at " & Now & " on computer " & Environ$("Computername")
'Clean up
ts.Close: Set ts = Nothing
Set fs = Nothing
End Sub
[Application.Caller](https://msdn.microsoft.com/en-us/library/office/ff193687(V = office.15)的.aspx) – SeanC
不是真的 - 除了手動檢查Call棧之外。無論宏是使用Run調用,還是直接使用另一個例程,Application.Caller都不起作用 - 只有當它作爲OnAction屬性被調用時。 – Rory
您是否可以將宏添加到新的輸入框中,要求用戶手動鍵入正在使用的工作簿,並使用該用戶標識,時間和手動輸入在某處填寫某個字段的時間戳? –