Копирование АДРЕСА текущей ячейки в буфер обмена, или как быстро создавать внутренние гиперссылки по книге?, Нужно для быстрого создания гиперссылок внутри книги Excel с кучей листов.
Задача: быстро создавать навигацию по книге с кучей листов.
Как сейчас: 1. запомнить в голове адрес и лист целевой ячейки 2. Переходим на лист, где создаем ссылку 3. CTRL+K 4. Мучительно ищем в огромном списке нужный лист (а по дефолту Excel предлагает список имен, а не листов! Жутко бесит и неудобно. Т.е. и тут лишние клики мышки, нажать "место в документе", потом закрыть "определённые имена", потом уже открыть "список листов" и искать нужный) 5. Ручками пишем адрес ячейки.
Как хочу: 1. Хоткей на копирование в буфер адреса ячейки с полным путем. Какой? 2. Переходим на лист, где создаем ссылку 3. CTRL+K (или что-то другое, если есть такой вариант) 4. CTRL+V — но сильно сомневаюсь, что прокатит, т.к. мне надо не только адрес ячейки вставить, но ещё и путь до целевого листа. Как тогда ещё можно?
Всякие макросы для автоматического создания оглавления у меня есть, но мне необходимо создавать всякие внутренние переходы между листами, а не через оглавление.
PS. Если есть хоть какой-то вариант решения задачи через Надстройку Plex или ASAP — то тоже пойдет, они обе у меня есть.
написал: 1. Хоткей на копирование в буфер адреса ячейки с полным путем. Какой?
Макросом можно, который повесить на свое сочетание клавиш:
Код
Sub CopyAddrToCB()
Dim st As String
st = "'" & ActiveCell.Parent.Name & "'!" & ActiveCell.Address
With GetObject("New:{1C3B4210-F441-11CE-B9EA-00AA006B1A69}")
.SetText st
.PutInClipboard
End With
End Sub
Option Explicit
Sub Hyperlink_Add()
Dim sSubAddress As String
sSubAddress = ClipboardText()
If sSubAddress <> "" Then
'ActiveCell.Hyperlinks.Delete
ActiveSheet.Hyperlinks.Add Anchor:=ActiveCell, Address:="", SubAddress:=sSubAddress
End If
End Sub
Sub Hyperlink_Save()
Dim sSubAddress As String
sSubAddress = "'" & ActiveSheet.Name & "'!" & Selection.Address(0, 0)
SetClipboardText sSubAddress
End Sub
Function ClipboardText() ' чтение из буфера обмена
With GetObject("New:{1C3B4210-F441-11CE-B9EA-00AA006B1A69}")
.GetFromClipboard
ClipboardText = .GetText
End With
End Function
Sub SetClipboardText(ByVal txt$) ' запись в буфер обмена
With GetObject("New:{1C3B4210-F441-11CE-B9EA-00AA006B1A69}")
.SetText txt$
.PutInClipboard
End With
End Sub
МатросНаЗебре, В буфер копирует через раз, то нормально, то ошибка, как и на предыдущем макросе от webley Из буфера обратно ссылку не вставляет, даже если она "нормально" скопировалась. 2й скрин-каст: https://i.imgur.com/JSJEso0.gif
Файл для растерзания приложил. Заполнен случайными данными.
ЧЯДНТ? (пока всё это без хоткеев, тупо в лоб через gui, а потом и хоткей и кнопки на риббон сделаю)