VBA: Shell.Application 命名空间函数失败,依赖于调用 sub 时的变量声明
VBA: Shell.Application Namespace function fails dependent on variable declaration in calling sub
我遇到过 Shell.Application 对象的命名空间方法似乎因调用子中缺少变量声明而失败的情况。
下面是一个简化的测试用例:
Function TestShellApplicationNamespace(folder)
Dim oShell: Set oShell = CreateObject("Shell.Application")
Dim oDir: Set oDir = oShell.Namespace(folder)
Debug.Print TypeName(folder)
If oDir Is Nothing Then
Debug.Print "oDir is Nothing"
Else
Debug.Print "oDir is not Nothing"
End If
End Function
调用者:
Sub CallTestShellApplicationNamespace()
Dim folder As String
folder = "C:\"
TestShellApplicationNamespace folder
folder2 = "C:\"
TestShellApplicationNamespace folder2
End Sub
我从 运行 得到的结果是:
String
oDir is Nothing
String
oDir is not Nothing
我不确定这是 VBA 解释器中的错误,还是我做错了什么。
编辑:提交后,还发现了以下相关的内容(虽然不完全相同)
Shell接口奇怪,它希望参数按值传递所以将函数原型更改为:
Function TestShellApplicationNamespace(ByVal folder As Variant)
(或用额外的括号调用)
TestShellApplicationNamespace (folder)
ret = TestShellApplicationNamespace((folder))
您真的应该将 IDE 配置为完全没有 运行 带有未声明变量的代码。
我遇到过 Shell.Application 对象的命名空间方法似乎因调用子中缺少变量声明而失败的情况。
下面是一个简化的测试用例:
Function TestShellApplicationNamespace(folder)
Dim oShell: Set oShell = CreateObject("Shell.Application")
Dim oDir: Set oDir = oShell.Namespace(folder)
Debug.Print TypeName(folder)
If oDir Is Nothing Then
Debug.Print "oDir is Nothing"
Else
Debug.Print "oDir is not Nothing"
End If
End Function
调用者:
Sub CallTestShellApplicationNamespace()
Dim folder As String
folder = "C:\"
TestShellApplicationNamespace folder
folder2 = "C:\"
TestShellApplicationNamespace folder2
End Sub
我从 运行 得到的结果是:
String
oDir is Nothing
String
oDir is not Nothing
我不确定这是 VBA 解释器中的错误,还是我做错了什么。
编辑:提交后,还发现了以下相关的内容(虽然不完全相同)
Shell接口奇怪,它希望参数按值传递所以将函数原型更改为:
Function TestShellApplicationNamespace(ByVal folder As Variant)
(或用额外的括号调用)
TestShellApplicationNamespace (folder)
ret = TestShellApplicationNamespace((folder))
您真的应该将 IDE 配置为完全没有 运行 带有未声明变量的代码。