2015-10-13 59 views
2

我在工作簿ABC中有一個宏。我想知道其他工作簿正在調用這個宏,因爲我們將要替換它的功能。有什麼辦法可以告訴工作簿在執行時調用宏嗎?還是Application.Run隱藏了被調用的宏?找出什麼工作簿叫做宏

+0

[Application.Caller](https://msdn.microsoft.com/en-us/library/office/ff193687(V = office.15)的.aspx) – SeanC

+2

不是真的 - 除了手動檢查Call棧之外。無論宏是使用Run調用,還是直接使用另一個例程,Application.Caller都不起作用 - 只有當它作爲OnAction屬性被調用時。 – Rory

+0

您是否可以將宏添加到新的輸入框中,要求用戶手動鍵入正在使用的工作簿,並使用該用戶標識,時間和手動輸入在某處填寫某個字段的時間戳? –

回答

2

我不知道如何獲取工作簿名稱。您可以登錄工作站和用戶,然後轉到工作站並啓動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