Ошибка выполнения макроса как исправить

Excel для Microsoft 365 Excel для Microsoft 365 для Mac Excel 2021 Excel 2021 для Mac Excel 2019 Excel 2019 для Mac Excel 2016 Excel 2016 для Mac Excel 2013 Excel 2010 Excel 2007 Excel 2007 для разработчиков Excel 2010 для разработчиков Excel 2013 для разработчиков Еще…Меньше

Если в выполняемом макросе произошел сбой, отображается сообщение об ошибке макроса.

В этом случае используемый метод не подходит для указанного объекта по одной из приведенных ниже причин.

  • Аргумент содержит недопустимое значение. Как правило, причина ошибок такого рода — попытка обратиться к несуществующему объекту, например Книга(5), когда открыты только три книги.

  • Указанный метод нельзя использовать в данном контексте. Например, некоторые методы объекта Range требуют, чтобы диапазон содержал данные. Если в диапазоне их нет, метод выдает ошибку.

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


  • (Эта проблема не относится к Mac)
    Метод или свойство нельзя использовать с текущими параметрами безопасности. Например, свойства и методы объекта VBE для работы с кодом на языке Visual Basic для приложений (VBA), хранящимся в документах Microsoft Office, по умолчанию недоступны.

    Чтобы включить доверенный доступ к проектам Visual Basic, выполните указанные ниже действия.

    1. В включить вкладку «Разработчик» на ленте. Дополнительные сведения см. в этой вкладке.

    2. На вкладке Разработчик в группе Код выберите элемент Безопасность макросов.

      Группа "Код" на вкладке "Разработчик"

    3. В разделе Параметры макросов для разработчика установите флажок Доверять доступ к объектной модели проектов VBA.

      Чтобы получить дополнительные сведения об использовании метода, выполните поиск по его имени в справке Visual Basic.

Нужна дополнительная помощь?

Нужны дополнительные параметры?

Изучите преимущества подписки, просмотрите учебные курсы, узнайте, как защитить свое устройство и т. д.

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

На чтение 25 мин. Просмотров 16.5k.

VBA Error Handling

Эта статья содержит полное руководство по обработке ошибок VBA. Если вы ищете краткое резюме, посмотрите таблицу быстрого руководства в первом разделе.

Если вы ищете конкретную тему по обработке ошибок VBA, ознакомьтесь с приведенным ниже содержанием.

Если вы новичок в VBA, то вы можете прочитать пост от начала до конца, так как он выложен в логическом порядке.

Содержание

  1. Краткое руководство по обработке ошибок
  2. Введение
  3. Ошибки VBA
  4. Заявление об ошибке
  5. Err объект
  6. Логирование
  7. Другие элементы, связанные с ошибками
  8. Простая стратегия обработки ошибок
  9. Полная стратегия обработки ошибок
  10. Обработка ошибок в двух словах

Краткое руководство по обработке ошибок

Пункт Описание
On Error Goto 0 При возникновении ошибки код останавливается и отображает
ошибку.
On Error Resume Next Игнорирует ошибку и
продолжает.
On Error Goto [Label] Переход к определенной метке при возникновении ошибки.
Это позволяет нам справиться
с ошибкой.
Err Object При возникновении ошибки
информация об ошибке
сохраняется здесь.
Err.Number Номер ошибки.
(Полезно, только если вам
нужно проверить, произошла ли конкретная ошибка.)
Err.Description Содержит текст ошибки.
Err.Source Вы можете заполнить это, когда используете Err.Raise.
Err.Raise Функция, которая позволяет
генерировать вашу собственную ошибку.
Error Function Возвращает текст ошибки из
номера ошибки.
Вышло из употребления.
Error Statement Имитирует ошибку. Вместо этого используйте Err.Raise.

Введение

Обработка ошибок относится к коду, который написан для обработки ошибок, возникающих во время работы вашего приложения. Эти ошибки обычно вызваны чем-то вне вашего контроля, например отсутствующим файлом, недоступностью базы данных, недействительными данными и т.д.

Если мы считаем, что ошибка может произойти в какой-то
момент, рекомендуется написать специальный код для обработки ошибки, если она
возникнет, и устранить ее.

Для всех остальных ошибок мы используем общий код для их
устранения. Это где оператор обработки ошибок VBA вступает в игру. Они
позволяют нашему приложению корректно обрабатывать любые ошибки, которые мы не
ожидали.

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

VBA Error Handling

Ошибки VBA

В VBA есть три типа ошибок

  1. Синтаксис
  2. Компиляция
  3. Время выполнения

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

Синтаксические ошибки

Если вы использовали VBA в течение какого-то времени, вы
увидите синтаксическую ошибку. Когда вы набираете строку и нажимаете return,
VBA оценивает синтаксис и, если он неверен, выдает сообщение об ошибке.

Например, если вы введете If и забудете ключевое слово Then,
VBA отобразит следующее сообщение об ошибке.

VBA Error Handling

Некоторые примеры синтаксических ошибок

' then отсутствует
If a > b

' не хватает = после i
For i 2 To 7

' отсутствует правая скобка
b = left("АБВГ",1

Синтаксические ошибки относятся только к одной строке. Они
возникают, когда синтаксис одной строки неверен.

Примечание. Диалоговое окно «Ошибка синтаксиса» можно отключить, выбрав «Сервис» -> «Параметры» и отметив «Автосинтаксическая проверка». Строка по-прежнему будет отображаться красным цветом в случае ошибки, но диалоговое окно не появится.

Ошибки компиляции

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

Примеры ошибок компиляции:

  • Оператор If без соответствующего оператора End If
  • For без Next
  •  Select без End Select
  • Вызов Sub или Function, которые не существуют
  • Вызов Sub или Function с неверными параметрами
  • Присвоение Sub или Function того же имени, что и для модуля
  • Переменные не объявлены (Option Explicit должен присутствовать в верхней части модуля)

На следующем снимке экрана показана ошибка компиляции,
которая возникает, когда цикл For не имеет соответствующего оператора Next.

VBA Error Handling

Использование Debug-> Compile

Чтобы найти ошибки компиляции, мы используем Debug->
Compile VBA Project из меню Visual Basic.

Когда вы выбираете Debug-> Compile, VBA отображает первую
обнаруженную ошибку.

Когда эта ошибка исправлена, вы можете снова запустить
Compile, и VBA найдет следующую ошибку.

Debug-> Compile также будет включать синтаксические
ошибки в поиск, что очень полезно.

Если ошибок не осталось и вы запускаете Debug-> Compile,
может показаться, что ничего не произошло. Однако «Компиляция» будет недоступна
в меню «Отладка». Это означает, что ваше приложение не имеет ошибок компиляции
в текущий момент.

Debug->Compile Error Summary

Debug-> Compile находит ошибки компиляции (проекта).

Он также найдет синтаксические ошибки.

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

Если нет ошибок компиляции, оставленная опция Компиляция
будет отображаться серым цветом в меню.

Debug-> Compile Usage

Вы должны всегда использовать Debug-> Compile, прежде чем
запускать свой код. Это гарантирует, что ваш код не будет иметь ошибок
компиляции при запуске.

Если вы не запускаете Debug-> Compile, то VBA может
обнаружить ошибки компиляции при запуске. Их не следует путать с ошибками
времени выполнения.

Ошибки во время выполнения

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

VBA Error Handling

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

Другие примеры ошибок времени выполнения

  • база данных недоступна
  • пользователь вводит неверные данные
  • ячейка, содержащая текст вместо числа

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

Ожидаемые и неожиданные ошибки

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

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

Sub OtkritFail()
    
    Dim sFile As String
    sFile = "C:ДокументыОтчет.xlsx"
    
    ' Используйте Dir, чтобы проверить, существует ли файл
    If Dir(sFile) = "" Then
        ' если файл не существует, отобразить сообщение
        MsgBox "Файл не найден" & sFile
        Exit Sub
    End If
    
    ' Код достигнет только если файл существует
    Workbooks.Open sFile
    
End Sub

Когда мы думаем, что в какой-то момент может произойти
ошибка, рекомендуется добавить код для обработки ситуации. Мы обычно называем
эти ошибки ожидаемыми.

Если у нас нет специального кода для обработки ошибки, это
считается неожиданной ошибкой. Мы используем операторы обработки ошибок VBA для
обработки непредвиденных ошибок.

Ошибки времени выполнения, которые не являются ошибками VBA

Прежде чем мы рассмотрим VBA Handling, мы должны упомянуть
один тип ошибок. Некоторые ошибки во время выполнения не рассматриваются как
ошибки VBA, а только пользователем.

Позвольте мне объяснить это на примере. Представьте, что у
вас есть приложение, которое требует, чтобы вы добавили значения в переменные a
и b

Допустим, вы по ошибке используете звездочку вместо знака
плюс

Это не ошибка VBA. Ваш синтаксис кода является совершенно
законным. Однако, с вашей точки зрения, это ошибка.

Эти ошибки не могут быть обработаны с помощью обработки ошибок, поскольку они, очевидно, не будут генерировать никаких ошибок. Вы можете справиться с этими ошибками, используя Unit Testing and Assertions.

Заявление об ошибке

Как мы видели, есть два способа обработки ошибок во время
выполнения

  1. Ожидаемые ошибки — напишите конкретный код для
    их обработки.
  2. Неожиданные ошибки — используйте операторы
    обработки ошибок VBA для их обработки.

Оператор VBA On Error используется для обработки ошибок.
Этот оператор выполняет некоторые действия при возникновении ошибки во время
выполнения.

Есть четыре различных способа использовать это утверждение

  1. On Error Goto 0 — код останавливается на строке с ошибкой и отображает сообщение.
  2. On Error Resume Next — код перемещается на следующую строку. Сообщение об ошибке не отображается.
  3. On Error Goto [label] — код перемещается на определенную строку или метку. Сообщение об ошибке не отображается. Это тот, который мы используем для обработки ошибок.
  4. On Error Goto -1 — очищает текущую ошибку.

Давайте посмотрим на каждое из этих утверждений по очереди.

On Error Goto 0

Это поведение по умолчанию VBA. Другими словами, если вы не
используете On Error, это поведение вы увидите.

При возникновении ошибки VBA останавливается на строке с
ошибкой и отображает сообщение об ошибке. Приложение требует вмешательства
пользователя с кодом, прежде чем оно сможет продолжить. Это может быть
исправление ошибки или перезапуск приложения. В этом случае обработка ошибок не
происходит.

Давайте посмотрим на пример. В следующем коде мы не
использовали строку On Error, поэтому VBA будет использовать поведение On Error
Goto 0 по умолчанию.

Sub IspDefault()

    Dim x As Long, y As Long
    
    x = 6
    y = 6 / 0
    x = 7

End Sub

Вторая строка присваивания приводит к ошибке деления на ноль. Когда мы запустим этот код, мы получим сообщение об ошибке, показанное на скриншоте ниже.

VBA Error Handling

Когда появляется ошибка, вы можете выбрать End или Debug

Если вы выберете Конец, то приложение просто остановится.

Если вы выберете Отладить, приложение остановится на строке
ошибки, как показано на скриншоте ниже.

VBA Error Handling

Это нормально, когда вы пишете код VBA, поскольку он
показывает вам точную строку с ошибкой.

Это поведение не подходит для приложения, которое вы
передаете пользователю. Эти ошибки выглядят непрофессионально и делают
приложение нестабильным.

Подобная ошибка, по сути, приводит к сбою приложения.
Пользователь не может продолжить работу без перезапуска приложения. Они могут
вообще не использовать его, пока вы не исправите для них ошибку.

Используя On Error Goto [label], мы можем дать пользователю
более контролируемое сообщение об ошибке. Это также предотвращает остановку
приложения. Мы можем заставить приложение работать предопределенным образом.

On Error Resume Next

Использование On Error Resume Next указывает VBA
игнорировать ошибку и продолжать работу.

Есть конкретные случаи, когда это полезно. Большую часть
времени вы должны избегать его использования.

Если мы добавим Resume Next к нашему примеру Sub, то VBA
проигнорирует ошибку деления на ноль

Sub UsingResumeNext()

    On Error Resume Next
    
    Dim x As Long, y As Long
    
    x = 6
    y = 6 / 0
    x = 7

End Sub

Это не очень хорошая идея, чтобы сделать это. Если вы
игнорируете ошибку, то поведение может быть непредсказуемым. Ошибка может
повлиять на приложение несколькими способами. Вы можете получить неверные
данные. Проблема в том, что вы не знаете, что что-то пошло не так, потому что
вы подавили ошибку.

Приведенный ниже код является примером использования Resume
Next.

Sub OtprSoobsch()

   On Error Resume Next
   
    ' Требуется ссылка:
    ' Библиотека объектов Microsoft Outlook 15.0
    Dim Outlook As Outlook.Application
    Set Outlook = New Outlook.Application

    If Outlook Is Nothing Then
        MsgBox " Не удается создать сеанс Microsoft Outlook." _
                   & " Письмо не будет отправлено."
        Exit Sub
    End If
    
End Sub

В этом коде мы проверяем, доступен ли Microsoft Outlook на компьютере. Все,
что мы хотим знать — это доступно или нет. Нас не интересует конкретная ошибка.

В приведенном выше коде мы продолжаем, если есть ошибка.
Затем в следующей строке мы проверяем значение переменной Outlook. Если произошла ошибка, тогда
значение этой переменной будет установлено равным Nothing.

Это пример того, когда Резюме может быть полезным. Дело в
том, что, хотя мы используем Resume,
мы все равно проверяем наличие ошибки. Подавляющее большинство времени вам не
нужно будет использовать Resume.

On Error Goto [label]

Вот как мы используем обработку ошибок в VBA. Это эквивалент функциональности Try and Catch, которую вы видите на
таких языках, как C # и
Java.

При возникновении ошибки вы отправляете ошибку на
определенный ярлык. Обычно это внизу саба.

Давайте применим это к подводной лодке, которую мы
использовали

Sub IspGotoLine()

    On Error Goto eh
    
    Dim x As Long, y As Long
    
    x = 6
    y = 6 / 0
    x = 7
    
Done:
    Exit Sub
eh:
    MsgBox "Произошла следующая ошибка: " & Err.Description
End Sub

Снимок экрана ниже показывает, что происходит при возникновении ошибки.

VBA Error Handling

VBA переходит на метку eh, потому что мы указали это в
строке «Перейти к ошибке».

Примечание 1: Метка, которую мы используем в операторе On… Goto, должна быть в текущей Sub / Function. Если нет, вы получите ошибку компиляции.

Примечание 2: Когда возникает ошибка при использовании On Error Goto [label], обработка ошибок возвращается к поведению по умолчанию, т.е. код остановится на строке с ошибкой и отобразит сообщение об ошибке. См. Следующий раздел для получения дополнительной информации об этом.

On Error Goto -1

Это утверждение отличается от других трех. Он используется
для очистки текущей ошибки, а не для настройки конкретного поведения.

При возникновении ошибки с помощью функции On Error Goto [label] поведение обработки ошибки возвращается к поведению по умолчанию, т.е. On Error Goto 0 . Это означает, что если произойдет другая ошибка, код остановится на текущей строке.

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

Посмотрите на код ниже. Первая ошибка приведет к переходу
кода на метку eh. Вторая ошибка остановится на строке с ошибкой 1034.

Sub DveOshibki()

    On Error Goto eh
        
    ' генерировать ошибку «Несоответствие типов»
    Error (13)

Done:
    Exit Sub
eh:
    ' генерировать «определенную приложением» ошибку
    Error (1034)
End Sub

Если мы добавим дальнейшую обработку ошибок, она не будет
работать, поскольку ловушка ошибок не была очищена.

В коде ниже мы добавили строку

после того как мы поймаем первую ошибку.

Это не имеет никакого эффекта, так как ошибка не была
очищена. Другими словами, код остановится на строке с ошибкой и отобразит
сообщение.

Sub DveOshibki()

    On Error Goto eh
        
    ' генерировать ошибку «Несоответствие типов»
    Error (13)

Done:
    Exit Sub
eh:
    On Error Goto eh_other
    ' генерировать «определенную приложением» ошибку
    Error (1034)
Exit Sub
eh_other:
    Debug.Print "ehother " & Err.Description
End Sub

Для устранения ошибки мы используем On Error Goto -1.
Думайте об этом как об установке ловушки для мыши. Когда ловушка сработает, вам
нужно установить ее снова.

В приведенном ниже коде мы добавляем эту строку, и вторая
ошибка теперь приведет к переходу кода на метку eh_other.

Sub DveOshibki()

    On Error Goto eh
        
    ' генерировать ошибку «Несоответствие типов»
    Error (13)

Done:
    Exit Sub
eh:
    ' явная ошибка
    On Error Goto -1
    
    On Error Goto eh_other
    ' генерировать «определенную приложением» ошибку
    Error (1034)
Exit Sub
eh_other:
    Debug.Print "ehother " & Err.Description
End Sub

Примечание 1. Вероятно, в редких случаях полезно использовать On Error Goto -1. Мне лично никогда не приходилось пользоваться этой линией. Помните, что как только вы выйдете из Sub, ошибка все равно будет очищена.

Примечание 2. у объекта Err есть член Clear. Использование Clear очищает текст и цифры в объекте Err, но НЕ сбрасывает ошибку.

Использование On Error

Как мы уже видели, VBA будет делать одну из трех вещей при возникновении ошибки:

  • Остановитесь и отобразите ошибку.
  • Игнорируйте ошибку и продолжайте.
  • Перейти к определенной строке.

VBA всегда будет настроен на одно из этих действий. Когда вы
используете On Error, VBA изменит ваше поведение и забудет о любом предыдущем.

В следующем подпункте VBA изменяет поведение ошибки каждый
раз, когда мы используем оператор On Error

Sub ErrorSostoyaniya()

    Dim x As Long
    
    ' Перейти на этикетке, если ошибка
    On Error Goto eh
    
    ' это проигнорирует ошибку в следующей строке
    On Error Resume Next
    x = 1 / 0
    
    ' это отобразит сообщение об ошибке в следующей строке
    On Error Goto 0
    x = 1 / 0
  
Done:  
   Exit Sub
eh:
    Debug.Print Err.Description
End Sub

Err объект

При возникновении ошибки вы можете просмотреть детали
ошибки, используя объект Err.

При возникновении ошибки времени выполнения VBA
автоматически заполняет объект Err деталями.

Приведенный ниже код выведет «Error Number: 13 Type
Mismatch», которое возникает, когда мы пытаемся поместить строковое значение в
длинное целое число.

Sub IspErr()

    On Error Goto eh
    
    Dim total As Long
    total = "aa"

Done:
    Exit Sub
eh:
    Debug.Print "Номер ошибки: " & Err.Number _
            & " " & Err.Description
End Sub

Err.Description предоставляет подробную информацию об ошибке, которая происходит. Это текст, который вы обычно видите, когда возникает ошибка, например, «Несоответствие типов»

Err.Number — это идентификационный номер ошибки, например, номер ошибки для «Несоответствие типов» — 13. Единственное время, когда вам действительно нужно это, если вы проверяете, что произошла конкретная ошибка, и это необходимо только в редких случаях.

Свойство Err.Source кажется отличной идеей, но оно не работает при ошибке VBA. Источник вернет имя проекта, которое вряд ли сузит место возникновения ошибки. Однако, если вы создаете ошибку с помощью Err.Raise, вы можете установить источник самостоятельно, и это может быть очень полезно.

Получение номера строки

Функция Erl используется для возврата номера строки, где
произошла ошибка.

Это часто вызывает путаницу. В следующем коде Erl вернет ноль.

Sub IspErr()

    On Error Goto eh
    
    Dim val As Long
    val = "aa"

Done:
    Exit Sub
eh:
    Debug.Print Erl
End Sub

Это потому, что нет номеров строк. Большинство людей не
понимают этого, но VBA позволяет вам иметь номера строк.

Если мы изменим подпрограмму, указав номер строки, она теперь выведет 20.

Sub IspErr()

10        On Error Goto eh
          
          Dim val As Long
20        val = "aa"

Done:
30        Exit Sub
eh:
40        Debug.Print Erl
End Sub

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

Когда вы закончите работу над проектом и передадите его
пользователю, в этот момент может быть полезно добавить номера строк. Если вы
используете стратегию обработки ошибок в последнем разделе этого поста, то VBA
сообщит строку, где произошла ошибка.

Использование Err.Raise

Err.Raise позволяет нам создавать ошибки. Мы можем
использовать его для создания пользовательских ошибок для нашего приложения,
что очень полезно. Это эквивалент оператора Throw в Java C #.

Формат следующий

Err.Raise [error number], [error source], [error description]

Давайте посмотрим на простой пример. Представьте, что мы
хотим убедиться, что в ячейке есть запись длиной 5 символов. Мы могли бы иметь конкретное сообщение для
этого

Public Const ERROR_INVALID_DATA As Long = vbObjectError + 513

Sub ReadWorksheet()

    On Error Goto eh
    
    If Len(Sheet1.Range("A1")) <> 5 Then
        Err.Raise ERROR_INVALID_DATA, "ReadWorksheet" _
            , "Значение в ячейке A1 должно иметь ровно 5 символов."
    End If
    
    ' продолжить, если ячейка имеет действительные данные
    Dim id As String
    id = Sheet1.Range("A1")
    

Done:
    Exit Sub
eh:
    ' Err.Raise отправит код сюда
    MsgBox " Обнаружена ошибка: " & Err.Description
End Sub

Когда мы создаем ошибку, используя Err.Raise, нам нужно присвоить ей номер. Мы можем использовать любое
число от 513 до 65535 для нашей ошибки. Мы должны использовать vbObjectError с номером,
например

Err.Raise vbObjectError + 513

Использование Err.Clear

Err.Clear используется для очистки текста и чисел из объекта
Err.Object. Другими словами, он очищает описание и номер.

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

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

Мы проверяем номер ошибки каждый раз, когда проходим цикл.
Если число не равно нулю, то произошла ошибка. Как только мы посчитаем ошибку,
нам нужно установить номер ошибки на ноль, чтобы он был готов проверить
следующую ошибку.

Sub IspErrClear()

    Dim count As Long, i As Long

    ' Продолжите, если ошибка, так как мы проверим номер ошибки
    On Error Resume Next
    
    For i = 0 To 9
        ' генерировать ошибку для каждого второго
        If i Mod 2 = 0 Then Error (13)
        
        ' Проверьте на ошибку
        If Err.Number <> 0 Then
            count = count + 1
            Err.Clear    ' Очистить Err, как только он считается
        End If
    Next

    Debug.Print " Количество ошибок было: " & count
End Sub

Примечание: Err.Clear сбрасывает текст и цифры в объекте ошибки, но не очищает ошибку — см. On Error Goto -1 для получения дополнительной информации об очистке фактической ошибки.

Логирование

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

Код ниже показывает очень простую процедуру регистрации

Sub Logger(sType As String, sSource As String, sDetails As String)
    
    Dim sFilename As String
    sFilename = "C:templogging.txt"
    
    ' Архивный файл определенного размера
    If FileLen(sFilename) > 20000 Then
        FileCopy sFilename _
            , Replace(sFilename, ".txt", Format(Now, "ddmmyyyy hhmmss.txt"))
        Kill sFilename
    End If
    
    ' Откройте файл для записи
    Dim filenumber As Variant
    filenumber = FreeFile 
    Open sFilename For Append As #filenumber
    
    Print #filenumber, CStr(Now) & "," & sType & "," & sSource _
                                & "," & sDetails & "," & Application.UserName
    
    Close #filenumber
    
End Sub

Вы можете использовать это так:

' Создать уникальный номер ошибки
Public Const ERROR_DATA_MISSING As Long = vbObjectError + 514

Sub CreateReport()

    On Error Goto eh
    
    If Sheet1.Range("A1") = "" Then
       Err.Raise ERROR_DATA_MISSING, "CreateReport", "Данные отсутствуют в ячейке A1"
    End If

    ' другой код здесь
Done:
    Exit Sub
eh:
    Logger "Error", Err.Source, Err.Description
End Sub

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

Ниже приведен пример регистрации. То, как вы реализуете
журналирование, зависит от характера приложения и его полезности.

Sub ReadingData()
    
    Logger "Information", "ReadingData()", "Starting to read data."
       
    Dim coll As New Collection
    ' Read data
    Set coll = ReadData
    
    If coll.Count < 10 Then
        Logger "Warning", "ReadingData()", "Number of data items is low."
    End If
    Logger "Information", "ReadingData()", "Number of data items is " & coll.Count
    
    Logger "Information", "ReadingData()", "Finished reading data."

End Sub

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

Другие элементы, связанные с ошибками

В этом разделе рассматриваются некоторые другие инструменты
обработки ошибок, которые есть в VBA. Эти элементы считаются устаревшими, но я
включил их, поскольку они могут существовать в устаревшем коде.

Функция ошибки

Функция Error используется для печати описания ошибки с
заданным номером ошибки. Он включен в VBA для обеспечения обратной
совместимости и не нужен, поскольку вместо него можно использовать описание
Err.Description.

Ниже приведены некоторые примеры

' Распечатать текст «Деление на ноль»
Debug.Print Error(11)
' Распечатать текст "Несоответствие типов"
Debug.Print Error(13)
' Распечатать текст "Файл не найден"
Debug.Print Error(53)

Заявление об ошибке

Заявление об ошибке позволяет имитировать ошибку. Он включен
в VBA для обратной совместимости. Вместо этого вы должны использовать
Err.Raise.

В следующем коде мы моделируем ошибку «Разделить на ноль».

Sub ZayavlObOshibke()

    On Error Goto eh
        
    ' Это создаст деление на ноль ошибок
    Error 11
    
    Exit Sub
eh:
    Debug.Print Err.Number, Err.Description
End Sub

Это утверждение включено в VBA для обратной совместимости.
Вместо этого вы должны использовать Err.Raise.

Простая стратегия обработки ошибок

Со всеми различными опциями вы можете быть озадачены тем,
как использовать обработку ошибок в VBA. В этом разделе я покажу вам, как
реализовать простую стратегию обработки ошибок, которую вы можете использовать
во всех своих приложениях.

Основная реализация

Это простой обзор нашей стратегии

  1. Поместите строку On Error Goto Label  в начале нашего верхнего Sub.
  2. Поместите Label у обработки ошибок в конце нашего верхнего
    Sub.
  3. Если происходит ожидаемая ошибка, обработайте ее и продолжайте.
  4. Если приложение не может продолжить работу, используйте Err.Raise для перехода к метке обработки ошибок.
  5. В случае непредвиденной ошибки код автоматически перейдет к метке обработки ошибок.

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

error-handling

Следующий код показывает простую реализацию этой стратегии

Public Const ERROR_NO_ACCOUNTS As Long = vbObjectError + 514

Sub BuildReport()

    On Error Goto eh
    
    ' Если ошибка в ReadAccounts, то перейти к ошибке
    ReadAccounts
    
    ' Сделай что-нибудь с кодом
    
Done:
    Exit Sub
eh:
    ' Все ошибки будут прыгать сюда
    MsgBox Err.Source & ": Произошла следующая ошибка  " & Err.Description
End Sub

Sub ReadAccounts()
    
    ' ОЖИДАЕМАЯ ОШИБКА - Может обрабатываться кодом
    ' Приложение может обрабатывать A1 равным нулю
    If Sheet1.Range("A1") = 0 Then
        Sheet1.Range("A1") = 1
    End If
    
    ' ОЖИДАЕМАЯ ОШИБКА - не может быть обработана кодом
    ' Приложение не может быть продолжено, если нет учетной записи
    If Dir("C:ДокументыОтчет.xlsx") = "" Then
        Err.Raise ERROR_NO_ACCOUNTS, "UsingErr" _
                , "There are no accounts present for this month."
    End If

    ' НЕОЖИДАННАЯ ОШИБКА - не может быть обработана кодом
    ' Если ячейка B3 содержит текст, мы получим ошибку несоответствия типов
    Dim total As Long
    total = Sheet1.Range("B3")
    
    
    ' продолжить и читать счета
    
End Sub

Это хороший способ реализации обработки ошибок, потому что

  • Нам не нужно добавлять код обработки ошибок в
    каждую подпрограмму.
  • Если возникает ошибка, то VBA корректно
    завершает работу приложения.

Полная стратегия обработки ошибок

Стратегия выше имеет один недостаток. Он не сообщает вам,
где произошла ошибка. VBA не наполняет Err.Source чем-либо полезным, поэтому мы
должны сделать это сами.

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

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

* Стек — это список вспомогательных функций, которые
использовались в данный момент при возникновении ошибки.

Это наша стратегия

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

Мы просто «всплываем» из-за ошибки. Следующая диаграмма
показывает простое визуальное представление о том, что происходит, когда в Sub3
возникает ошибка

Error Handling – bubbling

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

Это две вспомогательные подводные лодки

Option Explicit

Public Const MARKER As String = "NOT_TOPMOST"

' Вызывает ошибку и добавляет номер строки и имя текущей процедуры
Sub RaiseError(ByVal errorno As Long, ByVal src As String _
                , ByVal proc As String, ByVal desc As String, ByVal lineno As Long)
    
    Dim sLineNo As Long, sSource As String
    
    ' Если маркера нет, тогда RaiseError вызывается впервые.
    If Left(src, Len(MARKER)) <> MARKER Then

        ' Добавить номер строки ошибки, если она есть
        If lineno <> 0 Then
            sSource = vbCrLf & "Line no: " & lineno & " "
        End If
   
        ' Добавить маркер и процедуру к источнику
        sSource = MARKER & sSource & vbCrLf & proc
        
    Else
        ' Если ошибка уже возникла, просто добавьте имя процедуры
        sSource = src & vbCrLf & proc
    End If
    
    ' Если код останавливается здесь, убедитесь, что DisplayError находится в верхней части Sub
    Err.Raise errorno, sSource, desc
    
End Sub

' Отображает ошибку, когда она достигает самого верхнего sub
' Примечание: вы можете добавить вызов для входа из этого подпункта
Sub DisplayError(ByVal src As String, ByVal desc As String _
                    , ByVal sProcname As String)

    ' Удалить маркер
    src = Replace(src, MARKER, "")
    
    Dim sMsg As String
    sMsg = " Произошла следующая ошибка: " & vbCrLf & Err.Description _
                    & vbCrLf & vbCrLf & " Расположение ошибки: "
    
    sMsg = sMsg + src & vbCrLf & sProcname
    
    ' Показать сообщение
    MsgBox sMsg, Title:="Ошибка "
    
End Sub

Пример использования этой стратегии

Вот простое кодирование, которое использует эти Sub. В этой стратегии мы не размещаем какой-либо код в верхнем подпрограмме. Мы только вызываем подводные лодки.

Sub Topmost()

    On Error Goto EH
    
    Level1

Done:
    Exit Sub
EH:
    DisplayError Err.source, Err.Description, "Module1.Topmost"
End Sub

Sub Level1()

    On Error Goto EH
    
    Level2

Done:
    Exit Sub
EH:
   RaiseError Err.Number, Err.source, "Module1.Level1", Err.Description, Erl
End Sub

Sub Level2()

    On Error Goto EH
    
    ' Ошибка здесь
    Dim a As Long
    a = "7 / 0"

Done:
    Exit Sub
EH:
    RaiseError Err.Number, Err.source, "Module1.Level2", Err.Description, Erl
End Sub

Результат выглядит так

error handling output

Если в вашем проекте есть номера строк, результат будет содержать номер строки ошибки.

error handling output line

Примечание: вы можете получить следующую ошибку при использовании этого кода:

“Programmatic Access to Visual Basic Project is not trusted”

Чтобы решить эту проблему, выполните следующие действия.

  1. Перейдите в раздел «Разработчик» на ленте и
    нажмите «Macro Security», которая находится под кодом.
  2. Нажмите «Настройка макроса» в левом списке.
  3. Поставьте флажок в поле «Доверительный доступ к
    объектной модели проекта VBA».
  4. Нажмите Ok.

Обработка ошибок в двух словах

  • Обработка ошибок используется для обработки ошибок, возникающих во время работы приложения.
  • Вы пишете определенный код для обработки ожидаемых ошибок. Вы используете оператор обработки ошибок VBA
    On Error Goto [label] для отправки VBA на метку при возникновении непредвиденной ошибки.
  • Вы можете получить подробную информацию об ошибке из Err.Description.
  • Вы можете создать свою собственную ошибку, используя Err.Raise.
  • Использование одного оператора On Error в самой верхней подпрограмме перехватит все ошибки в подпрограммах, которые вызываются отсюда.
  • Если вы хотите записать имя Sub с ошибкой, вы можете обновить ошибку и сбросить ее.
  • Вы можете использовать журнал для записи информации о приложении, когда оно запущено.

Не работают макросы в Excel? Включите их выполнение, добавьте специальный модель с кодом, проверьте версию ОС и Эксель, убедитесь в соответствии пакета приложений, активируйте Майкрософт Офис, снимите блокировку файла, проверьте систему безопасности и применяемые библиотеки. Ниже подробно рассмотрим, в чем могут быть причины подобной неисправности, и какие шаги предпринимать для ее устранения.

Причины

Для начала стоит разобраться, почему не работает макрос в Excel, ведь от этого зависят дальнейшие шаги. К основным причинам стоит отнести:

  1. Функция отключена.
  2. Отключение отслеживания событий.
  3. Устаревшая операционная система.
  4. Несоответствие разработчика пакета офисных приложений.
  5. Устаревшая версия Майкрософт Офис.
  6. Неактивированная версия Excel.
  7. Заблокированный файл.
  8. Неправильные настройки безопасности.
  9. Отсутствие необходимой библиотеки и т. д.

Выше рассмотрены основные причины, почему не удается выполнить макрос в Excel. Все они могут быть решены самостоятельно с помощью приведенных ниже рекомендации. Подробнее на решении вопроса остановимся ниже.

Что делать

Многие пользователи теряются в ситуации, когда не включаются или вообще не работают макросы в Excel. Такая проблема не дает нормально пользоваться приложением и заставляет искать альтернативные варианты.

Включите опцию

Первое, что необходимо сделать — включить функцию для обеспечения ее работоспособности. Здесь многое зависит от версии Эксель.

Если не работают макросы в Excel 2003, сделайте следующие шаги:

  1. Войдите в «Сервис».
  2. Перейдите в раздел «Безопасность».
  3. Кликните «Уровень макросов «Низкий».

В случае, когда не работают макросы в Excel 2007, включите их следующим образом:

  1. Жмите на кнопку «Офис».
  2. Войдите в параметры Excel.
  3. Кликните на «Центр управления безопасности».
  4. Войдите в «Параметры центра управления безопасностью».
  5. Жмите на «Параметры макросов».
  6. Кликните на «Разрешить все …».

В ситуации, когда не работают макросы в Excel 2016, сделайте следующие шаги:

  1. Войдите в раздел «Файл».
  2. Кликните на кнопку «Параметры».
  3. Зайдите в «Центр управления безопасностью».
  4. Войдите в «Параметры центра управления безопасностью».
  5. Кликните на «Параметры …».
  6. Жмите на «Разрешить все …».

После внесения изменений параметра безопасности перезапустите приложение Excel, а именно закройте его полностью и откройте снова. Лишь после этого изменения вступают в силу.

Добавьте нужный модуль в книгу

Бывают ситуации, когда макросы включены, но не работают в Excel из-за отключения каким-либо элементом отслеживания событий. В таком случае сделайте следующее:

  1. Перейдите в редактор VBA с помощью клавиш Alt+F11.
  2. Вставьте указанный ниже код.

Sub Reset_Events()

Application.EnableEvents = True

End Sub

  1. Для выполнения кода поставьте курсор в любой точке между началом и концом.
  2. Кликните F5.

Проверьте операционную систему

В ситуации, когда не отображаются макросы в Excel, обратите внимание на тип операционной системы. К примеру, Майкрософт Офис, который подходит для Виндовс, на Мак ОС уже работать не будет. Причина в том, что в приложении используются разные библиотеки. Даже если надстройки и функционируют, могут быть сбои в работе. Вот почему при появлении проблем нужно проверить ОС на соответствие.

Обратите внимание на разработчика

Если в Экселе не работают макросы, причиной может быть другой разработчик. Так, пользователи Excel часто применяют OpenOffice или LibreOffice. Эти пакеты созданы на разных языках программирования, которые имеют индивидуальные особенности. Так, если надстройки написаны на Visual Basic for Application, он может не работать в указанных выше офисных приложениях. Вот почему необходимо уточнять, для какого пакета создан макрос / надстройка.

Проверьте версию Майкрософт Офис

В Макрософт Офис 2003 применяются надстройки xla для Excel. В современных версиях расширение поменялось на xlam. Если ставить макросы старого типа в приложения Офис 2007 и больше, никаких трудностей не происходит. Если же вы попытаетесь поставить новую надстройку на старую версию Excel, она зачастую не работает. Вот почему важно обратить внимание на этот параметр при выборе.

Убедитесь в наличии пакета VBA

Одной из причин, почему не запускается макрос в Excel, может быть отсутствие пакета VBA. Для успешного запуска надстройки необходимо, чтобы этот пакет был установлен. Иногда он уже установлен в Офис, но так происходит не всегда. Для проверки жмите комбинацию на Alt+F11. Если после этого появляется Visual Basic, компонент можно считать установленным. В ином случае его нужно поставить. Для этого:

  • Зайдите в «Пуск», а далее «Панель управления / Программы и компоненты».

  • Выберите программу Майкрософт Офис.
  • Жмите на кнопку «Изменить».

  • Запустить файл установки Setup.exe.
  • Кликните на «Добавить или удалить компоненты».
  • Выберите в списке Visual Basic и установите его.

Активируйте Офис

Если в Excel 2007 не работает кнопка «макросы», причиной может быть отсутствие активации приложения. Для этого жмите на кнопку «Активировать» и следуйте инструкции. В большинстве случаев такая опция является платной.

Снимите блокировку файла

Учтите, что документ, полученный с другого ПК / ноутбука, может заблокироваться. Для разблокировки файла нужно нажать ПКМ и в разделе «Общие» кликнуть на «Разблокировать».

 Проверьте библиотеки

В случае, когда параметры макросов не активны в Excel, причиной может быть появление ошибки «Can’t find project or library». При этом, надстройка работает на другом ПК / ноутбуке, а здесь возникают проблемы. Ошибку легко устранить, если в окне, которое идет за сообщением об ошибке, снять отметки в полях Missing. Для вызова окна можно выбрать пункт меню Tools / References.

Проверьте настройки безопасности

В ситуации, когда не работают макросы в Excel, можно добавить надежные расположения или настроить доступ к объектной модели VBA. Для этого в Офис 2007 необходимо сделать следующее:

  1. Войдите в Меню
  2. Кликните на пункт «Параметры».
  3. Жмите на «Центр управления безопасностью».
  4. Войдите в «Параметры центра управления безопасностью».
  5. Кликните на «Параметры макросов» и «Доверять доступ к объектной модели проектов».

Зная, почему не работают макросы в Excel, вы можете с легкостью исправить проблему и восстановить работоспособность. Если же сложности в работе возникают, вы всегда можете воспользоваться инструкцией в статье.

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

Отличного Вам дня!

Обновлено: 30.01.2023

Обычно для отладки макроса его выполняют в пошаговом режиме. Для включения этого режима необходимо нажать кнопку По шагам (Single Step) на панели инструментов в окне Конструктора макросов или выбрать команду меню Запуск, По шагам (Run, Single Step). Тогда перед выполнением каждой макрокоманды будет появляться диалоговое окно Пошаговое исполнение макроса (Macro Single Step) (рис. 11.14).

В этом окне отображаются имя макроса, имя исполняемой макрокоманды, условие ее исполнения и аргументы. При этом в полях Условие (Condition) и Аргументы (Arguments) видны значения условного выражения и аргументов макрокоманды. Если в строке макрокоманды условие не указано, в поле Условие (Condition) всегда будет показываться значение Истина (True). Кнопки справа от полей в этом окне позволяют выполнить очередную макрокоманду, прервать выполнение макроса (например, если видно, что аргументы вычислены неправильно) и продолжить выполнение в обычном режиме, т. е. не по шагам.

Рис. 11.14. Диалоговое окно Пошаговое исполнение макроса

Если в процессе выполнения макроса возникла ошибка, появляется диалоговое окно Ошибка выполнения макроса (Action Failed), аналогичное окну Пошаговое исполнение макроса (Macro Single Step), но без возможности продолжить процесс (кнопки Шаг (Step) и Продолжить (Continue) недоступны). Можно только прервать выполнение макроса, нажав кнопку Прервать (Halt). В окне отображается макрокоманда, содержащая ошибку.

Поиск ошибок в макросах, как правило, не вызывает больших затруднений. Это связано с тем, что:

  • большинство синтаксических ошибок проверяется при вводе и система просто не даст ввести неправильное название макрокоманды или условное выражение (правда, она не защитит от ввода неправильного имени объекта, например несуществующей формы или элемента управления в форме);
  • макросы, как правило, достаточно просты и не содержат длинных последовательностей макрокоманд, в противном случае лучше написать процедуру на VBA, т. к. язык VBA предоставляет больше возможностей и имеет существенно лучшие средства отладки.

Основные ошибки, которые возникают в макросах, связаны либо с неправильным вводом имен объектов, и тогда Access не может найти соответствующий объект, либо с тем, что объекты, на которые ссылается макрокоманда, недоступны, например форма не открыта. Поэтому при возникновении ошибки в первую очередь нужно проверить, правильно ли введены имена объектов и открыты ли формы, использованные в условиях или аргументах макрокоманд.

Прежде чем использовать ссылки на форму или элемент управления, рекомендуется выполнять проверку, открыта ли форма, с помощью функции isLoaded(). К сожалению, эта функция не является стандартной функцией Access, а обычно включается в модуль «Служебные функции» (Utility Function) базы данных «Борей». Вы можете скопировать ее оттуда в свою базу данных.

Еще один стандартный прием — установка точек останова. Его применяют для того, чтобы остановить выполнение макроса в определенной точке до завершения процесса. Для этого используется макрокоманда ОстановитьМакрос (StopMacro). Макрос будет выполняться до макрокоманды ОстановитьМакрос (StopMacro), после этого можно проверить результаты. Таким образом, можно локализовать ошибку с точностью до макрокоманды.

Файл 1037.ini использует расширение INI, в частности известное как файл Windows Initialization. Классифицируется как файл Параметры (Windows Initialization), созданный для RocketDock 1.3.5 компанией PunkLabs.

Впервые 1037.ini был представлен 06/26/2008 в составе RocketDock 1.3.5 для Windows 10. По нашим данным, это самая последняя дата выпуска от компании PunkLabs.

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

Совместимость с Windows 10, 8, 7, Vista, XP и 2000

Средняя оценка пользователей

Сведения о разработчике и ПО
Программа: RocketDock 1.3.5
Разработчик: PunkLabs
Программное обеспечение: RocketDock
Версия ПО: 1.3.5
Сведения о файле
Размер файла (байты): 7060
Дата первоначального файла: 12/04/2019
Дата последнего файла: 12/04/2019
Информация о файле Описание
Размер файла: 6.9 kB
Дата и время изменения файла: 2019:12:04 02:54:15+00:00

✻ Фрагменты данных файлов предоставлены участником Exiftool (Phil Harvey) и распространяются под лицензией Perl Artistic.

Общие ошибки выполнения 1037.ini

Ошибки файла 1037.ini часто возникают на этапе запуска RocketDock, но также могут возникать во время работы программы. Эти типы ошибок INI также известны как «ошибки выполнения», поскольку они возникают во время выполнения RocketDock. К числу наиболее распространенных ошибок выполнения 1037.ini относятся:

  • Не удается найти 1037.ini.
  • 1037.ini — ошибка.
  • Не удалось загрузить 1037.ini.
  • Ошибка при загрузке 1037.ini.
  • Не удалось зарегистрировать 1037.ini / Не удается зарегистрировать 1037.ini.
  • Ошибка выполнения — 1037.ini.
  • Файл 1037.ini отсутствует или поврежден.

Программа: C:Program Files (x86)RocketDockLanguages1037.ini

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

В большинстве случаев причинами ошибок в INI являются отсутствующие или поврежденные файлы. Файл 1037.ini может отсутствовать из-за случайного удаления, быть удаленным другой программой как общий файл (общий с RocketDock) или быть удаленным в результате заражения вредоносным программным обеспечением. Кроме того, повреждение файла 1037.ini может быть вызвано отключением питания при загрузке RocketDock, сбоем системы при загрузке или сохранении 1037.ini, наличием плохих секторов на запоминающем устройстве (обычно это основной жесткий диск) или заражением вредоносным программным обеспечением. Таким образом, крайне важно, чтобы антивирус постоянно поддерживался в актуальном состоянии и регулярно проводил сканирование системы.

Шаг 1. Восстановите компьютер до последней точки восстановления, «моментального снимка» или образа резервной копии, которые предшествуют появлению ошибки.

Чтобы начать восстановление системы (Windows XP, Vista, 7, 8 и 10):

Если на этапе 1 не удается устранить ошибку 1037.ini, перейдите к шагу 2 ниже.

Шаг 2. Если вы недавно установили приложение RocketDock (или схожее программное обеспечение), удалите его, затем попробуйте переустановить RocketDock.

Чтобы удалить программное обеспечение RocketDock, выполните следующие инструкции (Windows XP, Vista, 7, 8 и 10):

После полного удаления приложения следует перезагрузить ПК и заново установить RocketDock.

Если на этапе 2 также не удается устранить ошибку 1037.ini, перейдите к шагу 3 ниже.

Если ни один из предыдущих трех шагов по устранению неполадок не разрешил проблему, можно попробовать более агрессивный подход (примечание: не рекомендуется пользователям ПК начального уровня), загрузив и заменив соответствующую версию файла 1037.ini. Мы храним полную базу данных файлов 1037.ini со 100%-ной гарантией отсутствия вредоносного программного обеспечения для любой применимой версии RocketDock . Чтобы загрузить и правильно заменить файл, выполните следующие действия:

Windows 10: C:Program Files (x86)RocketDockLanguages

Если этот последний шаг оказался безрезультативным и ошибка по-прежнему не устранена, единственно возможным вариантом остается выполнение чистой установки Windows 10.

СОВЕТ ОТ СПЕЦИАЛИСТА: Мы должны подчеркнуть, что переустановка Windows является достаточно длительной и сложной задачей для решения проблем, связанных с 1037.ini. Во избежание потери данных следует убедиться, что перед началом процесса вы создали резервные копии всех важных документов, изображений, установщиков программного обеспечения и других персональных данных. Если вы в настоящее время не создаете резервных копий своих данных, вам необходимо сделать это немедленно.

БЕСПЛАТНЫЕ компьютерные консультации. ДНЕПР

БЕСПЛАТНЫЕ компьютерные консультации. ДНЕПР

БЕСПЛАТНЫЕ компьютерные консультации. ДНЕПР запись закреплена

ОБРАТИЛИСЬ С ПРОБЛЕМОЙ
Здравствуйте.
Пропал раздел жесткого диска (D, если быть конкретным) после установки Windows 7.
В управлении дисками, раздел показывается, но ему не задана буква. При попытке задать букву выдает ошибку «Произошла ошибка при выполнении операции, так как информация в оснастке диспетчера дисков устарела. Обновите данные при помощи операции обновления.Если ошибка сохранится, закройте окно оснастки диспетчера дисков, затем перезапустите эту службу или перезагрузите компьютер». Перезагрузка ничего не дала.
Прочитал уже кучу форумов с подобной проблемой, но, похоже, у каждой проблемы индивидуальное решение.

РЕШЕНИЕ
Откройте диспетчер устройств. Это можно сделать, введя «Диспетчер устройств» или «devmgmt.msc» в поле поиска меню «Пуск».
После открытия диспетчера устройств щелкните «Тома запоминающих устройств», чтобы развернуть раздел «Тома запоминающих устройств» дерева устройств.
В разделе «Тома запоминающих устройств» должен отобразиться том, указанный как «Неизвестное устройство.» Щелкните его правой кнопкой мыши и выберите команду «Удалить.» После отображения запроса на подтверждение нажмите кнопку «ОК».
Перезапустите систему, если появится соответствующее уведомление. Том должен быть доступен после окончания перезагрузки. Если уведомление о перезагрузке системы не отображается, щелкните правой кнопкой диспетчер устройств и выберите параметр «Обновить конфигурацию оборудования.» После завершения обновления и установки тома вы сможете получить доступ к нему.

Александра Зарянова

Александра Зарянова

нет пункта «Неизвестное устройство.» в «Тома запоминающих устройств»
что делать?

Отказ макроса или надстройки от выполнения своих функций имеет ряд причин. Рассмотрим наиболее распространенные из них.

Операционная система

Вплоть до Office 2016 пакет приложений Microsoft Office выпускается в различных версиях, для Windows и для Mac OS. Встроенный в приложения Office язык программирования при этом использует отличающиеся друг от друга библиотеки операционной системы. В связи с этим макрос/надстройка, написанная для работы в приложениях под Windows, может не работать, либо работать некорректно в MacOS. Проверьте операционную систему, для которой разрабатывался макрос/надстройка.

Разработчик пакета офисных приложений

Кроме Microsoft Office, пользователи достаточно часто используют альтернативные пакеты офисных приложений, такие как OpenOffice или LibreOffice. Приложения этих пакетов также имеют встроенные языки программирования, но эти языки отличаются друг от друга. Макросы или надстройки, написанные в Visual Basic for Application в приложениях пакета Microsoft Office, не будут работать в приложениях OpenOffice или LibreOffice. Уточните, для какого пакета офисных программ разработан макрос/надстройка.

Наличие компонента VBA

Для того, чтобы можно было запустить макрос или надстройку в каком-либо приложении пакета Office, необходимо, чтобы с этим пакетом был установлен компонент VBA – встроенный язык программирования Visual Basic for Application. В некоторых версиях Office этот пакет может устанавливаться отдельно. Проверьте, установлен ли этот компонент на компьютере. Нажмите сочетание клавиш Alt+F11, если после этого появляется окно редактора Visual Basic, то компонент установлен. В случае, если компонент отсутствует, его необходимо установить.

Версия Microsoft Office

Активация Microsoft Office

Убедитесь в том, что Microsoft Office не требует активации. Проведите активацию, чтобы избежать каких-либо ограничений при использовании приложений.

Снятие блокировки файла

Файл, полученный с другого компьютера или из сети интернет может быть заблокирован. Чтобы разблокировать такой файл, необходимо кликнуть на нем правой кнопкой мыши и на вкладке «Общие» нажать кнопку «Разблокировать».

snyatie blokirovki s fajla

Система безопасности

Используемые библиотеки

cant find project or library

Это окно также можно вызвать и самостоятельно, если в редакторе VB выбрать пункт меню Tools/References.

Кроме этого не все библиотеки подключаются автоматически. Если на компьютере разработчика макроса или надстройки какая-то библиотека была подключена вручную, затем макрос или надстройка были перенесены на другой компьютер, где эта библиотека не подключена, возникает такая-же ошибка.

Читайте также:

  • Сменить виндовс 7 на 7
  • Как найти ноутбук по мак адресу
  • Windows ce синхронизация времени
  • Qasmixer linux нет звука
  • Как установить origin на windows 10

Программа справки Windows не поддерживается в Windows 10, Windows Server 2012 или более поздних версиях Windows Server. Программа справки Windows доступна только для Windows Vista, 7, 8 и 8.1.

Корпорация Майкрософт настоятельно рекомендует разработчикам программного обеспечения прекратить использование приложения справки Windows. Разработчикам программного обеспечения, которые поставляют программы, использующие HLP-файлы, рекомендуется перевести интерфейс справки на альтернативный формат файла справки, например CHM, HTML или XML. Дополнительные сведения см. в статье MSDN о том, какая версия справки мне нужна? Пока корпорация Майкрософт разрабатывает будущие технологии справки, мы рекомендуем авторам продолжить использование HTML-справки 1.4. HtmL-справка 1.4 включена в версии Windows, начиная с Windows 7.

Признаки

При попытке открыть справку в программах под управлением Windows вы получаете одно из следующих сообщений об ошибке.
 

Справка для этой программы была создана в формате справки Windows, который использовался в предыдущих версиях Windows и не поддерживается в Windows Vista.
 

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

Справка для этой программы была создана в формате справки Windows, который зависит от функции, не включенной в эту версию Windows. Дополнительные сведения см. на веб-сайте справки и поддержки Майкрософт.

«Разрешение»

Чтобы просмотреть 32-разрядные файлы справки с расширением HLP в Windows, необходимо скачать и установить WinHlp32.exe из Центра загрузки Майкрософт.

  • 4013443 WinHlp32.exe для версий x86 Windows 8.1

  • 4013443 WinHlp32.exe 64-разрядных версий Windows 8.1

  • 4013443 WinHlp32.exe для Windows 8

Важные примечания для скачивания этой программы

  • Откройте ссылки с помощью Internet Explorer.

  • Если при открытии страницы загрузки отображается сообщение «Требуется проверка», нажмите кнопку » Продолжить» и следуйте инструкциям на экране.

  • При появлении запроса на скачивание файла выберите имя файла, содержащее «x64» для 64-разрядных версий Windows или «x86» для 32-разрядных версий Windows. Используйте следующие сведения об автоматическом обнаружении, чтобы сделать выбор.

  • Программа справки Windows не поддерживается в Windows Server 2012 или более поздних версиях Windows Server.

Если при установке WinHlp32.exe или использовании справки возникают проблемы, перейдите к разделу «Дополнительные сведения».

Дополнительные сведения для опытных пользователей

Эта проблема возникает, когда справка Windows использует более раннюю версию программы справки Windows (WinHlp32.exe) для отображения содержимого.

Известные проблемы, которые могут возникнуть при установке WinHlp32.exe

клиентский компонент Центра обновления Windows ошибки 80070422

Исправление этой проблемы вручную

Если при клиентский компонент Центра обновления Windows обновления 80070422 WinHlp32.exe, может потребоваться изменить параметры клиентский компонент Центра обновления Windows службы, а затем перезапустить службу. Для этого выполните указанные ниже действия.

  1. Нажмите кнопку «Пуск» и введите «Службы» в текстовом поле «Запуск поиска » или «Программы поиска и файлы «.

  2. Дважды щелкните «Службы » из списка «Программы». Если вам будет предложено ввести пароль администратора или подтверждение, введите пароль или предоставьте подтверждение.

  3. Щелкните правой кнопкой мыши службу клиентский компонент Центра обновления Windows и выберите пункт «Свойства».

  4. На вкладке «Общие» убедитесь, что рядом с типом запуска выбран параметр «Автоматический».

  5. Рядом с состоянием службы проверьте, запущена ли служба. Если он не запущен, нажмите кнопку » Пуск». Если вам будет предложено ввести пароль администратора или подтверждение, введите пароль или предоставьте подтверждение.

  6. Нажмите кнопку ОК.

Известные проблемы, которые могут возникнуть после установки WinHlp32.exe

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

  • Макросы отключены

    По умолчанию в справке Windows отключены следующие макросы:

    • ExecFile

    • RegisterRoutine

    • Shellexecute

    • Контекстное

    • Создать

    • Тест

    • ExecProgram

    Однако все остальные макросы в HLP-файлах будут работать так же, как и в предыдущих выпусках. Таким образом, если HLP-файл, который зависит от этих макросов, открывается после установки справки Windows для Windows Vista, Windows 7, Windows Server 2008 или Windows Server 2008 R2, некоторые функциональные возможности файла могут работать неправильно. В этом случае может появиться следующее сообщение об ошибке:

    Возникла проблема при выполнении макроса. (1037)

    Если вам нужно использовать эти макросы, их можно включить с помощью обходного групповая политика или обходного решения реестра, описанного в разделе «Записи реестра и групповые политики для администраторов сети».

  • Не удается получить доступ к HLP-файлам, хранящимся на сайтах интрасети

    По умолчанию вы не можете использовать WinHlp32.exe для доступа к HLP-файлам, хранящимся на сайтах интрасети. При попытке открыть удаленный файл вы получите следующее сообщение об ошибке:

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

    Если вам нужно получить доступ к HLP-файлам, хранящимся на сайтах интрасети, их можно разблокировать с помощью обходного решения групповая политика или обходного пути реестра, описанного в разделе «Записи реестра и групповые политики для администраторов сети».

  • Неинтерактивный доступ пользователей заблокирован

    Доступ к HLP-файлам заблокирован неинтерактивными пользователями, такими как системные процессы. При возникновении этой ошибки пользователь не получает сообщение об ошибке.

  • Функция перетаскивания отключена

    Поддержка функций перетаскивания в приложении отключена. При возникновении этой ошибки пользователь не получает сообщение об ошибке.

  • Зависимости от файлов справки

    Файлы справки с названием «How to Use Help» (Как использовать справку) были удалены из Windows Vista и Windows Server 2008. Удалены следующие файлы:

    • Windows.hlp

    • Winhlp32.hlp

    • Winhlp32.cnt

    • Winhelp.cnt

    • Nocntnt.cnt

    Примечания

    • Эти файлы не включены в Windows 7 или Windows Server 2008 R2.

    • HLP-файлы, которые зависят от этих файлов, могут возвращать ошибку при попытке открыть их.

Устранение проблем совместимости, связанных с WinHlp32.exe

Вы можете использовать WinHlp32.exe для просмотра 32-разрядных файлов справки. В этом выпуске групповая политика параметры и подразделы реестра, которые можно использовать для решения проблем совместимости приложений. Например, параметры групповая политика и подразделы реестра можно использовать для устранения проблем, связанных с макросами в HLP-файлах, и для доступа к HLP-файлам, хранящимся на сайтах интрасети. Однако если пользователи просматривают файлы справки из неизвестного источника, компьютер будет под угрозой, если они включит эти политики или эти параметры. Поэтому следует соблюдать осторожность, когда вы решаете, следует ли реализовать обходные пути совместимости приложений, описанные в этом разделе.

Используйте следующие вопросы, чтобы определить, следует ли устанавливать WinHlp32.exe и какие изменения политики и реестра необходимо внести.

  • Должны ли у вас быть приложения и функциональные возможности, на которые влияет удаление WinHlp32.ex?

    • Сколько приложений требуется WinHlp32.exe? На сколько приложений влияют изменения функциональности? Насколько важны эти приложения?

    • Насколько серьезной является неисправность, вызванная изменениями?

  • Каковы ваши требования к безопасности и возможности безопасности?

    • Что важнее: можно ли использовать WinHlp32.exe или убедиться, что ваша безопасность является как можно более надежной?

    • Обеспечивают ли внешние меры безопасности, такие как локальный или корпоративный брандмауэр, достаточную уверенность в том, что вы можете установить WinHlp32.exe и внести изменения в политику или изменения реестра, описанные в этой статье?

  • Если вы работаете в организации, доставляет ли ваша организация содержимое в формате HLP?

    • Можно ли изменить программу или содержимое таким образом, чтобы им не WinHlp32.exe функции? Например, можно ли преобразовать содержимое справки, которое в настоящее время имеет формат HLP, в альтернативный формат файла, например CHM, .html или .xml?

    • Хранит ли ваша организация HLP-файлы на сайте интрасети? Можно ли установить эти файлы локально?

Включение макросов на одном компьютере после установки WinHlp32.exe

После установки WinHelp32.exe, описанной в этой статье, некоторые макросы будут отключены. Дополнительные сведения об этой проблеме см. в разделе «Известные проблемы».

В этом разделе содержатся инструкции по повторному включению этих макросов путем изменения раздела реестра. Если компьютер находится в управляемой среде, не следуйте этим инструкциям без предварительного консультации с ИТ-отделом. ИТ-отделы могут не включать макросы повторно или повторно включить их с помощью групповых политик. Прежде чем продолжить, ИТ-отделам следует полностью прочитать эту статью.

Предупреждение В этой статье содержатся сведения о том, как обойти проблемы, вызванные изменениями в этом выпуске справки Windows. Однако корпорация Майкрософт не дает никаких конкретных рекомендаций о том, какие разделы реестра и какие значения являются правильными для вашей уникальной среды. Если вы используете управляемую среду, ИТ-отдел лучше всего оценит, как оценить преимущества этих обходных решений от рисков их использования. Более безопасный курс — не использовать обходные пути реестра.

Примечание Для выполнения действий, описанных в этой задаче, необходимо войти на компьютер с помощью учетной записи администратора. Используя учетную запись администратора, вы можете внести изменения на компьютере, которые нельзя внести с помощью другой учетной записи, например стандартной учетной записи.

Чтобы войти в систему с помощью учетной записи администратора, необходимо знать пароль для учетной записи администратора на компьютере. Если вы выполняете эти действия на личном компьютере, скорее всего, вы уже вошли в систему с помощью учетной записи администратора. Если вы выполняете эти действия на рабочем компьютере, может потребоваться обратиться за помощью к системному администратору.

Включение макросов на одном компьютере вручную

Важно

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

Чтобы включить макросы на одном компьютере после установки WinHelp32.exe, выполните следующие действия.

  1. Войдите с помощью учетной записи администратора.

  2. Нажмите клавишу Windows +R, введите regedit и нажмите кнопку » ОК».
    Значок уведомления если появится запрос на ввод пароля администратора или подтверждение, введите пароль или нажмите кнопку «Продолжить».

  3. В 32-разрядных выпусках Windows найдите и выберите следующий подраздел реестра:

    HKEY_LOCAL_MACHINESOFTWAREMicrosoft
    В 64-разрядных выпусках Windows найдите и выберите следующий подраздел реестра:

    HKEY_LOCAL_MACHINESOFTWAREWow6432NodeMicrosoft

  4. В меню «Правка » наведите указатель мыши на пункт «Создать» и нажмите кнопку » Ключ».

  5. Введите WinHelp и нажмите клавишу ВВОД.

  6. Щелкните ключ WinHelp .

  7. В меню «Правка » наведите указатель мыши на пункт «Создать» и выберите значение DWORD (32-разрядное значение).

  8. Введите AllowProgrammaticMacros и нажмите клавишу ВВОД.

  9. В меню «Правка » нажмите кнопку «Изменить».

  10. В поле данных «Значение» введите 1, щелкните шестнадцатеричное значение в базовой области и нажмите кнопку «ОК«.

  11. Закройте редактор реестра.

Как разблокировать HLP-файлы, хранящиеся в интрасети на одном компьютере после установки WinHlp32.exe

После установки WinHelp32.exe файла, описанного в этой статье, HLP-файлы, хранящиеся на сайтах интрасети, блокируются. Дополнительные сведения об этой проблеме см. в разделе «Известные проблемы».

В этой статье содержатся инструкции по разблокировки этих HLP-файлов путем изменения раздела реестра. Если компьютер находится в управляемой среде, не следуйте этим инструкциям без предварительного консультации с ИТ-отделом. ИТ-отделы могут не включать макросы повторно или повторно включить их с помощью групповых политик.

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

Предупреждение В этой статье содержатся сведения о том, как обойти проблемы, вызванные изменениями в этом выпуске справки Windows. Однако корпорация Майкрософт не дает никаких конкретных рекомендаций о том, какие разделы реестра и какие значения являются правильными для вашей уникальной среды. Если вы используете управляемую среду, ИТ-отдел лучше всего оценит, как оценить преимущества этих обходных решений от рисков их использования. Более безопасный курс — не использовать обходные пути реестра.

Примечание Для выполнения действий, описанных в этой задаче, необходимо войти на компьютер с помощью учетной записи администратора. Используя учетную запись администратора, вы можете внести изменения на компьютере, которые нельзя внести с помощью другой учетной записи, например стандартной учетной записи.

Чтобы войти в систему с помощью учетной записи администратора, необходимо знать пароль для учетной записи администратора на компьютере. Если вы выполняете эти действия на личном компьютере, скорее всего, вы уже выполнили вход с помощью учетной записи администратора. Если вы выполняете эти действия на рабочем компьютере, может потребоваться обратиться за помощью к системному администратору.

Разблокировка HLP-файлов вручную, хранящихся в интрасети на одном компьютере

Важно

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

Чтобы разблокировать HLP-файлы после установки WinHelp32.exe, выполните следующие действия.

  1. Войдите с помощью учетной записи администратора.

  2. Нажмите клавишу Windows +R, введите regedit и нажмите кнопку » ОК».
    Значок уведомления если появится запрос на ввод пароля администратора или подтверждение, введите пароль или нажмите кнопку «Продолжить».

  3. В 32-разрядных выпусках Windows найдите и выберите следующий подраздел реестра:

    HKEY_LOCAL_MACHINESOFTWAREMicrosoft
    В 64-разрядных выпусках Windows найдите и выберите следующий подраздел реестра:

    HKEY_LOCAL_MACHINESOFTWAREWow6432NodeMicrosoft

  4. В меню «Правка » наведите указатель мыши на пункт «Создать» и нажмите кнопку » Ключ».

  5. Введите WinHelp и нажмите клавишу ВВОД.

  6. Щелкните ключ WinHelp .

  7. В меню «Правка » наведите указатель мыши на пункт «Создать» и выберите значение DWORD (32-разрядное значение).

  8. Введите AllowIntranetAccess и нажмите клавишу ВВОД.

  9. В меню «Правка » нажмите кнопку «Изменить».

  10. В поле данных «Значение» введите 1, щелкните шестнадцатеричное значение в базовой области и нажмите кнопку «ОК«.

  11. Закройте редактор реестра.

Записи реестра и групповые политики для администраторов сети

Предупреждение Это решение может сделать компьютер или сеть более уязвимыми для атак злоумышленников или вредоносных программ, таких как вирусы. Мы не рекомендуем использовать это решение, но предоставляем эти сведения, чтобы вы могли реализовать это решение по собственному усмотрению. Используйте это решение на свой риск.

Предупреждение В этой статье содержатся сведения о том, как обойти проблемы, вызванные изменениями в этом выпуске справки Windows. Однако корпорация Майкрософт не предоставляет никаких конкретных рекомендаций о том, какие разделы реестра и какие значения являются правильными для вашей организации. Ваш ИТ-отдел лучше всего оценивает преимущества этих обходных решений от рисков их использования. Более безопасный курс — не использовать обходные пути реестра.

Скачивание WinHlp32.exe содержит групповая политика параметров и записей реестра для решения двух известных проблем в этом выпуске справки Windows. Используя следующие параметры групповая политика или записи реестра, администраторы сети и отдельные пользователи могут повторно включить макросы и разблокировать HLP-файлы, хранящиеся на сайтах интрасети. Параметры локального групповая политика и текущего пользователя групповая политика предоставляются в качестве обходного решения для каждой функции. Для управления каждым компонентом можно также использовать параметр реестра пользователей.

Для каждой функции приоритет имеет следующий порядок:

  • Локальные компьютеры групповая политика

  • Текущее пользовательское групповая политика

  • Параметр реестра пользователей

Если политика для функции не задана, а параметр реестра пользователей для этой функции не задан, функции будут вести себя так, как описано в разделе «Известные проблемы».

Важно В этом разделе, методе или задаче содержатся инструкции по изменению реестра. Однако при неправильном изменении реестра могут возникнуть серьезные проблемы. Поэтому убедитесь, что вы тщательно выполните эти действия. Чтобы добавить защиту, создайте резервную копию реестра перед его изменением. Затем можно восстановить реестр в случае возникновения проблемы. Чтобы получить дополнительные сведения о резервном копировании и восстановлении реестра, щелкните следующий номер статьи, чтобы просмотреть статью в базе знаний Майкрософт:

322756 Резервное копирование и восстановление реестра в Windows

  • Включение макросов

    Администраторы сети могут использовать параметр «Разрешить программные макросы» в WinHlp32.exeгрупповая политика, чтобы включить или отключить макросы в HLP-файлах. Администраторы могут использовать консоль групповая политика управления (GPMC) для управления этим групповая политика параметрами. Дополнительные сведения о групповая политика см. в разделе «Ссылки».

    Если не задан ни локальный компьютер групповая политика ни текущий пользователь групповая политика для этой функции, пользователи могут изменить параметр реестра пользователей для этой функции, чтобы включить или отключить макросы в HLP-файлах. Чтобы изменить этот параметр, пользователям необходимо сначала добавить в реестр следующий новый подраздел:

    HKEY_LOCAL_MACHINESOFTWAREMicrosoftWinHelp Затем пользователи должны добавить значение DWORD с именем AllowProgrammaticMacros в этот подраздел. Если для AllowProgrammaticMacros задано значение 1, макросы будут включены. Если задано значение 0, макросы будут отключены. Если это значение реестра не существует, макросы будут отключены.

  • Как разблокировать HLP-файлы, хранящиеся в интрасети

    Сетевые администраторы могут использовать разрешение WinHlp32.exe для доступа к HLP-файлам, хранящимся на сайтах интрасети групповая политика, чтобы разблокировать HLP-файлы, хранящиеся в интрасети. Администраторы могут использовать GPMC для управления этим групповая политика настройки. Дополнительные сведения о групповая политика см. в разделе «Ссылки».

    Если ни один групповая политика для этой функции не задан, пользователи могут изменить параметр реестра пользователей для этой функции, чтобы заблокировать или разблокировать HLP-файлы, хранящиеся на сайтах интрасети. Чтобы изменить этот параметр, пользователям необходимо сначала добавить в реестр следующий новый подраздел:

    HKEY_LOCAL_MACHINESOFTWAREMicrosoftWinHelp Затем пользователи должны добавить значение DWORD с именем AllowIntranetAccess в этот подраздел. Если для AllowIntranetAccess задано значение 1, будут доступны HLP-файлы, хранящиеся на сайтах интрасети. Если значение равно 0, HLP-файлы, хранящиеся на сайтах интрасети, будут заблокированы. Если это значение реестра не существует, HLP-файлы, хранящиеся на сайтах интрасети, будут заблокированы.

Помощь поставщикам содержимого, которые выпускают HLP-файлы

Начиная с Windows Vista старый компонент справки (WinHlp32.exe) заменяется новым компонентом справки, который добавляет дополнительные функциональные возможности для более новых версий Windows.

Технология WinHlp32.exe не будет поддерживаться в ее текущей форме в будущих выпусках Windows. Поэтому настоятельно рекомендуется, чтобы разработчики программного обеспечения больше не используют эту программу справки Windows. Разработчикам программного обеспечения, которые выпускают программы, использующие HLP-файлы, рекомендуется перевести свои системы справки на альтернативный формат файла справки, например CHM, .html или .xml. Кроме того, им придется изменить свои вызовы с API WinHelp на новый источник содержимого. Доступно несколько сторонних средств, помогающих разработчикам программного обеспечения преобразовывать содержимое справки из одного формата в другой.

Обратите внимание, что Windows Vista, Windows 7, Windows Server 2008 и Windows Server 2008 R2 по-прежнему WinHelp.exe для 16-разрядных HLP-файлов. Программа WinHelp.exe — это версия справки Windows для 16-разрядных HLP-файлов.

Ссылки

Обновлено Июнь 2023: остановите эти сообщения об ошибках и устраните распространенные проблемы с помощью этого инструмента. Получить сейчас в эту ссылку

  1. Скачайте и установите программного обеспечения.
  2. Он просканирует ваш компьютер на наличие проблем.
  3. Затем инструмент исправить проблемы которые были найдены.

runtime error 1004 - macro cannot be executed in Excel

MS Excel — очень популярная программа для работы с электронными таблицами, которая используется во всем мире для хранения, организации и обработки данных. Он используется как в личных, так и в профессиональных целях и доступен в двух расширениях: XLS и XLSX. Но в дополнение к своей популярности он оказывается поврежденным и из-за этого начинает выдавать ошибку 1004 во время выполнения.

Ошибка Excel 1004 — одна из тех раздражающих ошибок времени выполнения, которые чаще всего возникают при работе с файлом Excel. Или когда вы пытаетесь создать макрос в документе Excel, из-за чего вы не можете ничего делать в книге.

Эта ошибка может вызвать серьезные проблемы при работе с приложениями Visual Basic и привести к сбою программы или системы или, в некоторых случаях, к зависанию на некоторое время. Эта ошибка возникает во всех версиях MS Excel, таких как Excel 2007/2010/2013/2016/2019.

Здесь, в этой статье, мы обсудим эту распространенную ошибку выполнения 1004 в Excel 2019, 2016, 2013 и более ранних версиях.

What is the cause of execution error 1004 - macro cannot be executed in Excel

Если вы хотите знать, как правильно исправить ошибку выполнения 1004 в Excel, вам необходимо понять причины этой проблемы. Основные причины следующие.

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

Конфликт файлов: Когда вы открываете файл Excel VBA, он конфликтует с другими программами.

Слишком много записей легенды: Диаграмма Excel содержит больше записей легенды, чем места для отображения записей легенды на диаграмме.

Поврежденный файл Excel: ваши файлы .xls были повреждены, заражены или повреждены.

Чтобы устранить ошибку времени выполнения 1004 — макрос не может быть выполнен в Excel

Обновлено: июнь 2023 г.

Этот инструмент настоятельно рекомендуется, чтобы помочь вам исправить вашу ошибку. Кроме того, этот инструмент обеспечивает защиту от потери файлов, вредоносных программ и аппаратных сбоев, а также оптимизирует работу вашего устройства для достижения максимальной производительности. Если у вас уже есть проблема с компьютером, это программное обеспечение может помочь вам решить ее и предотвратить повторение других проблем:

  • Шаг 1: Установите инструмент восстановления и оптимизации ПК. (Виндовс 10, 8, 7, ХР, Виста).
  • Шаг 2: Нажмите Начать сканирование чтобы определить, какие проблемы вы испытываете с вашим компьютером.
  • Шаг 3: Нажмите Починить всечтобы решить все проблемы.

download

To resolve runtime error 1004 - macro cannot be executed in Excel

Включите параметр «Доверять доступ к объектной модели проекта VBA»

  1. Первое, что вам нужно сделать, это открыть параметры Excel, что очень просто.
  2. Просто откройте Microsoft Excel, затем нажмите «Файл» и выберите «Настройки».
  3. В разделе «Настройки» нажмите «Центр управления безопасностью», а затем нажмите «Настройки центра управления безопасностью».
  4. Сразу же вы должны увидеть раздел «Параметры доверия». Оттуда выберите Настройки макроса.
  5. Наконец, нажмите «Доверять доступу к объектной модели проекта VBA», затем нажмите кнопку «ОК», и все готово.

Проверка на вредоносное ПО

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

Microsoft Defender — отличный инструмент для этой задачи, но если он вам не подходит, мы рекомендуем использовать бесплатный автономный сканер вредоносных программ.

ОДОБРЕННЫЙ: Чтобы исправить ошибки Windows, нажмите здесь.

Часто задаваемые вопросы

  1. Удалите файлы GWXL97.XLA.
  2. Проверьте доверенный доступ к объектной модели проекта VBA.
  3. Создайте еще один шаблон Excel.
  4. Восстановите поврежденный файл Excel.
  1. Зайдите в диспетчер задач и остановите все запущенные программы.
  2. Затем перейдите в меню «Пуск» -> и выберите «Панель управления».
  3. Затем выберите «Добавить или удалить программу» на панели управления.
  4. Здесь получите список программ, установленных в данный момент на вашем компьютере, затем выберите Microsoft Word из списка.
  1. Щелкните Microsoft Office, затем щелкните Параметры Excel.
  2. Щелкните Центр управления безопасностью.
  3. Щелкните Настройки центра управления безопасностью.
  4. Нажмите «Настройки макроса».
  5. Установите флажок Настроить доступ к объектной модели проекта VBA.

Ошибка выполнения «1004» — программный доступ к проекту Visual Basic ненадежен (Mac). Эта ошибка возникает в Office 2016 или Office 2019 в версии для Mac. Эта ошибка вызвана тем, что Microsoft добавила параметр безопасности в настройки Office.

Сообщение Просмотров: 764

Возможно, вам также будет интересно:

  • Ошибка выполнения запроса к сервису рпу что делать
  • Ошибка выполнения макрокоманды 2950 в ms access 2007
  • Ошибка выпуска сертификата выпуск сертификата завершился неудачей
  • Ошибка выполнения запроса к серверу слк
  • Ошибка выполнения команды регистрация вики принт 57ф

  • Понравилась статья? Поделить с друзьями:
    0 0 голоса
    Рейтинг статьи
    Подписаться
    Уведомить о
    guest

    0 комментариев
    Старые
    Новые Популярные
    Межтекстовые Отзывы
    Посмотреть все комментарии