Значение гиперссылок

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
gigamaxx
Начинающий
Начинающий
 
Сообщения: 8
Зарегистрирован: 17.10.2007 (Ср) 23:06

Значение гиперссылок

Сообщение gigamaxx » 02.04.2012 (Пн) 21:00

пытаюсь получить значение гиперссылок в листе excel. Вобщем делаю (точнее пытаюсь сделать) это так:
Код: Выделить всё
Dim objExcel As Object
Dim objBook As Object
Dim objSheet As Object
Dim c_rng() As Variant

Set objExcel = CreateObject("Excel.Application")
Set objBook = objExcel.Workbooks.Open(fil)
Set objSheet = objBook.Worksheets(1)

c_rng = objSheet.Range("C1:С100").Value ' в этом диапазоне есть гиперссылки

В результате получаю только текст гиперссылок.

Строка типа
Код: Выделить всё
c_rng = objSheet.Range("C1:С100").Hyperlinks(1).Address
вызывает ошибку.
Буду благодарен за любую подсказку...

Template
Обычный пользователь
Обычный пользователь
 
Сообщения: 73
Зарегистрирован: 09.09.2006 (Сб) 18:03

Re: Значение гиперссылок

Сообщение Template » 03.04.2012 (Вт) 22:15

Код: Выделить всё
Dim objExcel As Object
Dim objBook  As Object
Dim objSheet As Object
Dim objRange As Object
Dim objHyperlink As Object
Dim strFileName  As String

strFileName = "C:\Мои документы\Моя рабочая книга.xls"

If Len(Dir(strFileName)) Then

   Set objExcel = CreateObject("Excel.Application")
   Set objBook = objExcel.Workbooks.Open(strFileName, 0)
   Set objSheet = objBook.Worksheets(1)
   Set objRange = objSheet.Range("C1:C100")
   
   For Each objHyperlink In objRange.Hyperlinks
       With objHyperlink 'типа, для примера
            MsgBox "Name: " & .Name
            MsgBox "Address: " & .Address
            MsgBox "SubAddress: " & .SubAddress
            MsgBox "TextToDisplay: " & .TextToDisplay
            MsgBox "Range_Value: " & .Range.Value
       End With
   Next
Else
   MsgBox "Чаво-то не видать нашей книжки :)"
End If

gigamaxx
Начинающий
Начинающий
 
Сообщения: 8
Зарегистрирован: 17.10.2007 (Ср) 23:06

Re: Значение гиперссылок

Сообщение gigamaxx » 03.04.2012 (Вт) 23:45

Template
Спасибо! Попорбую и отпишусь!

Template
Обычный пользователь
Обычный пользователь
 
Сообщения: 73
Зарегистрирован: 09.09.2006 (Сб) 18:03

Re: Значение гиперссылок

Сообщение Template » 04.04.2012 (Ср) 13:23

gigamaxx, Дык, перед тем как постить я проверил - работает, впрочем, ежели гиперссылки созданы с помощью функции ГИПЕРССЫЛКА() , то, видимо, придется парсить формулу.

gigamaxx
Начинающий
Начинающий
 
Сообщения: 8
Зарегистрирован: 17.10.2007 (Ср) 23:06

Re: Значение гиперссылок

Сообщение gigamaxx » 04.04.2012 (Ср) 13:41

Template
Значит буду парсить, В любом случае спасибо. Ваш код буду использовать также, в зависимости от того, каким образом создана гиперссылка.

(В работе с Excel из VB опыта практически нет, так что приходится задавать такие простые (наверное) вопросы).

Template
Обычный пользователь
Обычный пользователь
 
Сообщения: 73
Зарегистрирован: 09.09.2006 (Сб) 18:03

Re: Значение гиперссылок

Сообщение Template » 04.04.2012 (Ср) 13:51

gigamaxx, Увы, но не всегда можно добраться до адреса гиперссылки, созданной с помощью функции ГИПЕРССЫЛКА(), к примеру, ежели у ячейки с такой формулой, установлена опция "Скрыть формулу" , а лист защищен, то получить текст формулы не представляется возможным ...

=ГИПЕРССЫЛКА("http://bbs.vbstreets.ru/viewtopic.php?f=1&t=43900";"Значение гиперссылок")

gigamaxx
Начинающий
Начинающий
 
Сообщения: 8
Зарегистрирован: 17.10.2007 (Ср) 23:06

Re: Значение гиперссылок

Сообщение gigamaxx » 04.04.2012 (Ср) 14:08

Template
Такой вариант я не предусмотрел, но не думаю что книги, с которыми придётся работать, будут защищены.

Template
Обычный пользователь
Обычный пользователь
 
Сообщения: 73
Зарегистрирован: 09.09.2006 (Сб) 18:03

Re: Значение гиперссылок

Сообщение Template » 04.04.2012 (Ср) 14:16

gigamaxx, Небольшое уточнение, если защищена книга (т.е. установлен пароль на открытие), то ничего страшного не будет, за иcключением необходимости указать этот пароль при программном открытии книги, а вот если защищен рабочий лист (в Вашем примере это objSheet), то поможет только отсутствие второго аргумента у функции ГИПЕРССЫЛКА()

В общем, если у Вас есть возможность избежать создания гиперссылок с помощью функции, то рекомендую ей воспользоваться.

gigamaxx
Начинающий
Начинающий
 
Сообщения: 8
Зарегистрирован: 17.10.2007 (Ср) 23:06

Re: Значение гиперссылок

Сообщение gigamaxx » 04.04.2012 (Ср) 14:58

Template писал(а):gigamaxx, Небольшое уточнение, если защищена книга (т.е. установлен пароль на открытие), то ничего страшного не будет, за иcключением необходимости указать этот пароль при программном открытии книги, а вот если защищен рабочий лист (в Вашем примере это objSheet), то поможет только отсутствие второго аргумента у функции ГИПЕРССЫЛКА()

Я Вас понял, просто неправильно выразился :) . Тем не менее, objSheet в моём случае защищен скорее всего не будет (с большой вероятностью).
Насчет избегания создания гиперссылок при помощи формул - так их не я создаю, к сожалению... (но принял к сведению на будущее).


Вернуться в Visual Basic 1–6

Кто сейчас на конференции

Сейчас этот форум просматривают: Google-бот и гости: 21

    TopList