Подскажите пожалуйста как победить ошибку "Run-time error '1004': Application-defined or object-defined error"
На рабочем компе есть макрос который отлично работает уже как год без каких либо проблем, его цель, открыть excel обновить все данные далее сохранить данные в PDF и сделать рассылку по почте, все это происходит ежедневно по утрам.
Так вот в 2023 году начала лезть эта ошибка, причем сам макрос полностью выполняется, а ошибка вылетает при закрытии excel файла. И если в выходные дни у меня этот файл в 2022 отрабатывался полностью на автомате, то теперь всплывает эта ошибка с которой нужно согласиться и только после этого файл excel закрывается.
Помогите пожалуйста, кто сталкивался, как это вылечить, заранее спасибо!
Код
Private Sub Workbook_Open()
Call MyMacro
Application.DisplayAlerts = False
If Application.Workbooks.Count = 1 Then
Application.Quit
End If
End Sub
__________________________________________________________________________________________________
Sub MyMacro()
ThisWorkbook.RefreshAll
ThisWorkbook.Save
Call MyMacro1
End Sub
___________________________________________________________________________________________________
Sub MyMacro1()
Sheets(Array("Свод")).Select
Sheets("Свод").Activate
ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:= _
"Z:\Common\Отчеты к КБ\2022\Для рассылки PDF\Daily report.pdf", Quality:=xlQualityStandard, _
IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:=False
Sheets("Свод").Select
Range("A1").Select
Dim objOutlookApp As Object, objMail As Object
Dim sTo As String, sSubject As String, sBody As String, sAttachment As String
On Error Resume Next
Set objOutlookApp = GetObject(, "Outlook.Application")
Err.Clear
If objOutlookApp Is Nothing Then
Set objOutlookApp = CreateObject("Outlook.Application")
End If
objOutlookApp.Session.Logon
Set objMail = objOutlookApp.CreateItem(0)
If Err.Number <> 0 Then
Set objOutlookApp = Nothing: Set objMail = Nothing
MsgBox "Не удалось создать новое сообщение"
Exit Sub
End If
sTo = Range("B225").Value
sSubject = "Daily report"
sBody = "Daily report"
sAttachment = "Z:\Common\Отчеты к КБ\2022\Для рассылки PDF\Daily report.pdf"
With objMail
.To = sTo
.CC = ""
.BCC = ""
.Subject = sSubject
.Body = sBody
.Attachments.Add sAttachment
.Save
.Send
End With
Set objOutlookApp = Nothing: Set objMail = Nothing
End Sub
Подскажите пожалуйста, цель следующая, есть файл с паролем на редактирование, необходимо, чтобы он открывался по времени под паролем для правки, далее обновлял все внешние и внутренние подключения, сохранялся и закрывался, у меня получилось так, но не очень работает:
Код
Sub MyMacro()
Application.ScreenUpdating = False
Set wb = ThisWorkbook
Workbooks.Open Filename:= _
"C:\Users\ЯЯЯЯЯЯЯЯЯ\Desktop\Òåñò_äëÿ_îáíîâëåíèÿ_ñ_ïàðîëåì.xlsm", Password:="12345", WriteResPassword:="12345"
Set wb1 = ActiveWorkbook
wb.Activate
ActiveWorkbook.RefreshAll
wb.Save
wb1.Close
Application.ScreenUpdating = True
End Sub
При запуске он все равно запрашивает у меня пароль для входа в файл для редактирования, хотя в макросе я его учел, вот не могу понять как это исправить.
Как в сводной таблице Excel показать последние 14 дат, по дням, при условии, что таблица ежедневно обновляется и эти 14 дат должны смещаться с учетом новой даты!
Как в сводной таблице Excel показать последние 14 дат, по дням, при условии, что таблица ежедневно обновляется и эти 14 дат должны смещаться с учетом новой даты!
Подскажите пожалуйста, возможно у кого-то были подобные кейсы
Сохраняю из Excel в PDF данных ровно на три листа PDF, но плюсом добавляются еще два пустых листа, как от них избавиться?, Импорт из Excel в PDF, как удалить пустые дополнительные листы
Помогите пожалуйста доработать макрос, сейчас он работает при открытом файле Excel так: (по времени обновляет связи, далее сохраняет файл и параллельно сохраняет данные в PDF и далее делает рассылку PDF файла по почте).
Есть необходимость его усовершенствовать, таким образом, чтобы закрытый файл Excel открылся по расписанию, далее все процедуры описанные выше, и далее закрытие файла, и так, чтобы этот цикл повторялся ежедневно.
Заранее Вам спасибо за любую помощь!
Сейчас имею следующий код, который обрабатывает процедуры описанные выше:
Код
Sub MyMacro()
ThisWorkbook.RefreshAll
ThisWorkbook.Save
ThisWorkbook.ExportAsFixedFormat Type:=xlTypePDF, Filename:="Z:\Common\Отчеты к КБ\2022\Для рассылки PDF\Ежедневный отчет.pdf", OpenAfterPublish:=False
Call MyMacro1
Call NextRun
End Sub
Sub MyMacro1()
Sheets(Array("Свод")).Select
Sheets("Свод").Activate
ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:= _
"Z:\Common\Отчеты к КБ\2022\Для рассылки PDF\Ежедневный отчет.pdf", Quality:=xlQualityStandard, _
IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:=False
Sheets("Свод").Select
Range("A1").Select
Dim objOutlookApp As Object, objMail As Object
Dim sTo As String, sSubject As String, sBody As String, sAttachment As String
On Error Resume Next
Set objOutlookApp = GetObject(, "Outlook.Application")
Err.Clear
If objOutlookApp Is Nothing Then
Set objOutlookApp = CreateObject("Outlook.Application")
End If
objOutlookApp.Session.Logon
Set objMail = objOutlookApp.CreateItem(0)
If Err.Number <> 0 Then
Set objOutlookApp = Nothing: Set objMail = Nothing
MsgBox "Не удалось создать новое сообщение"
Exit Sub
End If
sTo = Range("L49").Value
sSubject = "Ежедневный отчет PDF"
sBody = "Ежедневный отчет PDF"
sAttachment = "Z:\Common\Отчеты к КБ\2022\Для рассылки PDF\Ежедневный отчет.pdf"
With objMail
.To = sTo
.CC = ""
.BCC = ""
.Subject = sSubject
.Body = sBody
.Attachments.Add sAttachment
.Save
.Send
End With
Set objOutlookApp = Nothing: Set objMail = Nothing
Call NextRun
End Sub
Sub NextRun()
TimeToRun = TimeValue("12:04:00")
Application.OnTime TimeToRun, "MyMacro"
End Sub
Sub Start()
Call NextRun
End Sub
Sub Finish()
Application.OnTime TimeToRun, "MyMacro", , False
End Sub
Подскажите пожалуйста, что не хватает в моем макросе для обновления и сохранения по времени Excel, и после, сохранения в PDF файл, буду очень Вам признателен! Так как сейчас он только сохраняет файл и обновляет в Excel, но не сохраняет в PDF! Заранее Всем Спасибо!
Код
Sub MyMacro()
ThisWorkbook.RefreshAll
ThisWorkbook.Save
Call NextRun
End Sub
Sub NextRun()
TimeToRun = TimeValue("21:40:00")
Application.OnTime TimeToRun, "MyMacro"
End Sub
Sub MyMacro1()
Sheets(Array("Свод")).Select
Sheets("Свод").Activate
ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:= _
"Z:\Common\Отчеты к КБ\2022\Для рассылки PDF\Ежедневный отчет.pdf", Quality:=xlQualityStandard, _
IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:= _
False
Sheets("Свод").Select
Range("A1").Select
End Sub
Sub Start()
Call NextRun
End Sub
Sub Finish()
Application.OnTime TimeToRun, "MyMacro", , False
End Sub