Автоматические гиперссылки в Excel? - PullRequest
4 голосов
/ 02 февраля 2010

Я предоставляю данные с сервера SSAS, к которому пользователи могут подключаться с помощью любого инструмента, который им нравится (на практике обычно это Excel 2007).Мы хотели бы предоставить URL-адреса в некоторых ячейках и хотели бы, чтобы Excel распознал их как гиперссылки, сделал активными и соответствующим образом отформатировал.

Когда мы помещаем URL-адрес в ячейку, он просто отображается как простой текст.Если вы дотронетесь до ячейки и снова нажмете, то Excel активирует ее как ссылку.

То же самое происходит, если вы получаете данные напрямую из SQL или из файла CSV, в использовании SSAS нет ничего особенногоздесь.

Кто-нибудь знает способ сделать эти ссылки автоматически?Мы не можем контролировать создание электронной таблицы, поэтому макросы отсутствуют.

РЕДАКТИРОВАТЬ:

Только что получил ответ от Меффа.Хорошая мысль, однако я забыл упомянуть, что место, где мы показываем URL-адреса, является целью действия по детализации.

Ответы [ 4 ]

3 голосов
/ 02 февраля 2010

Я не верю, что это возможно без макроса.

Гиперссылка в ячейке Excel не имеет ничего общего со значением ячейки. Это отдельный объект, который связан с ячейкой. Полнофункциональный способ добавить гиперссылку в ячейку - через пункт меню Excel Вставить -> Гиперссылка.

Тот факт, что гиперссылка добавляется, когда пользователь вводит значение, такое как «http: // ...», «https: // ...» или «ftp: // ...», является просто Ярлык GUI, который имеет тот же эффект, что и Insert -> Hyperlink. В вашем примере, когда пользователь «дотрагивается» до ячейки, он фактически вводит в ячейку значение «http: // ...» и вызывается ярлык GUI для «Вставка -> Гиперссылка». Однако ярлык НЕ вызывается, когда значения вводятся в ячейки программно, либо через VBA, либо через встроенные функции Excel (например, «Данные» -> «Импорт внешних данных»).

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

Dim cell as Range : For Each cell in Selection.Cells // could also use Range("A1").CurrentRegion.Cells or similar
    If Left(cell.Value, 7) = "http://" Or Left(cell.Value, 8) = "https://" Or Left(cell.Value, 6) = "ftp://" Then
        Call cell.HyperLinks.Add(cell, cell.Value)
    End If
Next cell

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

1 голос
/ 15 ноября 2013

без VBA .... Я нашел самый простой способ сделать это - просто записать макрос и применить к макросу комбинацию клавиш (например, ctrl -L). Конечные пользователи знают, что, если они хотят активировать «ссылки», они нажимают CTRL-L. Мой макрос был записан как ..... выделите столбец, щелкните данные, текст в столбцы, следующий, следующий, следующий, закончить), а затем нажмите на верхнюю левую ячейку a1 просто для хорошей меры. Мне пришлось сохранить файл как файл xlsm (не знаю, почему) в 2013

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

Посмотрите на действия URL в SSAS, это позволяет им щелкнуть правой кнопкой мыши по ячейке и получить возможность перейти по ссылке в контекстном меню:

http://timlaqua.com/2009/03/ssas-cube-action-cells-target-type-url-action-type-example/

0 голосов
/ 11 апреля 2013

Простой способ вручную обновить множество ссылок - использовать для начала ссылку на ячейку с гиперссылкой, а затем скопировать только значение ссылок на уже отформатированные ячейки. То есть в пункте назначения создайте активную ячейку гиперссылки и скопируйте ее в диапазон. Убедитесь, что ячейки теперь активны как ссылки html. Затем возьмите ваши «текстовые» гиперссылки и вставьте новые ссылки как ЗНАЧЕНИЯ поверх этих ячеек, и они должны активироваться.

...