Удаление неверных ярлыков. Или проверка на верность ярлыка книги перед открытием - VBA

Узнай цену своей работы

Формулировка задачи:

Здравствуйте! надеюсь на вашу помощь. - Имею макрос, который шарит по указанным папкам(плюс вложенные папки), открывает найденные заранее созданные мной ярлыки на нужные книги, выполняет в этих книгах другой макрос, закрывает книгу с сохранением. Цикл повторяется пока все файлы не будут запущены и обработаны макросом. - При выполнении макроса при сохранении, имя книги меняется(макросом), и ярлыки становятся нерабочими. - Бывает такое, что мне нужно обработать 1000 файлов. И вдруг вырубают свет или ещё какой то сбой происходит. А часть книг уже обработалась, т.е. часть ярлыков уже с нерабочими ссылками, т.к. изменилось название фала. И заново делать ярлыки в ручную постоянно это напряжно. - Я хотел так, что бы главный макрос при загрузке проверял ярлыки на верность тогда загружал. Или при загрузке книги с ярлыка при возникновении ошибки, автоматически загружал бы другой, закрывая все окна об ошибке. Например если через функцию "открыть" в excel открыть такой неверный ярлык, то всплывёт окошко с сообщением о том, что файл не найден. Вот и мне нужно . что бы макрос при всплытии такого окошка продолжал по порядку загружать следующие ярлыки, автоматически закрывая эти окошечки, или вообще что бы эти окошки не появлялись. Вариант2: - Что бы предотвратить наличие неверных ярлыков, можно было сделать так, что бы после выполнения макроса с конкретной книгой, он удалял ярлык с которого загрузил эту книгу. PS. ещё раз уточню! Макрос шарит по папкам и ищет файлы, загружает их и делает операции другими макросами....и т.д. Я в свою очередь, что бы каждый раз не менять путь поиска файлов для макроса, сделал путь постоянным, а туда уже скидываю даже не сами файлы, а ЯРЛЫКИ!(которые создаю отдельно) Вот мой макрос:

Решение задачи: «Удаление неверных ярлыков. Или проверка на верность ярлыка книги перед открытием»

textual
Листинг программы
Private Sub Testv3()
    Dim objFSO As Object, objWSh As Object
    Dim objFolder As Object, objFile As Object, iFileName$
    
    Set objFSO = CreateObject("Scripting.FileSystemObject")
    Set objWSh = CreateObject("WScript.Shell")
    
    Set objFolder = objFSO.GetFolder("C:\Папка\1")
    For Each objFolder In objFolder.SubFolders
        For Each objFile In objFolder.Files
            iFileName = LCase(objFile.Path)
            If iFileName Like "*.lnk" Then 'ИЛИ If objFSO.GetExtensionName(objFile)
               iFileName = objWSh.CreateShortCut(iFileName).TargetPath
               If objFSO.FileExists(iFileName) = True Then 'ИЛИ If Dir()
                  Macros1 iFileName
               Else
                  'objFile.Delete 'ИЛИ Kill objFile.Path
               End If
            Else
               Macros1 iFileName
            End If
        Next
    Next
End Sub
 
Public Sub Macros1(iFileName$)
    With Workbooks.Open(iFileName, 0)
         '///
         .Close True 'False (если нужно закрыть без сохранения)
    End With
End Sub

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

5   голосов , оценка 4 из 5
Похожие ответы