Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Excel
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 31.08.2009, 11:40   #1
stream71
 
Регистрация: 31.08.2009
Сообщений: 6
По умолчанию Подсветка работающих гиперссылок

Уважаемые специалисты, подскажите,

мне необходимо на листе Excel 2003 проверить все гиперссылки на прикрепленные файлы и подсветить красным фоном те из них, которые не открываются по причине отсутствия файла или неправильно указанного пути к файлу.
Заранее премного благодарен.
Устроит решение как VBA так и через условное форматирование.
stream71 вне форума Ответить с цитированием
Старый 31.08.2009, 12:00   #2
The_Prist
Участник клуба
 
Аватар для The_Prist
 
Регистрация: 17.07.2009
Сообщений: 1,088
По умолчанию

Цитата:
Сообщение от stream71 Посмотреть сообщение
проверить все гиперссылки на прикрепленные файлы и подсветить красным фоном те из них, которые не открываются по причине отсутствия файла или неправильно указанного пути к файлу.
Проверить можно, но надо знать каким образом у Вас записана гиперссылка. У Вас адрес гиперссылки совпадает со значением гиперссылки в ячейке? Набросайте пару строк в примере Excel.
WebMoney - R298726502453; Яндекс.Деньги - 41001332272872
www.excel-vba.ru
The_Prist вне форума Ответить с цитированием
Старый 31.08.2009, 12:18   #3
stream71
 
Регистрация: 31.08.2009
Сообщений: 6
По умолчанию Ответ

Гиперлинк к файлам D у меня рассчитывается исходя из значений 2х ячеек A,B.
Вложения
Тип файла: zip Book2.zip (1.7 Кб, 33 просмотров)
stream71 вне форума Ответить с цитированием
Старый 31.08.2009, 12:40   #4
The_Prist
Участник клуба
 
Аватар для The_Prist
 
Регистрация: 17.07.2009
Сообщений: 1,088
По умолчанию

Смотрите.Так?
Вложения
Тип файла: rar Book2.rar (8.3 Кб, 56 просмотров)
WebMoney - R298726502453; Яндекс.Деньги - 41001332272872
www.excel-vba.ru
The_Prist вне форума Ответить с цитированием
Старый 31.08.2009, 13:20   #5
stream71
 
Регистрация: 31.08.2009
Сообщений: 6
По умолчанию Ответ №2

Не совсем :-( Макрос подсветил все непустые ячейки.
Файл, к которым указывает гиперссылка находится в папке August_09.
Гиперссылки проверять нужно в столбцах 7 и 15.
Вложения
Тип файла: zip Test2.zip (252.7 Кб, 21 просмотров)
stream71 вне форума Ответить с цитированием
Старый 31.08.2009, 13:54   #6
The_Prist
Участник клуба
 
Аватар для The_Prist
 
Регистрация: 17.07.2009
Сообщений: 1,088
По умолчанию

Цитата:
Сообщение от stream71 Посмотреть сообщение
Гиперссылки проверять нужно в столбцах 7 и 15.
Я ориентировался на выложенный Вами пример. Сравните выложенный Вами сначала файл и последний. Кажись они немного разные. Вторая попытка.
Вложения
Тип файла: rar Book6.rar (160.9 Кб, 40 просмотров)
WebMoney - R298726502453; Яндекс.Деньги - 41001332272872
www.excel-vba.ru
The_Prist вне форума Ответить с цитированием
Старый 31.08.2009, 15:40   #7
stream71
 
Регистрация: 31.08.2009
Сообщений: 6
По умолчанию Пока не работает макрос

На мой взгляд, макрос не работает как бы мне хотелось.

Option Explicit
Sub Check_HiperLincks()
Dim rCell As Range

For Each rCell In Union(Range(Cells(1, 7), Cells(Cells(Rows.Count, 7).End(xlUp).Row, 7)), Range(Cells(1, 15), Cells(Cells(Rows.Count, 15).End(xlUp).Row, 15)))
If IsError(rCell) Then
rCell.Interior.Color = vbRed
ElseIf rCell <> "" Then
If Dir(rCell) = "" Then rCell.Interior.Color = vbRed
End If
Next rCell
End Sub

По-прежнему, подсвечиваются красным фоном все ячейки, независимо от того, открывается ли по указанной гиперссылке файл или нет.

Внутри моей формулы по расчету гиперссылки не может быть ошибки, так как там простое "склеивание" текстовой информации. С функцией ISERROR я пробовал решить задачу условным форматированием, но безуспешно.
Нужна какая-то функция, которая бы проверяла на ошибку "Cannot open the specified file" (см приложенный снимок) при попытке открытия файла по гиперссылке.
Очень на Вас надеюсь!
Изображения
Тип файла: jpg CantOpenFile.JPG (9.3 Кб, 224 просмотров)
stream71 вне форума Ответить с цитированием
Старый 01.09.2009, 17:52   #8
stream71
 
Регистрация: 31.08.2009
Сообщений: 6
По умолчанию Помогите довести дело до конца

Нашел в поиске аналогичный запрос : http://forum.developing.ru/archive/i...hp/t-4705.html

Но не могу разобраться как решить мой вариант.

Помогите довести первоначальную задачу до решению.
Спасибо заранее за помощь.
stream71 вне форума Ответить с цитированием
Старый 25.01.2010, 14:17   #9
AChrist
Пользователь
 
Регистрация: 29.11.2008
Сообщений: 31
По умолчанию

Добры.
У меня такая же задача появилась, что надо проверить на работоспособность гиперссылок.

Во общем написал следующее:

Код:
Public Function FileFolderExists(strFullPath As String) As Boolean

    If Dir(strFullPath) <> vbNullString Then FileFolderExists = True Else FileFolderExists = False
    
End Function

Public Sub TestFileExistence()
rr = 15 '  ставим в какой столбец записывать результат
For Each cell In Range([A1], Range("A" & Rows.Count).End(xlUp)).Cells

    If FileFolderExists(cell.Hyperlinks(1).Address) Then
       cell(1, rr) = 1 ' true
    Else
        cell(1, rr) = 0 ' false
    End If
Next cell

End Sub
Однако не работает как надо. Возвращает false даже на правильный линк.

Код:
If FileFolderExists(cell.Hyperlinks(1).SubAddress) Then
А в этом случае на все true. Так как путь есть какой то, а вот файл на наличие не проверяет...

Может я не в ту сторону пошел ? Помогите пожалуйста разобраться.

ЗЫ: Гиперсссылки на файлы все на компе и путь с название ссылки не совпадает.
И заметил, что если путь будет на D:\ где и файл то проверяет с Hyperlinks(1).SubAddress, а вот если будет на C:\ то работает с просто Hyperlinks(1).Address

Вообщем я окончательно запутался и не могу понять, что к чему...
AChrist вне форума Ответить с цитированием
Старый 25.01.2010, 14:32   #10
EducatedFool
Программист VBA
СуперМодератор
 
Аватар для EducatedFool
 
Регистрация: 13.07.2008
Сообщений: 6,856
По умолчанию

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

Цитата:
If FileFolderExists(cell.Hyperlinks(1) .SubAddress) Then

А в этом случае на все true.
Это происходит потому, что SubAddress="", а функция Dir("") возвращает непустое значение.


(добавлено)
Проблема в том, что после сохранения файла абсолютные гиперссылки
(вида C:\Documents and Settings\August_09\images.jpg )
автоматически преобразуются в относительные
(вида August_09/images.jpg)

Я в подобных случаях использую такой код:

Код:
thisworkbookpath = Replace(ThisWorkbook.FullName, ThisWorkbook.Name, "")

HL_photo = cell.Hyperlinks(1).Address
If Dir(HL_photo) = "" Then HL_photo = thisworkbookpath & Replace(HL_photo, "/", "\")
If Dir(HL_photo) = "" Then MsgBox "Файл отсутствует"

В Вашем случае код быдет выглядеть так:
Код:
Public Function FileFolderExists(ByRef cell As Range) As Boolean
    On Error Resume Next
    thisworkbookpath = Replace(ThisWorkbook.FullName, ThisWorkbook.Name, "")

    HL = cell.Hyperlinks(1).Address
    If Dir(HL) = "" And HL <> "" Then HL = thisworkbookpath & Replace(HL, "/", "\")
    FileFolderExists = Dir(HL) = ""
End Function

Public Sub TestFileExistence()
    rr = 15    '  ставим в какой столбец записывать результат
    For Each cell In Range([A1], Range("A" & Rows.Count).End(xlUp)).Cells
        cell(1, rr) = Val(FileFolderExists(cell))
    Next cell
End Sub

Последний раз редактировалось EducatedFool; 25.01.2010 в 14:45.
EducatedFool вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
несколько одновременно работающих копий программы - ? Evgenii Общие вопросы Delphi 3 06.07.2009 09:38
объединение гиперссылок petrov_ja Microsoft Office Excel 4 03.04.2009 20:22
несколько гиперссылок в ячейке redfield Microsoft Office Excel 5 05.12.2008 13:06
Создание гиперссылок в Word Hypermaster Общие вопросы Delphi 1 06.10.2008 11:39
удаление гиперссылок Gambler Microsoft Office Word 0 30.10.2006 23:23