Каково ваше намерение?Если вы хотите использовать End
в качестве оператора, который завершает программу, то вы должны знать, что нет оператора End
в VBScript , он существует только в "полном объеме" VB6,VBA и VB.NET , где это команда «Завершить программу» (но вы не должны использовать ее в любом случае, потому что она не выполняет очистку программы и может привести к утечке ресурсов, которые требуютраспоряжение).
Я думаю, что вы хотите вместо Exit
заявление.Оператор Exit
на самом деле не завершает программу полностью, он эквивалентен return
и break
на других языках:
https://docs.microsoft.com/en-us/previous-versions/windows/internet-explorer/ie-developer/scripting-articles/t234253x%28v%3dvs.84%29
Синтаксис оператора Exitимеет следующие формы:
Exit Do
Exit For
Exit Function
Exit Property
Exit Sub
К сожалению, вы не можете использовать Exit
в программном коде скрипта «верхнего уровня» (т.е. вне явного Sub
или Function
).Я рекомендую заключить вашу программу в Sub
, а ваша программа верхнего уровня будет просто вызовом Sub
и ничего больше.
Кроме того, не путайте его с Stop
оператор - который на самом деле приостанавливает выполнение скрипта (например, точку останова) до тех пор, пока пользователь не возобновит его, поэтому это не настоящая команда "остановить выполнение".Он также не закрывает дескрипторы:
https://docs.microsoft.com/en-us/previous-versions/windows/internet-explorer/ie-developer/scripting-articles/zw86czy2%28v%3dvs.84%29
Stop
: приостанавливает выполнение.
Использование оператора Stop
аналогично установке точки останова вcode.
Оператор Stop
приостанавливает выполнение, но не закрывает файлы и не очищает переменные.
В вашем случае гораздо проще просто инвертировать If
, какитак:
With xlApp.FileDialog(msoFileDialogFolderPicker)
.AllowMultiSelect = False
.Title = "Select the folder to scan through sub-folders"
.ButtonName = "Select this folder!"
.InitialFileName = "\\..somepath"
.InitialView = msoFileDialogViewSmallIcons
If .Show = i Then
Set HostFolder = .SelectedItems(1)
End If
End With
(я предполагаю, что HostFolder
должен быть присвоен оператор Set
, поскольку это Object
вместо значения, но если он работает без Set
, тогда это нормально)
TL; DR:
- В VBScript нет единственного оператора
End
для завершения выполнения программы.Он существует только в VB6, VBA и VB.NET. - Оператор
Stop
фактически приостанавливает выполнение как точку останова, он не завершает выполнение. - Оператор
Exit
работает тольковнутри родительской структуры управления, Sub
или Function
, поэтому она не работает внутри программы верхнего уровня.