Нарушение связанных с гиперссылкой ошибок в VBA

У меня есть код ниже, который откроет файлы с диапазоном ячеек и обновит и сохранит рабочую книгу. Но мне интересно, как обрабатывать ошибку времени выполнения, например, если есть орфографическая ошибка, которая была помещена в значения ячейки. я использовал функцию Application.Screenupdating, но все же я получаю всплывающее сообщение для связанных с Hyperlink ошибок. Любая помощь будет высоко оценена.

Sub openfilesandsave() On Error GoTo WriteLog 'proceed to error log file and print the error information. On Error Resume Next 'procedd to next step if any error occurs For i = 2 To 4 Application.ScreenUpdating = False On Error GoTo WriteLog With Workbooks.Open(Range("B" & i)) 'Open the workbook in the cell range of i in B column strFileFullName = ActiveWorkbook.FullName ' stores the current opened link into strFileFullName variable Open "\Documents\Error Log.txt" For Append As #1 Print #1, strFileFullName ' Printing strFileFullName values into log file. Close #1 .RefreshAll 'Refresh current workbook .Save 'Save the current opened workbook .Saved = True 'Check if the current workbook saved or not and print the result into log file If ActiveWorkbook.Saved = False Then Open "\\Documents\Error Log.txt" For Append As #1 Print #1, " File Not Saved" Print #1, "----------------------------------------------------" Close #1 Else Open "\\Documents\Error Log.txt" For Append As #1 Print #1, "File Saved Successfully" Print #1, "----------------------------------------------------" Close #1 End If .Close 0 ' Close current workbook End With WriteLog: 'Open the errorlog file and print the error discription Open "\\Documents\Error Log.txt" For Append As #1 Print #1, Err.Description & Format$(Now(), " mm/dd/yy hh:mm:ss") Print #1, "----------------------------------------------------" Close #1 Next Application.ScreenUpdating = True End End Sub 

Я смог воспроизвести вашу ошибку, но не могу ее объяснить. Но я подозреваю, что это связано с нетрадиционной обработкой ошибок.

С вашим кодом также возникает ряд других проблем, которые станут очевидными после решения первой проблемы.

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

Попробуй это

 Option Explicit Sub OpenFilesAndSave() Dim i As Long '<-- Declare all variables Dim strFileFullName As String Dim wb As Workbook Dim strErrorLog As String strErrorLog = "C:\Users\Chris\Documents\Scratch\Error Log.txt" For i = 2 To 4 Application.ScreenUpdating = False strFileFullName = Range("B" & i) '<-- Move to here. stores the current opened link into strFileFullName variable Set wb = Nothing On Error Resume Next ' <-- use a Try/Catch style error handler Set wb = Workbooks.Open(strFileFullName) ' <-- set reference to opend workbook If wb Is Nothing Then WriteLog strErrorLog, Err.Description & Format(Now(), " mm/dd/yy hh:mm:ss"), True On Error GoTo 0 Else On Error GoTo 0 With wb 'Open the workbook in the cell range of i in B column 'strFileFullName = .FullName ' <-- moved 'Open "\Documents\Error Log.txt" For Append As #1 '<-- need to use \\Documents... WriteLog strErrorLog, strFileFullName, False .RefreshAll 'Refresh current workbook .Save 'Save the current opened workbook '.Saved = True '<-- Why? will be true if save succeeded. 'Check if the current workbook saved or not and print the result into log file ' <-- use with reference If .Saved = False Then WriteLog strErrorLog, "File Not Saved" Else WriteLog strErrorLog, "File Saved Successfully" End If .Close SaveChanges:=False ' Close current workbook End With End If Next Application.ScreenUpdating = True ' End '<-- don't do this. End Sub Private Sub WriteLog(LogFile As String, Message As String, Optional Divider As Boolean = True) Open LogFile For Append As #1 Print #1, Message If Divider Then Print #1, "----------------------------------------------------" End If Close #1 End Sub 
Interesting Posts

Как скопировать диапазон ячеек в таблицу из Excel в PowerPoint – VBA

Как автоматически применить путь к файлу из ячейки в VBA?

Excel Loop через рабочий лист для создания новых строк для родительского элемента

Название категории в графиках Excel, используя VBA без использования каких-либо ячеек

Напишите несколько строк в одной ячейке

VBA «Ошибка компиляции: аргумент не факультативный»

Как заменить значения менее 10 в нескольких столбцах на «<10»?

как найти максимальные ряды листа книги – vba

Заставить Excel исключить UID в строке соединения в ODBC Data Connection?

Excel векторизованная формула

В Qtp при печати значения в локальном столбце листа из глобального листа только последнее значение строки получает priint

Как распечатать таблицу на нескольких страницах в excel

Использование OleDB для получения данных Excel Sheet, но оно «случайно» не считывает данные ячейки строки

Сумма всей колонки в excel, за исключением определенных строк

Как добавить изображение в ячейку таблицы с помощью драгоценного камня Axlsx?

Давайте будем гением компьютера.