#excel #vba
#excel #vba
Вопрос:
У меня возникла проблема с поиском / пониманием того, как решить следующую проблему при запуске .bat
файла в VBA
в Excel
. Я получаю Open File - Security Warning
приглашение при попытке выполнить его.
Проблема в том, что у меня нет прав администратора, поэтому я не могу настроить, чтобы .bat
файлы игнорировались в этом приглашении, а этот .bat
файл я создал сам, поэтому я не понимаю, почему мой компьютер помечает его как потенциально опасный.
Если бы кто-нибудь мог объяснить обходной путь и почему возникает такая проблема, несмотря на то, что это пользовательский сгенерированный .bat
файл, я был бы очень признателен. Под обходным решением я подразумеваю изменение кода, с которым мне в настоящее время приходится сталкиваться для решения этой проблемы, без обращения к администраторам.
Ниже приведен фрагмент кода, относящийся к проблеме, спасибо:
sub test()
'some stuff
Open MY_FILENAME For Output As #FileNumber
Print #FileNumber, FileContents
Print #FileNumber, "exit"
Close #FileNumber
'run batch file
Dim wsh As Object
Set wsh = VBA.CreateObject("WScript.Shell")
Dim waitOnReturn As Boolean: waitOnReturn = True
Dim windowStyle As Integer: windowStyle = 1
Dim rtn As Integer
rtn = wsh.Run(Chr(34) amp; MY_FILENAME amp; Chr(34), windowStyle, waitOnReturn)
end sub
Я должен добавить, что если запустить оболочку подобным образом, у меня не возникнет проблем:
rtn = Shell(MY_FILENAME, vbNormalFocus)
За исключением того, что код будет продолжать выполняться, несмотря на то, что оболочка не закрывается и не завершает свое выполнение. Мне нужно, чтобы оболочка остановилась, пока она не выполнит свою задачу.
Комментарии:
1. Вы собираетесь показать нам и пакетный файл тоже? или вы удовлетворены тем, что содержимое пакетного файла никоим образом не влияет на проблему, о которой сообщается? Например, устанавливается ли текущий каталог пакетного файла внутри самого себя? или вы ожидаете, что он будет использовать любой текущий каталог в VBScript? Кстати, если вы уверены, что содержимое пакетного файла не имеет значения, не могли бы вы, пожалуйста, удалить тег batch-file, поскольку специалистам по пакетным файлам не обязательно видеть вашу проблему или участвовать в ней.
2. @Compo, приносим извинения, командный файл работает нормально. Я просто подумал, что если командный файл был создан мной, возможно, эксперты в этой области поймут, почему утверждается, что он поступает из неизвестного источника, когда я создал его в коде vba. Я удалю тег.