Использую для запуска файла Запуск.xlsm созданный скрипт Запуск.vbs, с записанным в его модуль книги текстом: [vba]
Код
Запуск Sub Запуск() Dim objXL Dim Secur Set objXL = CreateObject("Excel.Application") objXL.Visible = TRUE secur = objXL.AutomationSecurity objXL.AutomationSecurity = 1 objXL.Workbooks.Open replace(Wscript.ScriptFullName,".vbs",".xlsm") objXL.AutomationSecurity = secur End Sub
[/vba] Подскажите пожалуйста как закрыть доступ к файлу Запуск.xlsm при его открытии через двойной щелчок мышки. Другими словами чтоб файл запускался только скриптом. СПАСИБО.
Использую для запуска файла Запуск.xlsm созданный скрипт Запуск.vbs, с записанным в его модуль книги текстом: [vba]
Код
Запуск Sub Запуск() Dim objXL Dim Secur Set objXL = CreateObject("Excel.Application") objXL.Visible = TRUE secur = objXL.AutomationSecurity objXL.AutomationSecurity = 1 objXL.Workbooks.Open replace(Wscript.ScriptFullName,".vbs",".xlsm") objXL.AutomationSecurity = secur End Sub
[/vba] Подскажите пожалуйста как закрыть доступ к файлу Запуск.xlsm при его открытии через двойной щелчок мышки. Другими словами чтоб файл запускался только скриптом. СПАСИБО.Egider
Egider, Установите "очень сложный" пароль на открытие файла и открывайте скриптом [vba]
Код
Start Sub Start() Dim objXL Dim Secur Dim sPass sPass = "очень сложный пароль" On Error Resume Next Set objXL = GetObject(, "Excel.Application") ' если Excel уже открыт, то присваиваем открытый экземпляр If objXL Is Nothing Then Set objXL = CreateObject("Excel.Application") ' иначе, открываем новый objXL.Visible = TRUE secur = objXL.AutomationSecurity objXL.AutomationSecurity = 1 objXL.Workbooks.Open replace(Wscript.ScriptFullName,".vbs",".xlsm"), , , , sPass objXL.AutomationSecurity = secur End Sub
[/vba]
Egider, Установите "очень сложный" пароль на открытие файла и открывайте скриптом [vba]
Код
Start Sub Start() Dim objXL Dim Secur Dim sPass sPass = "очень сложный пароль" On Error Resume Next Set objXL = GetObject(, "Excel.Application") ' если Excel уже открыт, то присваиваем открытый экземпляр If objXL Is Nothing Then Set objXL = CreateObject("Excel.Application") ' иначе, открываем новый objXL.Visible = TRUE secur = objXL.AutomationSecurity objXL.AutomationSecurity = 1 objXL.Workbooks.Open replace(Wscript.ScriptFullName,".vbs",".xlsm"), , , , sPass objXL.AutomationSecurity = secur End Sub
Спасибо Gustav и Nic70y за идеи. Уважаемый ВОА, пароль установил в раздел Password вкладки Properties - Эта Книга. Все работает. Спасибо. Сменить пароль понятно как, а как его вообще снять, если отпадет в нем необходимость? Спасибо
Спасибо Gustav и Nic70y за идеи. Уважаемый ВОА, пароль установил в раздел Password вкладки Properties - Эта Книга. Все работает. Спасибо. Сменить пароль понятно как, а как его вообще снять, если отпадет в нем необходимость? СпасибоEgider
Да, я уже понял. Что-то первый раз не получилось. Сейчас все ок. Единственное, при открытии файла формат листа сверху сдвинут вниз на 2-3 см. Почему?
Да, я уже понял. Что-то первый раз не получилось. Сейчас все ок. Единственное, при открытии файла формат листа сверху сдвинут вниз на 2-3 см. Почему? Egider
Без скрипта открывается нормально, через скрипт сдвигается. Раскрывал в полный экран, сохранял. Однако при новом открытии скриптом ничего не меняется. Вновь отступ сверху.???
Без скрипта открывается нормально, через скрипт сдвигается. Раскрывал в полный экран, сохранял. Однако при новом открытии скриптом ничего не меняется. Вновь отступ сверху.???Egider
Уважаемый boa, уважаемые форумчане - специалисты если есть возможность подскажите пожалуйста: Возможно-ли использовать скрипт (макрос) для открытия следующего файла с паролем из открытого? При этом для открытия использовать кнопку. Кнопка есть, работает но при открытии запрашивается пароль. Как его обойти (что-то прописать в макросе) чтоб файл открывался. И сохранялась функция открытия этого файла с запросом пароля через двойной клик мышки.
Уважаемый boa, уважаемые форумчане - специалисты если есть возможность подскажите пожалуйста: Возможно-ли использовать скрипт (макрос) для открытия следующего файла с паролем из открытого? При этом для открытия использовать кнопку. Кнопка есть, работает но при открытии запрашивается пароль. Как его обойти (что-то прописать в макросе) чтоб файл открывался. И сохранялась функция открытия этого файла с запросом пароля через двойной клик мышки. Egider
Добавлю, что задача моя в том, чтобы с кнопки открывать файл "ПРОБА01" без запроса пароля. А если открывать файл напрямую, то запрашивался чтоб пароль.
Добавлю, что задача моя в том, чтобы с кнопки открывать файл "ПРОБА01" без запроса пароля. А если открывать файл напрямую, то запрашивался чтоб пароль.Egider
Sub Открыть_ПРОБА01() Application.Workbooks.Open(FileName:="C:\Users\Николай\Desktop\Запуск Скриптом\ПРОБА01.xlsm", password:="123").Worksheets("Лист1").Activate End Sub
[/vba]
Egider, А вы по ссылке заглядывали? [vba]
Код
Sub Открыть_ПРОБА01() Application.Workbooks.Open(FileName:="C:\Users\Николай\Desktop\Запуск Скриптом\ПРОБА01.xlsm", password:="123").Worksheets("Лист1").Activate End Sub
Простите, но вновь Столкнулся с задачей: У меня 10 листов в открываемом файле, которые открываются своей кнопкой. И что, нужно теперь для каждого листа в макрос вставлять пароль? Может есть какой-либо выход?
Простите, но вновь Столкнулся с задачей: У меня 10 листов в открываемом файле, которые открываются своей кнопкой. И что, нужно теперь для каждого листа в макрос вставлять пароль? Может есть какой-либо выход?Egider
Sub Открыть_ПРОБА01() Call ActivateSheet("Лист1") End Sub Sub Открыть_ПРОБА02() Call ActivateSheet("Лист2") End Sub
Sub ActivateSheet(sSheetName$) Dim sFileName$, oWb As Workbook sFileName = "C:\Users\Николай\Desktop\Запуск Скриптом\ПРОБА01.xlsm" If IfFileOpened(sFileName) Then Set oWb = Workbooks(sFileName) Else Set oWb = OpenBook(sFileName) oWb.Activate oWb.Worksheets(sSheetName$).Activate End Sub
Function OpenBook(sFileName$) As Workbook Set OpenBook = Application.Workbooks.Open(FileName:=sFileName, Password:="123") End Function
Function IfFileOpened(sFileName$) As Boolean Dim oWb As Workbook sFileName = Split(sFileName, PS)(UBound(Split(sFileName, PS))) For Each oWb In Workbooks If oWb.Name = sFileName$ Then IfFileOpened = True: Exit For Next End Function
Function PS(): PS = Application.PathSeparator: End Function 'возвращает системный разделитель папок
[/vba]
Egider, Разделяй и властвуй [vba]
Код
Option Explicit
Sub Открыть_ПРОБА01() Call ActivateSheet("Лист1") End Sub Sub Открыть_ПРОБА02() Call ActivateSheet("Лист2") End Sub
Sub ActivateSheet(sSheetName$) Dim sFileName$, oWb As Workbook sFileName = "C:\Users\Николай\Desktop\Запуск Скриптом\ПРОБА01.xlsm" If IfFileOpened(sFileName) Then Set oWb = Workbooks(sFileName) Else Set oWb = OpenBook(sFileName) oWb.Activate oWb.Worksheets(sSheetName$).Activate End Sub
Function OpenBook(sFileName$) As Workbook Set OpenBook = Application.Workbooks.Open(FileName:=sFileName, Password:="123") End Function
Function IfFileOpened(sFileName$) As Boolean Dim oWb As Workbook sFileName = Split(sFileName, PS)(UBound(Split(sFileName, PS))) For Each oWb In Workbooks If oWb.Name = sFileName$ Then IfFileOpened = True: Exit For Next End Function
Function PS(): PS = Application.PathSeparator: End Function 'возвращает системный разделитель папок