2015-04-29 18 views
1

我有一个工作脚本,但如果用户启动它,然后用取消按钮中止脚本生成规定的文件夹在任何目录文件资源管理器打开。显然这并不好。我需要脚本停止,如果用户取消,但我不知道该怎么做?如何让这个脚本在取消时实际停止?

下面的代码:

' 26Apr2015 jkw -- q&d 

Option Explicit 

Dim g_fso: Set g_fso = CreateObject("Scripting.FileSystemObject") 

Dim tgt: tgt = BrowseFolder("M:\MarcStone Bids", False) 


Dim subdirs: subdirs = Array(_ 
"Anchors",_ 
"Color",_ 
"Engineering",_ 
"Mold Drawings",_ 
"Plans and Specs",_ 
"Plans and Specs\Plans",_ 
"Plans and Specs\Specs",_ 
"Revisions and Cost Changes",_ 
"Shops",_ 
"Managing Documents",_ 
"Managing Documents\Accounting",_ 
"Managing Documents\Approvals",_ 
"Managing Documents\Bid Documents",_ 
"Transmittals"_ 
) 

Dim subdir 
For Each subdir in subdirs 
    g_fso.CreateFolder(tgt & "\" & subdir) 
Next 

Function BrowseFolder(myStartLocation, blnSimpleDialog) 
' This function generates a Browse Folder dialog 
' and returns the selected folder as a string. 
' 
' Arguments: 
' myStartLocation [string] start folder for dialog, or "My Computer", or 
'        empty string to open in "Desktop\My Documents" 
' blnSimpleDialog [boolean] if False, an additional text field will be 
'        displayed where the folder can be selected 
'        by typing the fully qualified path 
' 
' Returns:   [string] the fully qualified path to the selected folder 
' 
' Based on the Hey Scripting Guys article 
' "How Can I Show Users a Dialog Box That Only Lets Them Select Folders?" 
' http://www.microsoft.com/technet/scriptcenter/resources/qanda/jun05/hey0617.mspx 
' 
' Function written by Rob van der Woude 
' http://www.robvanderwoude.com 
    Const MY_COMPUTER = &H11& 
    Const WINDOW_HANDLE = 0 ' Must ALWAYS be 0 

    Dim numOptions, objFolder, objFolderItem 
    Dim objPath, objShell, strPath, strPrompt 

    ' Set the options for the dialog window 
    strPrompt = "Select a folder in which to create subdirectories:" 
    If blnSimpleDialog = True Then 
     numOptions = 0  ' Simple dialog 
    Else 
     numOptions = &H10& ' Additional text field to type folder path 
    End If 

    ' Create a Windows Shell object 
    Set objShell = CreateObject("Shell.Application") 

    ' If specified, convert "My Computer" to a valid 
    ' path for the Windows Shell's BrowseFolder method 
    If UCase(myStartLocation) = "MY COMPUTER" Then 
     Set objFolder = objShell.Namespace(MY_COMPUTER) 
     Set objFolderItem = objFolder.Self 
     strPath = objFolderItem.Path 
    Else 
     strPath = myStartLocation 
    End If 

    Set objFolder = objShell.BrowseForFolder(WINDOW_HANDLE, strPrompt, _ 
               numOptions, strPath) 

    ' Quit if no folder was selected 
    If objFolder Is Nothing Then 
     BrowseFolder = "" 
     Exit Function 
    End If 

    ' Retrieve the path of the selected folder 
    Set objFolderItem = objFolder.Self 
    objPath = objFolderItem.Path 

    ' Return the path of the selected folder 
    BrowseFolder = objPath 
End Function 

回答

1

帮助有此示例代码。这是你需要的行。 if (not objFolder is nothing) then

function fnShellBrowseForFolderVB() 
    dim objShell 
    dim ssfWINDOWS 
    dim objFolder 

    ssfWINDOWS = 36 
    set objShell = CreateObject("Shell.Application") 
     set objFolder = objShell.BrowseForFolder(0, "Example", 0, ssfWINDOWS) 
      if (not objFolder is nothing) then 
       'Add code here. 
      end if 
     set objFolder = nothing 
    set objShell = nothing 
end function 

然后err.raise numwscript.quit

1

你的函数返回时,没有文件夹已被选定一个空字符串,所以......

.... 
tgt = BrowseFolder("M:\MarcStone Bids", False) 
' If no folder selected, quit 
If tgt="" Then 
    Wscript.Quit 1 
End If 
.... 
+0

这完美地工作!谢谢! – Mojoman317717

相关问题