Уважаемые, туплю похоже! Помогите у кого есть ответ.
Каков может быть код открытия гиперссылки АКТИВНОЙ ЯЧЕЙКИ с автоматическим вводом пароля (открываемый файл под паролем, xls)?
По поиску ничего по теме не нашел. Перебрал уже кучу комбинаций пытаясь скомбинировать open filename и selection.hyperlinks(1).follow, но так и не смог добиться автоматического ввода пароля. Попытался зайти с другой стороны - вычленяя адрес гиперссылки и открывая файл по этому выделенному адресу. Неудачно. Сделал через вычленение названия открываемого файла и затем его открытия через filesearch. Код - огромный. Наверняка же есть простое надежное решение в одну строку.
Открытие гиперссылок на файлы с паролем
Модератор: Naeel Maqsudov
- Naeel Maqsudov
- Сообщения: 2570
- Зарегистрирован: 20 фев 2004, 19:17
- Откуда: Moscow, Russia
- Контактная информация:
По гиперссылке точно нельзя запароленный файл открыть!
А можно Ваш вариант решения посмотреть?
Честно говоря, никогда и в голову не приходило открывать открывать таким образом запароленные файлы... В этом пароле итак мало проку, а при таком раскладе зачем он вообще нужен?
А можно Ваш вариант решения посмотреть?
Честно говоря, никогда и в голову не приходило открывать открывать таким образом запароленные файлы... В этом пароле итак мало проку, а при таком раскладе зачем он вообще нужен?
Спасибо, что откликнулись. Не ожидал, что оказывается это такой нетрадиционный вопрос. Файл по гиперссылке открыть - пожалуйста, а вот файл с паролем - нельзя. При той гибкости vb, которую отметил, это странно - до сих пор можно было все
. Впрочем я только год вожусь с этим языком - еще до полного понимания далеко.
У меня сметы менеджеры подщивают в общий файл с помощью гиперссылки. Все сметы - под паролем. Этот общий файл куда все подшивается периодически открывает каждую смету и снимает с нее нужные данные (оборот по проекту, прибыль и прочее прочее - сметы постоянно модернизируются и показатели добавляются по мере необходимости и расширения аналитики). Эти данные заносятся в ту же строку общего файла (из нее забираются модулем аналитики верхней базы данных), где подшита смета, поэтому и требуется открывать именно гиперссылку, а не просто перебирать список линков.
Код открытия я разбросал по нескольким макросам для удобства (модули могут использоваться и другими макросами общего файла). Постараюсь собрать - показать. Но может это и не нужно - нужно подход другой применять, а не более простую формулу искать?

У меня сметы менеджеры подщивают в общий файл с помощью гиперссылки. Все сметы - под паролем. Этот общий файл куда все подшивается периодически открывает каждую смету и снимает с нее нужные данные (оборот по проекту, прибыль и прочее прочее - сметы постоянно модернизируются и показатели добавляются по мере необходимости и расширения аналитики). Эти данные заносятся в ту же строку общего файла (из нее забираются модулем аналитики верхней базы данных), где подшита смета, поэтому и требуется открывать именно гиперссылку, а не просто перебирать список линков.
Код открытия я разбросал по нескольким макросам для удобства (модули могут использоваться и другими макросами общего файла). Постараюсь собрать - показать. Но может это и не нужно - нужно подход другой применять, а не более простую формулу искать?
Сорри, я уточню все-таки еще:
Запуск строки:
--------
With Workbooks.Open(Filename:=Selection.Hyperlinks(1).Follow, ReadOnly:=True, Password:="non")
End With
------
приводит к открытию файла по гиперссылке, но пароль не вводится. Я ищу код, который бы позволял вводить пароль автоматически как это происходит при открытии обычного файла с паролем. Таким образом код гиперссылки, по логике, надо включить в оболочку file.open, поскольку последнее имеет такой критерий как password в отличии от первого. Ошибок при выполнении вышеприведенного кода не возникает, поэтому и сделал вывод, что, возможно, все дело в синтаксисе - что-то не дописал или переписал
. Правильно понял, что дело не в синтаксисе, а в принципиальном отсутствии решения здесь?
Запуск строки:
--------
With Workbooks.Open(Filename:=Selection.Hyperlinks(1).Follow, ReadOnly:=True, Password:="non")
End With
------
приводит к открытию файла по гиперссылке, но пароль не вводится. Я ищу код, который бы позволял вводить пароль автоматически как это происходит при открытии обычного файла с паролем. Таким образом код гиперссылки, по логике, надо включить в оболочку file.open, поскольку последнее имеет такой критерий как password в отличии от первого. Ошибок при выполнении вышеприведенного кода не возникает, поэтому и сделал вывод, что, возможно, все дело в синтаксисе - что-то не дописал или переписал

- EducatedFool
- Сообщения: 197
- Зарегистрирован: 06 апр 2008, 14:03
- Откуда: Россия, Урал
- Контактная информация:
C гиперссылками, указывающими непосредственно на запароленный файл, желаемого результата добиться будет сложновато, поскольку Excel все обработчики событий листа запускает уже после попытки перейти по гиперссылке.
Но есть и нестандартные варианты решения, например: (проверено в Excel 2003)
1. Назначаем ячейке гиперссылку, но гиперссылка указывает не на файл, а на ячейку с полным именем файла.
После перехода по этой гиперссылке срабатывает примерно такой код:
В данном случае, если мы по гиперссылке перешли на ячейку, содержащую путь к файлу с паролем "пароль" на диске Е, то файл открывается.
Если нежелательно изменение активной ячейки (из-за перехода на другую ячейку), можно сделать автоматический переход обратно - подобное обсуждалось в этой теме
2. Создаём видимость гиперссылки. То есть синий цвет, подчёркивание и всё такое, но при щелчке на этой ячейке происходит открытие файла, имя которого указано в ячейке. Код обработчика точно такой же, как и в предыдущем случае.
Но есть и нестандартные варианты решения, например: (проверено в Excel 2003)
1. Назначаем ячейке гиперссылку, но гиперссылка указывает не на файл, а на ячейку с полным именем файла.
После перехода по этой гиперссылке срабатывает примерно такой код:
Код: Выделить всё
Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range)
If Target.Value Like "E:\*" Then Workbooks.Open Target.Value, , False, , "пароль"
End Sub
Если нежелательно изменение активной ячейки (из-за перехода на другую ячейку), можно сделать автоматический переход обратно - подобное обсуждалось в этой теме
2. Создаём видимость гиперссылки. То есть синий цвет, подчёркивание и всё такое, но при щелчке на этой ячейке происходит открытие файла, имя которого указано в ячейке. Код обработчика точно такой же, как и в предыдущем случае.
Если немного переделать код, файл будет открываться:Запуск строки:
--------
With Workbooks.Open(Filename:=Selection.Hyperlinks(1).F ollow, ReadOnly:=True, Password:="non")
End With
------
приводит к открытию файла по гиперссылке, но пароль не вводится.
Код: Выделить всё
Sub test()
If ActiveCell.Hyperlinks.Count = 0 Then Exit Sub
With Workbooks.Open(Filename:=ActiveCell.Hyperlinks(1).Address, ReadOnly:=True, Password:="non")
' код
End With
End Sub
Проверил последний код на тестовом файле - работает! Огромное спасибо! Похоже это именно то, что искал уже больше 3-х месяцев: коротко и эффективно. Сейчас поэкспериментирую с рабочей базой - отсутствие сообщений дальше будет означать, что проблем не нашел.