2017-06-27 113 views
0

我正在用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 

例()正常工作時,有人選擇保存除他們的文檔在Windows(文檔,音樂,圖片,視頻)的四個默認庫之一中。在這種情況下,我收到一個錯誤,指出「文件無法訪問」,並指出錯誤位於「objWorkbook.SaveAs(destPath)」行。錯誤框,然後給了我以下建議:

  • 確保指定的文件夾中存在
  • 確保包含文件的文件夾不是隻讀
  • 確保文件名不包含任何以下字符:<>? {}:|或*
  • 確保文件/路徑名稱不超過218個字符。

當我打開HTA文件並單擊調用Example()的按鈕時,會出現錯誤,然後打開一個對話框要求用戶選擇文件位置。選擇文檔,音樂,圖片或視頻時,會彈出一個「腳本錯誤」框,並顯示上面列出的錯誤消息。我對VBScript不夠熟悉,不知道問題到底是什麼。我很感激任何關於做什麼的建議。

+0

請仔細閱讀==> [如何問一個好問題?](http://stackoverflow.com/help/how-to-ask) ==> [如何創建一個最小,完整和可驗證示例](http://stackoverflow.com/help/mcve) ==> [我應該避免詢問什麼類型的問題?](http://stackoverflow.com/help/dont-ask) === > [我可以在這裏詢問什麼主題?](http://stackoverflow.com/help/on-topic) – Hackoo

+0

^... +問題中的文件和文件夾都搞砸了。請詳細說明您的問題,並在相關問題中添加相關代碼。 – Teemu

+0

你還沒有顯示你的代碼。對話框是否返回錯誤?如果是這樣,有什麼錯誤?或者在對話框返回了一個僅適用於shell命令而不是文件命令的系統虛擬文件夾的引用之後的下一行中的錯誤? – david

回答

0

我不確切地知道上述問題的解決方案是什麼。但是,我注意到我傳遞給SelectFolder的路徑有一個錯字。 libPath應該是來自環境變量的%userprofile%。但是,我已經複製了「用戶配置文件」,因此改爲%userprofiles%。這把我帶到了一個看起來不錯的地方,但沒有。我修正了錯字,現在BrowseForFolder把我帶到C:/Users/*username*,就像它應該的那樣。事實證明,我正在被髮送到桌面位置,因爲BrowseForFolder中的第四個參數,而不是像我想要的用戶配置文件。

相關問題