Не удается найти проект или библиотека все вылетает - PullRequest
0 голосов
/ 14 февраля 2019

У меня есть несколько файлов Excel, которые обновляются с помощью макроса, и мастер-файл для управления открытием другого.В главном файле есть макрос Auto_Open, который открывает каждый документ, запускает макрос в документе, а затем закрывает его.Макрос каждого документа по существу обновляет все запросы внутри и сохраняет документ в двух разных местах.В довершение ко всему, я использую планировщик задач Window, чтобы открывать мастер-документ каждые два часа, начиная весь процесс.

Обычно это работает довольно хорошо.Тем не менее, я иногда получаю сообщение об ошибке, в котором говорится: «Не удается найти проект или библиотеку».Это происходит на первый взгляд случайным образом и каждый раз с другим документом (хотя никогда не с мастер-документом).Как только эта ошибка появляется, Excel полностью падает каждый раз, когда я пытаюсь открыть окно VBA.Макрос в указанном документе больше не будет запускаться с помощью макроса Auto_Open главного файла, и я должен воссоздать указанный документ с нуля.

Я попытался найти библиотеку в соответствии с предложением Microsoft (https://docs.microsoft.com/en-us/office/vba/Language/Reference/User-Interface-Help/can-t-find-project-or-library)но безрезультатно. Открытие окна VBA в уязвимом файле приводит к немедленному аварийному завершению, а после выполнения действий, описанных в статье выше, для незатронутого файла ничего не выявляется. Сбой возвращает следующий текст ошибки:

Подпись проблемы:

Название проблемы: APPCRASH

Имя приложения: EXCEL.EXE

Версия приложения: 16.0.11231.20130

Метка времени приложения: 5c518be9

Имя модуля неисправности: VBE7.DLL

Версия модуля неисправности: 0.0.0.0

Метка времени модуля неисправности: 5c064824

Код исключения: c0000005

Смещение исключения: 00000000000b555a

Версия ОС: 6.3.9600.2.0.0.272.7

Идентификатор локали: 1033


Код в основном файле:

Sub Auto_Open()

Application.Wait (Now + TimeValue("0:00:10"))

Application.Calculation = xlCalculationManual

Workbooks.Open ("C:\Users\aowens\Desktop\Queries\ATSReports\ATSReports.xlsm")
Application.Run "'C:\Users\aowens\Desktop\Queries\ATSReports\ATSReports.xlsm'!Macro"
Workbooks("ATSReports.xlsm").Close False

Workbooks.Open ("C:\Users\aowens\Desktop\Queries\MiscLookups\MiscLookups.xlsm")
Application.Run "'C:\Users\aowens\Desktop\Queries\MiscLookups\MiscLookups.xlsm'!Macro"
Workbooks("MiscLookups.xlsm").Close False

(этот шаблон повторяется для5 других файлов)

Пример макроса в одном файле:

Sub Macro()

Dim errorcount
Dim broken
Dim this As Date

this = now()
errorcount = 0

On Error Resume Next

ThisWorkbook.Connections("Query - MasterROCL").Refresh
If Err <> 0 Then
errorcount = errorcount + 1
broken = broken & " ROCL"
End If
Err = 0

ThisWorkbook.Connections("Query - MasterRMEL").Refresh
If Err <> 0 Then
errorcount = errorcount + 1
broken = broken & " RMEL"
End If
Err = 0

ThisWorkbook.Connections("Query - MasterRHIL").Refresh
If Err <> 0 Then
errorcount = errorcount + 1
broken = broken & " RHIL"
End If
Err = 0

ThisWorkbook.Connections("Query - MasterREXH").Refresh
If Err <> 0 Then
errorcount = errorcount + 1
broken = broken & " REXH"
End If
Err = 0

Calculate

ThisWorkbook.Save
Application.DisplayAlerts = False
ThisWorkbook.SaveAs ("R:\Operations\Dashboards\Queries\ATSReports.xlsm")

Dim OutApp As Object
Dim OutMail As Object

Set OutApp = CreateObject("Outlook.Application")
Set OutMail = OutApp.CreateItem(0)

With OutMail
.to = "aowens@explorenetwork.org"
.Subject = errorcount & " Errors for " & Format(now(), "MM/DD HH:MM") & " ATS Refresh"
.htmlBody = " ~ " & Round(1440 * (TimeValue(now()) - TimeValue(this)), 0) & " mins. Broken:" & broken
.Send
End With

End Sub
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...