【发布时间】:2017-06-27 16:11:32
【问题描述】:
我正在编写一个以 VBScript 作为脚本语言的 HTA 文件。我有一个功能,提示用户选择他们想要保存文档的文件夹。这段代码不是我自己写的,而是从here借来的。
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 文件并单击调用 Example() 的按钮时发生错误,然后会打开一个对话框要求用户选择文件位置。 When Documents, Music, Pictures, or Videos is chosen, a "Script Error" box pops up with the error message listed above.我对 VBScript 不够熟悉,无法确切知道问题所在。如有任何建议,我将不胜感激。
【问题讨论】:
-
^... + 问题中的文件和文件夹搞砸了。请详细说明您的问题,并将相关代码也添加到问题中。
-
您还没有显示您的代码。对话框是否返回错误?如果是这样,什么错误?还是在对话框返回对系统虚拟文件夹的引用后,下一行的错误是否仅适用于 shell 命令,而不适用于文件命令?
-
我已经添加了代码并详细说明了错误。对最初的问题中缺乏信息表示歉意。