Домашняя страница Undo Do New Save Карта сайта Обратная связь Поиск по форуму
МИР MS EXCEL - Гость.xls

Вход

Регистрация

Напомнить пароль

 

= Мир MS Excel/Открыть файл Ексель скриптом формата vbs - Мир MS Excel

Старая форма входа
  • Страница 1 из 2
  • 1
  • 2
  • »
Модератор форума: китин, _Boroda_  
Открыть файл Ексель скриптом формата vbs
Egider Дата: Вторник, 14.01.2020, 19:24 | Сообщение № 1
Группа: Пользователи
Ранг: Новичок
Сообщений: 42
Репутация: 0 ±
Замечаний: 0% ±

Excel 2016
Использую для запуска файла Запуск.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
Дата добавления - 14.01.2020 в 19:24
Gustav Дата: Вторник, 14.01.2020, 20:10 | Сообщение № 2
Группа: Админы
Ранг: Участник клуба
Сообщений: 2792
Репутация: 1155 ±
Замечаний: ±

начинал с Excel 4.0, видел 2.1
Наверное, самый простой способ - изменить расширение файла на чужое: например, ".xlsm" - на ".doc". И потом открывайте у себя уже этот "doc":
[vba]
Код
objXL.Workbooks.Open replace(Wscript.ScriptFullName,".vbs",".doc")
[/vba]
Возможно, придется добавить в код пару операторов, подавляющих предупреждения при открытии.


МОИ: Ник, Tip box: 41001663842605
 
Ответить
СообщениеНаверное, самый простой способ - изменить расширение файла на чужое: например, ".xlsm" - на ".doc". И потом открывайте у себя уже этот "doc":
[vba]
Код
objXL.Workbooks.Open replace(Wscript.ScriptFullName,".vbs",".doc")
[/vba]
Возможно, придется добавить в код пару операторов, подавляющих предупреждения при открытии.

Автор - Gustav
Дата добавления - 14.01.2020 в 20:10
Nic70y Дата: Среда, 15.01.2020, 08:43 | Сообщение № 3
Группа: Друзья
Ранг: Экселист
Сообщений: 8999
Репутация: 2366 ±
Замечаний: 0% ±

Excel 2010
сделать файл скрытым
и соот.
К сообщению приложен файл: 4028744.gif (41.1 Kb)


ЮMoney 41001841029809

Сообщение отредактировал Nic70y - Среда, 15.01.2020, 08:44
 
Ответить
Сообщениесделать файл скрытым
и соот.

Автор - Nic70y
Дата добавления - 15.01.2020 в 08:43
boa Дата: Среда, 15.01.2020, 11:26 | Сообщение № 4
Группа: Друзья
Ранг: Ветеран
Сообщений: 559
Репутация: 167 ±
Замечаний: 0% ±

365
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]




Сообщение отредактировал boa - Среда, 15.01.2020, 11:37
 
Ответить
Сообщение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]

Автор - boa
Дата добавления - 15.01.2020 в 11:26
Egider Дата: Среда, 15.01.2020, 14:53 | Сообщение № 5
Группа: Пользователи
Ранг: Новичок
Сообщений: 42
Репутация: 0 ±
Замечаний: 0% ±

Excel 2016
Спасибо Gustav и Nic70y за идеи.
Уважаемый ВОА, пароль установил в раздел Password вкладки Properties - Эта Книга. Все работает. Спасибо.
Сменить пароль понятно как, а как его вообще снять, если отпадет в нем необходимость? Спасибо


Пенсионер
 
Ответить
СообщениеСпасибо Gustav и Nic70y за идеи.
Уважаемый ВОА, пароль установил в раздел Password вкладки Properties - Эта Книга. Все работает. Спасибо.
Сменить пароль понятно как, а как его вообще снять, если отпадет в нем необходимость? Спасибо

Автор - Egider
Дата добавления - 15.01.2020 в 14:53
boa Дата: Среда, 15.01.2020, 15:01 | Сообщение № 6
Группа: Друзья
Ранг: Ветеран
Сообщений: 559
Репутация: 167 ±
Замечаний: 0% ±

365
Egider,
а как его вообще снять

так же как и ставили
только новый пароль должен быть пустым


 
Ответить
СообщениеEgider,
а как его вообще снять

так же как и ставили
только новый пароль должен быть пустым

Автор - boa
Дата добавления - 15.01.2020 в 15:01
Egider Дата: Среда, 15.01.2020, 15:56 | Сообщение № 7
Группа: Пользователи
Ранг: Новичок
Сообщений: 42
Репутация: 0 ±
Замечаний: 0% ±

Excel 2016
Да, я уже понял. Что-то первый раз не получилось. Сейчас все ок.
Единственное, при открытии файла формат листа сверху сдвинут вниз на 2-3 см. Почему?


Пенсионер
 
Ответить
СообщениеДа, я уже понял. Что-то первый раз не получилось. Сейчас все ок.
Единственное, при открытии файла формат листа сверху сдвинут вниз на 2-3 см. Почему?

Автор - Egider
Дата добавления - 15.01.2020 в 15:56
boa Дата: Среда, 15.01.2020, 16:14 | Сообщение № 8
Группа: Друзья
Ранг: Ветеран
Сообщений: 559
Репутация: 167 ±
Замечаний: 0% ±

365
при открытии файла формат листа сверху сдвинут вниз на 2-3 см.

shock да ладно,

Excel запоминает последнее отображение

Возможно это следствие работы каких-то ваших макросов...

попробуйте открыть файл, "сдвинуть формат" на место и закрыть Excel.
Повторное открытие должно привести все в порядок yes




Сообщение отредактировал boa - Среда, 15.01.2020, 16:24
 
Ответить
Сообщение
при открытии файла формат листа сверху сдвинут вниз на 2-3 см.

shock да ладно,

Excel запоминает последнее отображение

Возможно это следствие работы каких-то ваших макросов...

попробуйте открыть файл, "сдвинуть формат" на место и закрыть Excel.
Повторное открытие должно привести все в порядок yes

Автор - boa
Дата добавления - 15.01.2020 в 16:14
Egider Дата: Среда, 15.01.2020, 19:03 | Сообщение № 9
Группа: Пользователи
Ранг: Новичок
Сообщений: 42
Репутация: 0 ±
Замечаний: 0% ±

Excel 2016
Без скрипта открывается нормально, через скрипт сдвигается. Раскрывал в полный экран, сохранял.
Однако при новом открытии скриптом ничего не меняется. Вновь отступ сверху.???


Пенсионер
 
Ответить
СообщениеБез скрипта открывается нормально, через скрипт сдвигается. Раскрывал в полный экран, сохранял.
Однако при новом открытии скриптом ничего не меняется. Вновь отступ сверху.???

Автор - Egider
Дата добавления - 15.01.2020 в 19:03
boa Дата: Среда, 15.01.2020, 21:26 | Сообщение № 10
Группа: Друзья
Ранг: Ветеран
Сообщений: 559
Репутация: 167 ±
Замечаний: 0% ±

365
Раскрывал в полный экран

а не надо раскрывать в полный экран. Я разве об этом писал?
надо в оконном режиме нстроить вид.
Или тогда уже скриптом раскрывайте на весь экран
[vba]
Код
objXL.WindowState = xlMaximized
[/vba]


 
Ответить
Сообщение
Раскрывал в полный экран

а не надо раскрывать в полный экран. Я разве об этом писал?
надо в оконном режиме нстроить вид.
Или тогда уже скриптом раскрывайте на весь экран
[vba]
Код
objXL.WindowState = xlMaximized
[/vba]

Автор - boa
Дата добавления - 15.01.2020 в 21:26
Egider Дата: Четверг, 16.01.2020, 17:28 | Сообщение № 11
Группа: Пользователи
Ранг: Новичок
Сообщений: 42
Репутация: 0 ±
Замечаний: 0% ±

Excel 2016
Уважаемый boa, уважаемые форумчане - специалисты если есть возможность подскажите пожалуйста:
Возможно-ли использовать скрипт (макрос) для открытия следующего файла с паролем из открытого?
При этом для открытия использовать кнопку. Кнопка есть, работает но при открытии запрашивается пароль.
Как его обойти (что-то прописать в макросе) чтоб файл открывался. И сохранялась функция открытия этого файла
с запросом пароля через двойной клик мышки.


Пенсионер
 
Ответить
СообщениеУважаемый boa, уважаемые форумчане - специалисты если есть возможность подскажите пожалуйста:
Возможно-ли использовать скрипт (макрос) для открытия следующего файла с паролем из открытого?
При этом для открытия использовать кнопку. Кнопка есть, работает но при открытии запрашивается пароль.
Как его обойти (что-то прописать в макросе) чтоб файл открывался. И сохранялась функция открытия этого файла
с запросом пароля через двойной клик мышки.

Автор - Egider
Дата добавления - 16.01.2020 в 17:28
boa Дата: Четверг, 16.01.2020, 19:24 | Сообщение № 12
Группа: Друзья
Ранг: Ветеран
Сообщений: 559
Репутация: 167 ±
Замечаний: 0% ±

365
[vba]
Код
workbooks.open password:="123"
[/vba]
а вообще-то в хэлпе все это есть


 
Ответить
Сообщение[vba]
Код
workbooks.open password:="123"
[/vba]
а вообще-то в хэлпе все это есть

Автор - boa
Дата добавления - 16.01.2020 в 19:24
Egider Дата: Пятница, 17.01.2020, 10:16 | Сообщение № 13
Группа: Пользователи
Ранг: Новичок
Сообщений: 42
Репутация: 0 ±
Замечаний: 0% ±

Excel 2016
Извините меня, но объясните куда дописать Вами указанное.
Вот у меня есть макрос кнопки в "файле 1" для открытия другого файла "ПРОБА01", Лист1
[vba]
Код
Sub Открыть_ПРОБА01()
Application.Workbooks.Open("C:\Users\Николай\Desktop\Запуск Скриптом\ПРОБА01.xlsm").Worksheets("Лист1").Activate
End Sub
[/vba]
Файл "ПРОБА01" имеет пароль 123. Спасибо.


Пенсионер
 
Ответить
СообщениеИзвините меня, но объясните куда дописать Вами указанное.
Вот у меня есть макрос кнопки в "файле 1" для открытия другого файла "ПРОБА01", Лист1
[vba]
Код
Sub Открыть_ПРОБА01()
Application.Workbooks.Open("C:\Users\Николай\Desktop\Запуск Скриптом\ПРОБА01.xlsm").Worksheets("Лист1").Activate
End Sub
[/vba]
Файл "ПРОБА01" имеет пароль 123. Спасибо.

Автор - Egider
Дата добавления - 17.01.2020 в 10:16
Egider Дата: Пятница, 17.01.2020, 10:34 | Сообщение № 14
Группа: Пользователи
Ранг: Новичок
Сообщений: 42
Репутация: 0 ±
Замечаний: 0% ±

Excel 2016
Добавлю, что задача моя в том, чтобы с кнопки открывать файл "ПРОБА01" без запроса пароля.
А если открывать файл напрямую, то запрашивался чтоб пароль.


Пенсионер
 
Ответить
СообщениеДобавлю, что задача моя в том, чтобы с кнопки открывать файл "ПРОБА01" без запроса пароля.
А если открывать файл напрямую, то запрашивался чтоб пароль.

Автор - Egider
Дата добавления - 17.01.2020 в 10:34
boa Дата: Пятница, 17.01.2020, 10:54 | Сообщение № 15
Группа: Друзья
Ранг: Ветеран
Сообщений: 559
Репутация: 167 ±
Замечаний: 0% ±

365
Egider,
А вы по ссылке заглядывали?
[vba]
Код
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
[/vba]

Автор - boa
Дата добавления - 17.01.2020 в 10:54
Egider Дата: Пятница, 17.01.2020, 11:51 | Сообщение № 16
Группа: Пользователи
Ранг: Новичок
Сообщений: 42
Репутация: 0 ±
Замечаний: 0% ±

Excel 2016
СПАСИБО УВАЖАЕМЫЙ ВОА. Все осознал.


Пенсионер
 
Ответить
СообщениеСПАСИБО УВАЖАЕМЫЙ ВОА. Все осознал.

Автор - Egider
Дата добавления - 17.01.2020 в 11:51
Egider Дата: Пятница, 17.01.2020, 16:38 | Сообщение № 17
Группа: Пользователи
Ранг: Новичок
Сообщений: 42
Репутация: 0 ±
Замечаний: 0% ±

Excel 2016
Простите, но вновь Столкнулся с задачей: У меня 10 листов в открываемом файле, которые открываются своей кнопкой.
И что, нужно теперь для каждого листа в макрос вставлять пароль? Может есть какой-либо выход?


Пенсионер
 
Ответить
СообщениеПростите, но вновь Столкнулся с задачей: У меня 10 листов в открываемом файле, которые открываются своей кнопкой.
И что, нужно теперь для каждого листа в макрос вставлять пароль? Может есть какой-либо выход?

Автор - Egider
Дата добавления - 17.01.2020 в 16:38
RAN Дата: Пятница, 17.01.2020, 17:20 | Сообщение № 18
Группа: Друзья
Ранг: Экселист
Сообщений: 5660
Репутация: 1163 ±
Замечаний: 0% ±

2010
Может есть какой-либо выход?

Конечно есть. Снять пароли с листов.


Быть или не быть, вот в чем загвоздка!
 
Ответить
Сообщение
Может есть какой-либо выход?

Конечно есть. Снять пароли с листов.

Автор - RAN
Дата добавления - 17.01.2020 в 17:20
Egider Дата: Пятница, 17.01.2020, 17:38 | Сообщение № 19
Группа: Пользователи
Ранг: Новичок
Сообщений: 42
Репутация: 0 ±
Замечаний: 0% ±

Excel 2016
Пароль есть только на файле ПРОБА01. На листах его не ставил.


Пенсионер
 
Ответить
СообщениеПароль есть только на файле ПРОБА01. На листах его не ставил.

Автор - Egider
Дата добавления - 17.01.2020 в 17:38
boa Дата: Пятница, 17.01.2020, 18:04 | Сообщение № 20
Группа: Друзья
Ранг: Ветеран
Сообщений: 559
Репутация: 167 ±
Замечаний: 0% ±

365
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 'возвращает системный разделитель папок
[/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 'возвращает системный разделитель папок
[/vba]

Автор - boa
Дата добавления - 17.01.2020 в 18:04
  • Страница 1 из 2
  • 1
  • 2
  • »
Поиск:

Яндекс.Метрика Яндекс цитирования
© 2010-2024 · Дизайн: MichaelCH · Хостинг от uCoz · При использовании материалов сайта, ссылка на www.excelworld.ru обязательна!