как вы поживаете?Выполнение кода VBS в VBA с правами администратора
Я хочу выполнить VBS-код в среде VBA, в этом случае я работаю в редакторе VB в MS Excel 2010. К сожалению, я не знаю, как преобразовать код VBS, чтобы VBA смог его выполнить.
Чтобы дать представление о том, над чем я работаю: хочу выполнить командную строку VBS, требующую прав администратора. Это приглашение перезапустит процесс на другом ПК в сети. Код VBS работает отлично, когда выполняется через cmd. Причина, по которой я хочу использовать VBA, заключается в том, что в сети много ПК, и я хочу использовать цикл для выполнения кода VBS для каждого ПК.
ОК, вот код VBS:
strComputer = "Computername"
Set objShell = CreateObject("Wscript.Shell")
Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2:Win32_Process")
intReturn = objWMIService.Create("c:\Program Files (x86)\Symantec\Symantec Endpoint Protection\12.1.1000.157.105\Bin64\smc.exe -stop", Null, Null, intProcessID)
Wscript.Sleep 10000
intReturn2 = objWMIService.Create("c:\Program Files (x86)\Symantec\Symantec Endpoint Protection\12.1.1000.157.105\Bin64\smc.exe -start", Null, Null, intProcessID)
Теперь вопрос, как я могу получить этот образец кода в моей среде VBA? Я знаю, как выполнить сам VBS-файл через VBA, но этого недостаточно, потому что мне нужна переменная. Кроме того, права администратора связаны с вопросом.
ОК, вот это обновление, я теперь этот код в моем VBA, но я не в состоянии получить все началось, я также пытался реализовать Запуск от имени администратора:
Sub run_vbs_script()
Dim strComputer As String
'Dim WshShell
Dim objShell
Dim objWMIService
Dim dDate As Date
strComputer = "IEDBR8D60CR"
Set objShell = CreateObject("Wscript.Shell")
RunasStruser = "runas /user:Username Domain\domain name"
objShell.Run RunasStruser, 0
objShell.SendKeys "password"
Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2:Win32_Process")
intReturn = objWMIService.Create("c:\Program Files (x86)\Symantec\Symantec Endpoint Protection\12.1.1000.157.105\Bin64\smc.exe -stop", Null, Null, intProcessID)
dDate = DateAdd("s", 10, DateTime.Now)
Do While dDate > DateTime.Now
DoEvents
Loop
intReturn2 = objWMIService.Create("c:\Program Files (x86)\Symantec\Symantec Endpoint Protection\12.1.1000.157.105\Bin64\smc.exe -start", Null, Null, intProcessID)
Set objShell = Nothing
Set objWMIService = Nothing
End Sub
Вы являетесь администратором или у вас есть права администратора? –
'Я хочу выполнить VBS-код в среде VBA', так почему же тег vb.net? – Plutonix
Возможный дубликат [Вызов .vbs scipt из Excel VBA] (http://stackoverflow.com/questions/13133126/calling-a-vbs-scipt-from-excel-vba) –