Гиперссылка на клетку? - PullRequest
1 голос
/ 04 мая 2010

Я хочу получить гиперссылку на ячейку в Excel, а затем вставить эту гиперссылку в стороннее приложение. Щелчок по гиперссылке должен загрузить Excel соответствующей книгой, и эту ячейку следует выбрать курсором.

Гиперссылка должна работать в продуктах, связанных с Microsoft, таких как OneNote; например, если у меня есть книга «D: \ abc.xls», и я хочу перейти к ячейке C12, я бы сделал гиперссылку, например «D: \ abc.xls # C12».

И это будет работать; однако, если я вставлю это в приложение не от Microsoft, оно просто откроет Excel и рабочую книгу, но ячейка не будет выделена. Как я могу заставить это работать?

Ответы [ 2 ]

1 голос
/ 05 мая 2010

RE комментарий

Это то, что я предлагал, например, сохранить следующее как .reg и импортировать его

REGEDIT4

[HKEY_CLASSES_ROOT\XLOPEN]
@="URL:Excel Opener"
"URL Protocol"=""

[HKEY_CLASSES_ROOT\XLOPEN\shell\open\command]
@="CSCRIPT.EXE \"C:\\TEMP\\XLOPEN.VBS\" \"%1\""

Это делает обработчик протокола URL XLOPEN://, который при вызове будет запускать XLOPEN.VBS.

Сохранить следующее как C:\TEMP\XLOPEN.VBS

rem //get an argument like "XLOPEN://C:\null\text.xlsx/#F55" note extra /
dim arg:  arg = WScript.Arguments.item(0)
dim arr:  arr = (split(ucase(arg), "#"))
rem unmangle the url
dim filename: filename = replace(arr(0), "XLOPEN://", "")
if (right(filename, 1) = "/") then filename = mid(filename, 1, len(filename)-1)
dim xl:   set xl = createobject("excel.application")
xl.Workbooks.Open filename 
xl.range(arr(1)).select
xl.visible = true

Теперь, если вы запустите

xlopen://c:\null\test.xlsx#Q50

или используйте

<a href="xlopen://c:\null\test.xlsx#Q50">bla bla</a>

Windows выполнит поиск xlopen:// и передаст строку xlopen://c:\null\test.xlsx/#Q50 в XLOPEN.VBS, которая извлечет путь к файлу c:\null\test.xlsx1 и откроет его, затем выберет диапазон после #.

Это работает, если вызывается в браузерах / из оболочки / через Windows API, не знаю, будет ли это работать в стороннем приложении. (Вы должны заменить скрипт на вспомогательный exe)

1 голос
/ 04 мая 2010

Это должно быть что-то автоматически выполненное приложениями Office, поскольку путь: abc.xls#C12, взятый в целом, представляет собой потенциально допустимое имя файла - если вы попытаетесь запустить его из оболочки, вы получите ошибку «путь не найден» .

Если вы щелкнете по этой ссылке в onenote и посмотрите на командную строку, результирующий экземпляр Excel был открыт с помощью только переключателя «-embedding», что, вероятно, означает, что onenote выполняет синтаксический анализ abc.xls, запускающего Excel с помощью своих функций автоматизации затем активировать C12.

Я думаю, что если вы хотите эту функциональность, вам нужно сделать то же самое с помощью вспомогательного приложения и использовать пути, такие как "C:\your_XL_loader.exe D:\abc.xls#C12".

(Если стороннее приложение учитывает протокол Windows, он делает тривиально, чтобы your_XL_loader.exe ассоциировал себя с чем-то вроде XXX://abc.xls#C12)

...