2014-12-12 2 views
0

В листе Excel (создаваемом путем импорта внешних данных и изображений) находятся несколько ячеек, каждый из которых содержит разные изображения, а это изображение имеет гиперссылку. Эти ячейки, содержащие изображения, находятся в одной колонке.Excel: получение гиперссылки из изображения в ячейке

Как получить эту гиперссылку с каждого изображения? Гиперссылка НЕ ​​извлекается из этой ячейки.

У меня есть пользовательская функция, которая легко извлекает гиперссылки из любой ячейки (если есть гиперссылка).

Function GetURL(rng As Range) As String 
On Error Resume Next 
GetURL = rng.Hyperlinks(1).Address 
End Function 

Эта функция может быть размещена в любом месте. Например: В ячейке c25 должен быть указан URL-адрес из гиперссылки в ячейке A1. Для этого просто введите следующую формулу в ячейку c25.

=GetURL(A1) 

Это работает просто отлично.

Однако, если эта ячейка A1 содержит изображение с гиперссылкой, тогда результат будет равен нулю (или ничего). Хотя гиперссылка присутствует как часть этого изображения.

По-видимому, изображение - это объект, который необходимо решить. Как это можно сделать?

Всего найдено possible duplicate. К сожалению, ответ меня не заставил. Пожалуйста, добавьте образец кода. Спасибо.

ответ

0

Форма также имеет гиперссылку. Адреса
Форма определена на листе, а также имеет имя.
Собираем их вместе, я придумал следующую функцию:

Function PicURL(Pic As String, Optional SheetName As String) As String 
If SheetName = "" Then SheetName = Application.Caller.Worksheet.Name 
On Error Resume Next 
PicURL = Sheets(SheetName).Shapes(Pic).Hyperlink.Address 
End Function 

Использование: Если картинка находится на том же листе, а затем =PicURL("Picture 1") возвращает целевой адрес.
Если изображение находится на другом листе, то потребуется =PicURL("Picture 1","Sheet1").
Если картинка находится в другом листе, тогда это совершенно другая игра с мячом, и я оставляю это как упражнение для читателя.

+0

К сожалению, данный код не работает для меня. Знай, что я делаю неправильно. Пожалуйста, не беспокойтесь о листе. Мне нужно, чтобы начальная функция (как указано в моем вопросе) была расширена/изменена, чтобы она могла читать URL-адрес изображения в этой ячейке. – snahl

+0

Лучшей будет ваша функция, которая работает на одном листе для пары ячеек. – snahl

+0

Я получил его как скрипт для ВСЕХ фигур в листе Excel. 'Sub ConvertHLShapes() Dim л.с Как форма Dim STEMP As String Для каждого SHP В ActiveSheet.Shapes STEMP = "" On Error Resume Next«идти к следующей форме, если нет гиперссылка STEMP = shp.Hyperlink. Адрес On Error GoTo 0 Если STEMP <> "" Тогда shp.TopLeftCell.Value = STEMP shp.Delete End If Next End Sub' – snahl

Смежные вопросы