1

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

\\xxx.xxx.xxx.xxx\ папка \ image.jpg

Я хочу проверить правильность всех URL-адресов или путей к файлам.

Если вы ошиблись или не указали на реальный файл (или адрес неправильный), выделите его красным (или просто сигнализируйте).

Надеюсь, это имеет смысл. Я знаю, что могу сделать это с помощью макросов или VBA, но я не знаю синтаксис.

Спасибо!

2 ответа2

3

Вы можете использовать UDF (пользовательскую функцию) для проверки правильности пути к файлу.

В Excel нажмите ALT+F11, чтобы включить редактор Visual Basic (VBE).

Щелкните правой кнопкой мыши в любом месте VBA Project Explorer »Вставить» Модуль.

Скопируйте и вставьте приведенный ниже код

Function FileExist(path As String) As Boolean
    If Dir(path) <> vbNullString Then FileExist = True
End Function

Теперь вернитесь к вашему представлению электронной таблицы. Зайдите в любую ячейку и введите:

=FileExist(A1)

где A1 - ссылка на ячейку, которая содержит путь к файлу

например:

Кроме того, вы можете использовать условное форматирование или VBA, чтобы выделить ячейки в зависимости от значения.

0

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

Module1 (для гиперссылок)

    Function HLink(rng As Range) As String
    'extract URL from hyperlink
     'posted by C.F. Stotch! - shoutout to Richard K!
      If rng(1).Hyperlinks.Count Then HLink = rng.Hyperlinks(1).Address
    End Function

Модуль 2 (для проверки каталога)

     Function FileOrDirExists(PathName As String) As Boolean 'used to test filepaths of commmand button   links to see if they work - change their color if not working
  'Macro Purpose: Function returns TRUE if the specified file
   Dim iTemp As Integer

 'Ignore errors to allow for error evaluation
On Error Resume Next
iTemp = GetAttr(PathName)

 'Check if error exists and set response appropriately
Select Case Err.Number
Case Is = 0
    FileOrDirExists = True
Case Else
    FileOrDirExists = False
End Select

 'Resume error checking
   On Error GoTo 0
    End Function

'' '' 'И НИЖЕ, ЧТО ВЫ ВСТАВИЛИ В ЛИСТ, И АКТИВИРОВАЛИ ЕГО, КАК ВЫ ЖЕЛАЕТЕ, через командную кнопку или как хотите. У меня это автоматически запускается, когда рабочий лист активирован :) Ура!

     Private Sub TestFilesExist()
   Dim xCheck As Integer
  'starting in the 3rd row....
 xCheck = 3
   On Error GoTo 0
    'Debug.Print Range("A" & xCheck).Value
    While xCheck < 36

       'xPather - checks if Z1 is a good path and then either highlights the actual cell in A column red if bad, or no fill if good.
      Dim sPath As String
      Dim XPather As String

'need a cell to put the hyperlink addresses into during the loop check as was not able to find the hyperlink address straight out of the cell containing the hyperlink. Extraction if you will. :)

ThisWorkbook.Sheets(1).Range("Z1").Value = "=HLink(A" & xCheck & ")"
XPather = ThisWorkbook.Sheets(1).Range("Z1").Value

Debug.Print XPather

 'Tests if directory or file exists
If FileOrDirExists(XPather) = False Then
    Range("A" & xCheck).Interior.ColorIndex = 3
Else
    Range("A" & xCheck).Interior.ColorIndex = xlNone
End If

    xCheck = xCheck + 1
    Wend

    End Sub

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .