Страница 1 из 1

Открытие гиперссылок на файлы с паролем

Добавлено: 30 окт 2008, 21:43
district
Уважаемые, туплю похоже! Помогите у кого есть ответ.

Каков может быть код открытия гиперссылки АКТИВНОЙ ЯЧЕЙКИ с автоматическим вводом пароля (открываемый файл под паролем, xls)?

По поиску ничего по теме не нашел. Перебрал уже кучу комбинаций пытаясь скомбинировать open filename и selection.hyperlinks(1).follow, но так и не смог добиться автоматического ввода пароля. Попытался зайти с другой стороны - вычленяя адрес гиперссылки и открывая файл по этому выделенному адресу. Неудачно. Сделал через вычленение названия открываемого файла и затем его открытия через filesearch. Код - огромный. Наверняка же есть простое надежное решение в одну строку.

Re: Открытие гиперссылок на файлы с паролем

Добавлено: 01 ноя 2008, 04:05
Naeel Maqsudov
По гиперссылке точно нельзя запароленный файл открыть!
А можно Ваш вариант решения посмотреть?
Честно говоря, никогда и в голову не приходило открывать открывать таким образом запароленные файлы... В этом пароле итак мало проку, а при таком раскладе зачем он вообще нужен?

Re: Открытие гиперссылок на файлы с паролем

Добавлено: 01 ноя 2008, 15:48
district
Спасибо, что откликнулись. Не ожидал, что оказывается это такой нетрадиционный вопрос. Файл по гиперссылке открыть - пожалуйста, а вот файл с паролем - нельзя. При той гибкости vb, которую отметил, это странно - до сих пор можно было все :) . Впрочем я только год вожусь с этим языком - еще до полного понимания далеко.

У меня сметы менеджеры подщивают в общий файл с помощью гиперссылки. Все сметы - под паролем. Этот общий файл куда все подшивается периодически открывает каждую смету и снимает с нее нужные данные (оборот по проекту, прибыль и прочее прочее - сметы постоянно модернизируются и показатели добавляются по мере необходимости и расширения аналитики). Эти данные заносятся в ту же строку общего файла (из нее забираются модулем аналитики верхней базы данных), где подшита смета, поэтому и требуется открывать именно гиперссылку, а не просто перебирать список линков.

Код открытия я разбросал по нескольким макросам для удобства (модули могут использоваться и другими макросами общего файла). Постараюсь собрать - показать. Но может это и не нужно - нужно подход другой применять, а не более простую формулу искать?

Re: Открытие гиперссылок на файлы с паролем

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

Re: Открытие гиперссылок на файлы с паролем

Добавлено: 01 ноя 2008, 18:05
EducatedFool
C гиперссылками, указывающими непосредственно на запароленный файл, желаемого результата добиться будет сложновато, поскольку Excel все обработчики событий листа запускает уже после попытки перейти по гиперссылке.

Но есть и нестандартные варианты решения, например: (проверено в 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

Re: Открытие гиперссылок на файлы с паролем

Добавлено: 02 ноя 2008, 16:50
district
Проверил последний код на тестовом файле - работает! Огромное спасибо! Похоже это именно то, что искал уже больше 3-х месяцев: коротко и эффективно. Сейчас поэкспериментирую с рабочей базой - отсутствие сообщений дальше будет означать, что проблем не нашел.