Страницы: 1
RSS
Автоматическое активирование гиперссылки в Excel
 
Проблема следующего характера
Во внешней программе вычисляется текст гиперссылки (=гиперссылка("бла-бла";"бла-бла"))
после переноса этой вычисленной строки при помощи макроса в Excel, строка так и выводится с полным наименованием
После нажатия F2 и Enter значение принимает нужный вид
Сразу скажу что в настройках стоит автоматический пересчет функций и в макросе присутствует  Application.Volatile True
Как можно автоматизировать процесс изменения значения ячейки с гиперссылкой
 
Цитата
Markiz_ написал: после переноса этой вычисленной строки при помощи макроса в Excel
какого макроса? что переносится? .Formula, .Value, .Text?
F1 творит чудеса
 
вот таким макросом перенос
Код
Application.Volatile True
    Sheets("файл1)").Select
    Workbooks.Open Filename:="файл2"
    ActiveWindow.SmallScroll Down:=-21
    Range("B2:E426").Select
    Selection.Copy
    Windows("файл1").Activate
    ActiveWindow.SmallScroll Down:=-9
    Range("B5").Select
    ActiveSheet.Paste
 
Код
Application.Volatile True 
Workbooks.Open Filename:="файл2" 
Workbooks("файл2").Range("B2:E426").Copy 
Workbooks("файл1").Range("B5").Paste
Application.CutCopyMode = False

Формула массива (ФМ) вводится Ctrl+Shift+Enter
Memento mori
 
Кнопка цитирования не для ответа [МОДЕРАТОР]

так тоже все по прежнему
 
Volatile тут вообще ни при чем. Возможно, надо переносить формулы
Код
Workbooks.Open Filename:="файл2"
Workbooks("файл1").activesheet.Range("B5:E429").Formula = Range("B2:E426").Formula
 
А есть какая нибудь функция в Excel
чтобы она активировал все ячейки где указаны гиперссылки?
Я так понял что гиперссылка это все таки не формула  
 
Функция не может что-либо активировать. Она только возвращает значение.
 
получается в ручном режиме все ячейки с гиперссылками через F2 и Enter активировать?
 
Markiz_, предположу, используйте формулу ГИПЕРССЫЛКА().

Формула массива (ФМ) вводится Ctrl+Shift+Enter
Memento mori
 
так мне и надо активировать эту формулу (не формулу) в ячейке
в Excel импортируется строка формулы в текстовом формате '=Гиперссылка()'
осталось ее автоматом чем то активировать ))
Если бы Гиперссылка() считалась формулой то по идее по F9 она должна пересчитываться или при спец. вставке значения формулы писаться как надо,
но этого не происходит
 
Markiz_, вместо того, чтобы на словах рисовать свой файл, Вы бы приложили файл, в котором как есть и как надо. В общем, читайте правила, следуйте им и не тратьте зазря наше и Ваше время. Спасибо.

Формула массива (ФМ) вводится Ctrl+Shift+Enter
Memento mori
 
Извиняюсь если что не так
после импорта данных получаю файл tt
а хотелось получать как tt1
 
Выделите столбец B, найти и заменить = на =. С форматированием, думаю, уже самостоятельно разберётесь. Если нет - пишите сюда.

Формула массива (ФМ) вводится Ctrl+Shift+Enter
Memento mori
 
найти и заменить = на = с учетом всех форматов у меня не проходит
 
Все заработало.
"Найти и заменить" решает эту проблему  :D
Всем спасибо кто меня терпел  ;)
 
Друзья подскажите заменить равно на равно это единственный вариант?
Ведь есть обновляемые таблицы скажем через 2 три часа по несколько тысяч строк ну и менять равно на равно тоже утомляет. Может есть кака-либо автоматизация?
Изменено: Александр Кравчук - 23.10.2024 18:41:43
 
Цитата
Александр Кравчук написал:
менять равно на равно тоже утомляет. Может есть кака-либо автоматизация?
Можно всё сделать в одном вызове диалога "Найти и заменить" (Ctrl+H).
Найти:  =ГИПЕР
Заменить на: =ГИПЕР
Искать: в книге
Область поиска: формулы

Кнопка - Заменить все.
Владимир
 
Спасибо Владимир. Как это сделать без танцев с бубном. У меня таблица в Power Queri c последующей загрузкой в книгу Exel Нажатием ALT+F5 обновить и все... хотелось бы увидеть нужную таблицу с нужными данными. но пока этого не получается.
Есть макрос (в сети нашел)  но у меня он почему-то не работает так как нужно

=ГИПЕРССЫЛКА("https://zakupki.gov.ru/epz/main/public/home.html";"ИМЯ") гиперссылка после работы макроса
в поле EXEL должно быть ИМЯ и ссылка по имени => https://zakupki.gov.ru/epz/main/public/home.html

И это действительно все заработает после замены описанной выше, но хотелось бы автоматизировать если это возможно

Sub HyperSsylka()Dim cell As Range, ra As Range: Application.ScreenUpdating = False
Set ra = Range([a2], Range("a" & Rows.Count).End(xlUp))
For Each cell In ra.Cells
If Len(cell) Then cell.Hyperlinks.Add cell, cell
Next cell
End Sub

Sub HyperSsylkaSelect()
Dim cell As Range: Application.ScreenUpdating = False
For Each cell In Selection
If Len(cell) Then cell.Hyperlinks.Add cell, cell
Next cell
End Sub

Помогите пожалуйста кто в теме. Хотелось бы чтобы при обновлении запроса Power Queri на лист Exel загружались активные ссылки.
Изменено: Александр Кравчук - 23.10.2024 21:01:57
 
Похоже, тот (нечастый) случай, когда изменение данных через диалог (Найти и заменить) производится по иному алгоритму, чем через вызов метода Range.Replace (c учетом  известных особенностей, связанных с локализацией).
Думаю, что я "в теме".  :)
Скорее всего, можно сделать макросом, пробежавшись по ячейкам с функцией HYPERLINK (ГИПЕРССЫЛКА) и меняя свойство FormulaLocal ячейки:
Код
oCell.FormulaLocal=oCell.FormulaLocal


Написанное относится к примеру из стартовой темы.
Изменено: sokol92 - 23.10.2024 21:24:53
Владимир
 
Если не затруднит подскажи пожалуйста где и что в макросе подправить потому что для меня пока что макросы темный лес (в плане их составления). А куда их кинуть это понятно.
 
Сссылка в ячейке и формула =ГИПЕРССЫЛКА() это разные вещи.
Формулу недавно ставил так:
ячейка.formula="=HYPERLINK(..... тут текст название и ссылка
работает.

Вернее через массив, вот из макроса кусочек:
Код
For Each col In d3(k)
ii = ii + 1
a(i, ii) = "=HYPERLINK(""#'Лист1'!B" & col & """,""" & k & """)"
Next
Next

[i3].Resize(UBound(a), UBound(a, 2)).Formula = a
End Sub
Изменено: Hugo - 23.10.2024 21:29:52
 
Вот пример что в первом случае что во втором как я понимаю суть одна
Изменено: Александр Кравчук - 23.10.2024 21:37:19
 
В PQ не работает как в макросе, ставит тупо текст из запроса...
 
Если формул на листе не много, то можно (нахально) так:
Код
Sub Test()
  ActiveSheet.UsedRange.FormulaLocal = ActiveSheet.UsedRange.FormulaLocal
End Sub
Владимир
 
Спасибо Владимир. Рабочий вариант.  
Страницы: 1
Читают тему
Наверх