Доброго дня открыт файл.xlam, в нем процедура (ПР1) запускает xlsm и в нем запускается другая процедура (ПР2). По ходу своей работы, процедура ПР2, выключает файл.xlam [vba]
Код
AddIns(файл.xlam).Installed = False
[/vba]и завершается!, а мне надо чтоб она продолжила выполнять код
Доброго дня открыт файл.xlam, в нем процедура (ПР1) запускает xlsm и в нем запускается другая процедура (ПР2). По ходу своей работы, процедура ПР2, выключает файл.xlam [vba]
Код
AddIns(файл.xlam).Installed = False
[/vba]и завершается!, а мне надо чтоб она продолжила выполнять кодTD_MElec
Пробую запустить из файл.xlam макрос запускающий через командную строку файл.xlsm для запуска ПР2, но ругается на кириллицу в адресе, пробовал сохранить в кодировке OEM-866, не помогает. Код ПР1 запускающей командную строку:
[vba]
Код
Public Sub Update() Dim ss As String, s As String Dim sh As Object ss = "\\SERVER\Общие документы\Instal\Instal.vbs" s = "C:\windows\system32\wscript.exe" Set sh = CreateObject("Wscript.Shell") sh.Run s & " " & ss, 1, True
[/vba]
Код файла vbs запускающий файл.xlsm:
[vba]
Код
Dim objFSO Set objFSO = WScript.CreateObject("Scripting.FileSystemObject")
Call Run_macros
Sub Run_macros() set objExcel = CreateObject ("Excel.Application") objExcel.Visible = true Op_writ="\\SERVER\Общие документы\Instal\файл.xlsm" objExcel.Workbooks.Open (Op_writ) 'запуск макроса objExcel.run "InstallationAdd" 'по завершению закрываем документ. Пишем только имя файла, без пути objExcel.Workbooks("файл.xlsm").Close(false) 'закрываем Excel-процесс objExcel.Quit end sub
Set objFSO = Nothing
[/vba]
Instal.vbs запускается, а вот внутри него не отрабатывается строка \\SERVER\Общие документы\Instal\файл.xlsm
Пробую запустить из файл.xlam макрос запускающий через командную строку файл.xlsm для запуска ПР2, но ругается на кириллицу в адресе, пробовал сохранить в кодировке OEM-866, не помогает. Код ПР1 запускающей командную строку:
[vba]
Код
Public Sub Update() Dim ss As String, s As String Dim sh As Object ss = "\\SERVER\Общие документы\Instal\Instal.vbs" s = "C:\windows\system32\wscript.exe" Set sh = CreateObject("Wscript.Shell") sh.Run s & " " & ss, 1, True
[/vba]
Код файла vbs запускающий файл.xlsm:
[vba]
Код
Dim objFSO Set objFSO = WScript.CreateObject("Scripting.FileSystemObject")
Call Run_macros
Sub Run_macros() set objExcel = CreateObject ("Excel.Application") objExcel.Visible = true Op_writ="\\SERVER\Общие документы\Instal\файл.xlsm" objExcel.Workbooks.Open (Op_writ) 'запуск макроса objExcel.run "InstallationAdd" 'по завершению закрываем документ. Пишем только имя файла, без пути objExcel.Workbooks("файл.xlsm").Close(false) 'закрываем Excel-процесс objExcel.Quit end sub
Set objFSO = Nothing
[/vba]
Instal.vbs запускается, а вот внутри него не отрабатывается строка \\SERVER\Общие документы\Instal\файл.xlsmTD_MElec
Сообщение отредактировал TD_MElec - Пятница, 06.11.2020, 10:16
Неправильно ты, дядя Федор, бутерброд ешь. 1. Пишем скрипт VBS для замены надстройки 2 В надстройке пишем код, создающий этот скрипт 3. Запускаем этот скрипт через Application.OnTime В скрипте предусматриваем его самоубийство после выполнения
Неправильно ты, дядя Федор, бутерброд ешь. 1. Пишем скрипт VBS для замены надстройки 2 В надстройке пишем код, создающий этот скрипт 3. Запускаем этот скрипт через Application.OnTime В скрипте предусматриваем его самоубийство после выполненияRAN
RAN, чувствую, Ваш совет верен, но ни как не могу дать ладу, всё вокруг да около пытаюсь, пытаюсь и ничего не получается... Думаю не нужно мне запускать макрос обновляющий надстройку, достаточно. отключить или Excel, или надстройку в Excel (но потом ее надо как то включить), и просто заменить файл надстройки простым copy из vbs.
RAN, чувствую, Ваш совет верен, но ни как не могу дать ладу, всё вокруг да около пытаюсь, пытаюсь и ничего не получается... Думаю не нужно мне запускать макрос обновляющий надстройку, достаточно. отключить или Excel, или надстройку в Excel (но потом ее надо как то включить), и просто заменить файл надстройки простым copy из vbs.TD_MElec