*注意:编辑此问题以联系VBA用户,因为它可能与Excel使用的过程相同。 SVB只是VBA的一种特殊形式。
我有一个存储在FileA.svb文件中的宏。
在这种情况下,它是Main(),它调用文件中的其他函数。
我需要我的宏来找出它保存的文件的名称。 以下工作,但如果有多个宏打开,它当然会得到一个错误的答案。
' Get the name of this macro / analysis
Dim strMacroName As String
strMacroName = Application.Macros.Item(1)
Debug.Print strMacroName
在Statistica(或Excel)中,是否有一个属性允许函数/宏查看存储它的文件的名称?对于Excel,我不想要XLS文件,而是包含函数的代码模块的名称。不幸的是,我不认为SVB有“Me”关键字。
答案 0 :(得分:0)
在Excel中,以下内容仅在您使用VBE时才能正常工作:
Application.VBE.VBProjects(1).FileName
Application.VBE.ActiveVBProject.Name
Application.VBE.ActiveCodePane.CodeModule
我不知道如何解决这个问题,然后将其硬编码到宏中。
参见Mathieu Guindon的帖子:Code Review: Managing a programmatically accessible stack trace
它是这样的......但完全实现了CallStack
类:
Option Explicit
Private Const ModuleName As String = "Module1"
Sub DoSomething(ByVal value1 As Integer, ByVal value2 As Integer, ByVal value3 As String)
CallStack.Push ModuleName, "DoSomething", value1, value2, value3
TestSomethingElse value1
CallStack.Pop
End Sub
答案 1 :(得分:0)
MsgBox Application.ActiveMacroEx(False).Name
或
MsgBox Application.ActiveMacroEx(False).FullName