Имя: Пароль:
1C
 
Относительная гиперссылка на другую ячейку Excel методом ole automation
0 commdt
 
17.06.15
10:15
Добрый день!
Стоит задача при создании прайса в Excel методом ole automation добавить оглавление со ссылками на ячейки, находящиеся на другом листе того же прайса. Теперь к сути:

Синтаксис:

Worksheet.Hyperlinks.Add(Anchor, Address, SubAddress, ScreenTip, TextToDisplay)

Для внешней гиперссылки используется второй параметр, здесь всё просто, но вот если попытаться воткнуть туда адрес другой ячейки, то он пытается слепить абсолютный адрес на диске к файлу с названием ячейки, а нам нужен относительный адрес на другую ячейку на соседнем листе той же книги. Смотрим синтаксис VBA:

WorkSheet.Hyperlinks.Add
Anchor:= ИсходнаяЯчейка,
Address:="",
SubAddress:= ЦелевойДиапазон

По идее это приводит нас к следующему коду:

ЯчейкаОглавления = ЛистОглавления.Cells(1, 1);
ЯчейкаАдреса = ЛистПрайса.Cells(1, 1);
Адрес = ЛистПрайса.Range(ЯчейкаАдреса, ЯчейкаАдреса);

ЛистОглавления.Hyperlinks.Add(ЯчейкаОглавления,"",Адрес);

Однако, этот код вываливается с ошибкой "Ошибка при вызове метода контекста (Add)". То же самое происходит, если поставить в субадрес не диапазон, а конкретную ячейку

(Подключение к экселю, переменные с именами листов и т.д. - в порядке. Т.к. пока я не поставил адрес ячейки в 3-й параметр прайс благополучно формировался, правда с бесполезными ссылками)
1 commdt
 
17.06.15
11:06
А, впрочем, сработало так:

ЛистОглавления.Hyperlinks.Add(Ячейка,"","Прайс!R" + НомерСтроки + "C1");

И чёрт с ним