我正在编写以vbscript作为脚本语言的HTA文件。我有一个功能,其中提示用户选择他们想要保存文档的文件夹。我自己没有写这个代码,而是从这里借来的。
Function SelectFolder(myStartFolder)
Dim objFolder, objItem, objShell
Set objShell = CreateObject("Shell.Application")
Set objFolder = objShell.BrowseForFolder(0, "Select Folder to Save New File", 0, myStartFolder)
If IsObject(objFolder) Then SelectFolder = objFolder.Self.Path
End Function
当我制作文件并提示用户选择保存位置时,我会在另一个功能中调用此功能:
Sub Example()
Dim destPath, destFile, objWorkbook
destPath = SelectFolder(libPath)
destPath = destPath & "Sample Export"
Set destFile = CreateObject("Excel.Application")
Set objWorkbook = destFile.Workbooks.Add()
objWorkbook.SaveAs(destPath)
(code to edit excel file)
End Sub
example((工作正常,除非有人选择将文档保存在Windows的四个默认库之一(文档,音乐,图片,视频(中。在那种情况下,我会收到一个错误,说"无法访问该文件",并指出该错误是在" objworkbook.saveas(Destpath("的行中。然后,错误框给我以下建议:
- 确保存在指定的文件夹
- 确保包含文件的文件夹不完全读取
- 确保文件名不包含以下任何字符:<>?{}:|或 *
- 确保文件/路径名不包含218个字符。
当我打开HTA文件并单击按钮调用示例((时,发生错误会发生,然后打开一个对话框,要求用户选择文件位置。当选择文档,音乐,图片或视频时,弹出一个"脚本错误"框,上面列出的错误消息。我对VBScript不太熟悉,无法知道问题所在。我将感谢有关该怎么做的任何建议。
我不知道上述问题的解决方案是什么。但是,我注意到我传递给SelectFolder
的路径中有一个错别字。libPath
应该从环境变量到%userprofile%
。但是,我对"用户封装"进行了多元化,因此它是%userprofiles%
。这把我带到了看起来正确但事实并非如此的地方。我修复了错字,现在BrowseForFolder
将我带到C:/Users/*username*
,就像应该的那样。事实证明,由于BrowseForFolder
中的第四个参数,我被发送到桌面位置,而不是我想要的用户配置文件。