无法使用应用程序调用VBA内置函数。运行

无法使用应用程序调用VBA内置函数。运行,vba,higher-order-functions,Vba,Higher Order Functions,在VBA中,可以使用Application.Run方法调用用户定义的子例程或函数,如下所示 Application.Run "macroName", arg1 ', ... 允许在VBA中对代理进行粗略模拟。 但是,不能以相同的方式调用内置VBA函数 ' Error 1004: Cannot run macro 'FileDateTime'. The macro may not be available ... Debug.Print Application.Run("FileDateTime

在VBA中,可以使用Application.Run方法调用用户定义的子例程或函数,如下所示

Application.Run "macroName", arg1 ', ...
允许在VBA中对代理进行粗略模拟。 但是,不能以相同的方式调用内置VBA函数

' Error 1004: Cannot run macro 'FileDateTime'. The macro may not be available ...
Debug.Print Application.Run("FileDateTime", "<some file path>") 
给定内置函数名的字符串,例如FileDateTime,如何调用该函数


解决方法之一是创建只返回内置函数结果的函数。但我正在寻找更直接的解决方案。

您不需要应用程序。为此运行,使用方法也不正确:

Debug.Print FileDateTime("some file path")
编辑:另一种方法是编写自己的宏:

function F_D_T(path as string)  
F_D_T = FileDateTime("somepath")  
end function

并使用application调用此宏。运行

请参见编辑:我正在尝试使用application.run以获得委托的粗略实现。请详细说明为什么用法不正确。std只是一些模块。我发布了一些原始代码。我会根据需要删减这个例子。在我看来,你试图将VB.net应用于vba…我可能错了。例如,您对以下行的预期结果是什么:files\u mtimes=std.MappedFileDateTime,file\u array?希望现在的示例足够简单。我认为这是不可能的-您可以用宏模拟内置函数,但不能反过来。使用内置函数时,需要遵循其规则参数/用法。简言之,application.run仅适用于宏而非内置函数=您最好将基础函数包装在类方法中,并使用CallByNameinst、MethodName…我不认为定义类比定义我需要的函数的副本(例如FileDateTime)有什么好处。它看起来就像两个包装纸,而不是一个。