Гиперссылка на ячейку Excel - PullRequest
       25

Гиперссылка на ячейку Excel

4 голосов
/ 16 февраля 2010

Краткое резюме

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

Подробное описание

У меня есть таблица Excel, в которую пользователи вводят данные. Эта таблица затем используется для создания некоторых диаграмм в SVG. Диаграммы отображаются в Firefox (хотя это можно изменить на что-то другое, если что-то еще будет работать лучше). Мне бы хотелось, чтобы объекты на диаграммах SVG имели гиперссылки обратно на ячейки Excel, которые генерировали эти объекты, чтобы упростить изменение данных за диаграммами.

Я видел совет относительно таких гиперссылок, как file: /// C: /path/to/workbook.xls#Sheet1! A57 должен помочь, но это работает только из приложений IE или Office. Попытка использовать гиперссылку такого рода в Firefox или из меню Пуск -> Выполнить открывает книгу в последней активной ячейке в последний раз, когда книга была закрыта.

Я был бы совершенно счастлив, просто используя IE, за исключением того, конечно, что IE не поддерживает SVG, по крайней мере, не из коробки.

Так есть ли способ сформировать гиперссылку (или, возможно, какой-нибудь javascript), который откроет книгу Excel с конкретным листом и активной ячейкой?

Ответы [ 2 ]

1 голос
/ 18 февраля 2010

Вот как вы можете атаковать эту проблему.

Вставьте объект браузера в форму и перейдите к созданному файлу диаграммы.

Поскольку это ваш объект браузера, вы можете перехватить событие навигации, сгенерированное, когда пользователь нажимает гиперссылки SVG.

Разобрать цель навигации, чтобы получить ссылку на ячейку, например, «Лист1! A57», затем вызовите Application.Goto «Лист1! A57».

Пример: добавьте WebBrowser и CommandButton в пользовательскую форму, а затем вставьте этот код позади.

Private Sub UserForm_Initialize()
    Me.WebBrowser1.Navigate2 "file:///C:\Test.svg"
End Sub

Private Sub CommandButton1_Click()
    Me.WebBrowser1.Navigate2 "workbook:Sheet1!A57"
End Sub

Private Sub WebBrowser1_BeforeNavigate2(ByVal pDisp As Object, URL As Variant, Flags As Variant, TargetFrameName As Variant, PostData As Variant, Headers As Variant, Cancel As Boolean)
    Dim pos As Integer
    pos = InStr(1, URL, "workbook:", vbTextCompare)
    If 1 <= pos Then
        Dim cref As String
        cref = Mid(URL, pos + Len("workbook:"))
        Application.Goto Range(cref)

        Cancel = True
    End If
End Sub
0 голосов
/ 09 октября 2010

Я получил то же самое для работы с FireFox, используя другую технику.В моем случае Excel генерирует DOT для GraphViz, который генерирует .svg для FireFox.

Техника для ссылок довольно уродлива, так как требует много маленьких файлов, но работает очень быстро.Вам нужно выбрать новый тип файла или перехватить существующий редко используемый тип файла, например .xyz.Вы пишете файл для каждого отдельного узла или ребра в SVG, который вы хотите вернуться в другую ячейку Excel.Содержимое файла хранит имя файла (рабочей книги), рабочий лист и ссылку на ячейку.Я просто ставлю каждого на свою линию.Вы создаете один VBScript (. VBS) в виде отдельного файла сценария, это будет ваше приложение.Этот vbscript принимает один параметр, который является именем файла, и что он делает, это открывает файл, читает имя рабочей книги и имя рабочего листа, а также ссылку на ячейку в нем, чтобы отправлять команды в excel для вызова этой книги, рабочего листа и ячейки.,Затем вам нужно будет связать ваше приложение vbscript с типом файла (например, .xyz) в FireFox.Используйте Инструменты-> Параметры-> Приложения.Это может быть сложно, потому что вам нужно ввести имя файла VBS вместо просмотра его (вы можете перейти к папке, а затем переключиться на ввод)!Ссылки узла и края могут быть переданы через .svg (в моем случае через DOT через тег URL);ссылки в svg должны указывать на соответствующий локальный сгенерированный файл (например, один из файлов .xyz), используя файл: /// form.

Затем, когда вы нажимаете на ссылку в .svg, FireFox будетзапустить локальный vbscript как приложение с именем файла в качестве параметра.Vbscript считывает содержимое файла, находит Excel и отправляет ему команды в нужное место.После всего этого скрипт может вывести Excel на передний план.

Этот фрагмент vbscript получит аргумент командной строки:

arg = Wscript.Arguments (0)

Этот фрагмент vbs найдет рабочую копию Excel:

Set objExcel = GetObject (, "Excel.Application")

ИспользованиеВот такие команды для чтения файла:

Установить objFSO = CreateObject ("Scripting.FileSystemObject")
wkbName = objFSO.ReadLine
wksName = objFSO.ReadLine

Используйте следующие команды для отправки сообщений в Excel:

objExcel.Visible = True
wkb = objExcel.Workbooks (wkbName)
wkb.Activate
wks= wkb.Worksheets (wksName)
wks.Activate
wks.Rows (rowNum). Выберите

Этот фрагмент выведет Excel на передний план (проверено на win 7):

set objWsh = CreateObject ("Wscript.Shell")
objWsh.AppActivate objExcel.Name

(странно Wscript.Shell.AppActivate objExcel.Name нет!)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...