【发布时间】:2013-04-03 20:11:57
【问题描述】:
我有一个旧的 VB6 应用程序,已分发给运行 XP、Windows 7 和 Windows 8 的多个用户。以下代码抛出错误 91 ""Object variable or With block variable not set"。
Const ssfPERSONAL = 46 'set directory to the common Documents folder
Dim strMyDocsPath As String 'stores common docsPath
On Error GoTo ErrorHandler
strMyDocsPath = CreateObject("Shell.Application").NameSpace(ssfPERSONAL).Self.Path
具体来说,最后一行是问题所在。我希望 strMyDocsPath 指向用户计算机上的公共文档文件夹。它在 Windows 7 和 8 中运行良好,但不能在 XP 机器上运行,除了 XP 开发机器可以顺利运行。
在有问题的计算机上,我尝试重新注册 scrrrun.dll 并收到注册成功的消息。我尝试下载和安装 VB6 可分发 SP6 文件,但仍然出现错误。我已经搜索了几个论坛,但无法弄清楚。有什么想法吗?
【问题讨论】:
-
尝试使用中间变量来创建对象,使用
Set关键字。然后将字符串赋值给字符串变量。 -
Shell 是Windows Explorer,与Scripting Runtime 无关。
标签: vb6 special-folders createobject