Statistica 64 - Как сделать так, чтобы макрос нашел имя файла? - PullRequest
0 голосов
/ 26 мая 2018

* Примечание. Отредактируйте этот вопрос, чтобы обратиться к специалистам 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".

Ответы [ 2 ]

0 голосов
/ 25 мая 2019
MsgBox Application.ActiveMacroEx(False).Name

или

MsgBox Application.ActiveMacroEx(False).FullName
0 голосов
/ 31 мая 2018

В Excel следующее действительно работает, пока вы находитесь в VBE:

Application.VBE.VBProjects(1).FileName
Application.VBE.ActiveVBProject.Name
Application.VBE.ActiveCodePane.CodeModule

Я не знаю, как это выяснить, кроме как жестко запрограммировать его вмакросы.

См. пост Матье Гиндона: Обзор кода: Управление трассируемым стеком, доступным для программирования

Это происходит примерно так ... но с классом 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
...