powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / изменить гиперссылки
14 сообщений из 14, страница 1 из 1
изменить гиперссылки
    #36687433
макксим
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
прроизошел некий трабл непонятной природы! который изменил все гиперссылки в документе если раньше они вели на \\server\docs то теперь ведут на C:\Documents and Settings\user\Application Data\Microsoft\Excel\
кто нить может подсказать макрос что бы изменить гиперссылки??
то есть поменять в столбце все адреса в гиперссылках C:\Documents and Settings\user\Application Data\Microsoft\Excel\ на \\server\docs .....
...
Рейтинг: 0 / 0
изменить гиперссылки
    #36687548
Фотография Shamanus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
макксим,

ну как то вот вот-так
Код: plaintext
1.
2.
3.
4.
5.
Sub MY_SUB()
Dim hh As Hyperlink
For Each hh In ActiveSheet.Hyperlinks
hh.Address = WorksheetFunction.Substitute(hh.Address, "C:\Documents and Settings\user\Application Data\Microsoft\Excel\", "\\server\docs")
Next hh
End Sub
...
Рейтинг: 0 / 0
изменить гиперссылки
    #36687777
макксим
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Shamanus,

не работает! Alt+F8 запуск макроса...и ничего не меняется
...
Рейтинг: 0 / 0
изменить гиперссылки
    #36687787
Фотография Shamanus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
макксим,

пример файла в студию
...
Рейтинг: 0 / 0
изменить гиперссылки
    #36687898
макксим
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Shamanus,
...
Рейтинг: 0 / 0
изменить гиперссылки
    #36687950
Фотография Shamanus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
макксим,

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

Код: plaintext
1.
2.
3.
4.
5.
6.
Sub MY_SUB()
Dim hh As Hyperlink
For Each hh In ActiveSheet.Hyperlinks
hh.Address = WorksheetFunction.Substitute(hh.Address, "..\..\user\Application Data\Microsoft\Excel", "\\server\docs")
Next hh
End Sub

поясню почему
адрес гиперссылки в свойстве должен выглядеть вот так

Код: plaintext
1.
C:\Documents and Settings\ИМЯПОЛЬЗОВАТЕЛЯ\user\Application Data\Microsoft\Excel\Входящие\Подписанные\Абак-центр\ДСР-0078_09_12- 02 - 09 \ДС№ 4  от  01 . 06 . 2009 .pdf

,а выглядит вот так, видимо из-за длины текста урезается

Код: plaintext
..\..\user\Application Data\Microsoft\Excel\Входящие\Подписанные\Абак-центр\ДСР-0078_09_12- 02 - 09 \ДС№ 4  от  01 . 06 . 2009 .pdf

поэтому в новом варианте кода на VBA, я меняю не ту фразу которую Вы указали, а урезанный её вариант (На схеме нижний)и у меня все работает, но это теперь зависит от длины гиперссылки



можно код доработать "умным" алгоритмом, который будет в тексте ссылки искать ключевые точки (ну типа фразу "Microsoft\Excel" и заменять ВЕСЬ предшествующий текст и эту фразу на Вашу), но это если текущее решение не подойдет.
...
Рейтинг: 0 / 0
изменить гиперссылки
    #36688226
макксим
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Shamanus,

самое интересное там слеш меняется в другую сторону еще!!!
Documents and Settings\user\Application Data\Microsoft\Excel\
...
Рейтинг: 0 / 0
изменить гиперссылки
    #36688258
Фотография Shamanus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
макксим,

это где?
...
Рейтинг: 0 / 0
изменить гиперссылки
    #36688261
макксим
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
макксим,

вариант не отрабатывает похоже ссылки слишком длинные и ексел произвольно их укорачивает!
...
Рейтинг: 0 / 0
изменить гиперссылки
    #36688269
Фотография Shamanus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
макксим,

ну значит как я и писал, нужно доработать код чтобы заменять весь текст предшествующий определенному шаблону
...
Рейтинг: 0 / 0
изменить гиперссылки
    #36691573
макксим
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Shamanus,

эт как?
...
Рейтинг: 0 / 0
изменить гиперссылки
    #36691623
Фотография Shamanus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
макксим,

алгоритм такой

Код: plaintext
1.
2.
3.
4.
5.
Sub MY_SUB()
Dim hh As Hyperlink
For Each hh In ActiveSheet.Hyperlinks
              hh.Address '<-------- ВОТ ТУТ см. п.п.1
Next hh
End Sub


1. у Вас есть текстовая переменная содержащая адрес гиперссылки вида
Код: plaintext
1.
C:\Documents and Settings\user\Application Data\Microsoft\Excel\Входящие\Подписанные\Абак-центр\ДСР-0078_09_12- 02 - 09 \ДС№ 4  от  01 . 06 . 2009 .pdf
в коде она обозначена моей указкой и имеет вид hh.address

т.к. длина ссылки меняется регулярно, то вид может быть таким
Код: plaintext
1.
..\..\user\Application Data\Microsoft\Excel\Входящие\Подписанные\Абак-центр\ДСР-0078_09_12- 02 - 09 \ДС№ 4  от  01 . 06 . 2009 .pdf
или таким
Код: plaintext
1.
..\..\Application Data\Microsoft\Excel\Входящие\Подписанные\Абак-центр\ДСР-0078_09_12- 02 - 09 \ДС№ 4  от  01 . 06 . 2009 .pdf


2. в этой ссылке заложен "ключ" который будет на месте все время, например фраза
Код: plaintext
Microsoft\Excel

3. Пишете код, который ищет в тексте местоположение этого ключа, есть функция которая вернет на каком символе начинается эта фраза в первом случае это 29-ый символ, во втором 24-ый

4. Отрезаете при помощи функции первую часть текста (с первого по 29-ый или по 24-ый) и у Вас остается вот такой фрагмент
Код: plaintext
Microsoft\Excel\Входящие\Подписанные\Абак-центр\ДСР-0078_09_12- 02 - 09 \ДС№ 4  от  01 . 06 . 2009 .pdf

вне зависимости от того, какое было начало у текста

5. При помощи функции (или просто знака &) приклеиваете нужную Вам часть
Код: plaintext
\\server\docs
к оставшемуся фрагменту

6. Получаете нужный вид гиперссылки и присваиваете его этой переменной
Код: plaintext
\\server\docs\Microsoft\Excel\Входящие\Подписанные\Абак-центр\ДСР-0078_09_12- 02 - 09 \ДС№ 4  от  01 . 06 . 2009 .pdf

7.???????

8 Proffit

конечно я тут не учел, что фраза Microsoft\Excel тоже сама не нужна. Как сделать чтобы её не было я думаю догадаетесь.
...
Рейтинг: 0 / 0
изменить гиперссылки
    #36731657
Balu26
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Доброе время суток!
У меня такая проблема. Есть три стандартных отчета и есть пять отделов которые заполняют их каждый со своими значениями и есть сводный отчет куда со всех отделов обьединяется информация.
Как защитить ссылку что бы она не изменялась?
Есть ссылка например:
=’D:\Отчеты\Отчет отдела [имя]\[Отчет отдела [имя].xlsx]1′!D11+..... на какой документ она ссылается, и что интересно что при открытии документа на который эта ссылка указывает и внесении изменений в нем при открытом документе где эта ссылка прописана, эта ссылка почему то становится =’[Отчет отдела [имя].xlsx]1′!D11+... Подскажите как сделать так что бы она оставалась в первоначальном виде как при закрытом документе так и при открытом на который она указывает в чем проблема или ошибка.
...
Рейтинг: 0 / 0
изменить гиперссылки
    #36731750
Фотография big-duke
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Balu26,

это специфика Excel - менять текст ссылки при открытии документа.
...
Рейтинг: 0 / 0
14 сообщений из 14, страница 1 из 1
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / изменить гиперссылки
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]