У меня есть фрагмент кода, который извлекает события календаря из календаря Google, который связан с моим Excel.Он работает отлично, однако каждый раз, когда я добавляю код для обновления определенного листа («Календарь»), сохранения и закрытия.В следующий раз, когда я снова открою файл, мне будет предложено следующее сообщение: Мы обнаружили проблему с некоторым содержимым в .xlsm.Вы хотите, чтобы мы попытались восстановить столько, сколько мы можем?Если вы доверяете источнику этой книги, нажмите кнопку «Да».
Обратите внимание, что это происходит только тогда, когда я добавляю: Листы («Календарь»). Вычислить или Application.Calculation = xlAutomatic для книги.Я также попытался ввести флажок, и только если флажок установлен и макрос запущен, лист будет обновлен.Это вызвало ту же ошибку.Когда код вычисления отсутствует, это сообщение не появляется.
Я сбит с толку и не могу найти аналогичную ситуацию, когда причиной является расчет листа.Я ценю любую помощь.
Ни один из кодов не будет потерян или изменен, файл просто выглядит как [Восстановлено]
Sub listlist()
Dim olApp As Object, olNS As Object, olFolder As Object, olApt As Object, NextRow As Long, FromDate As Date, ToDate As Date, z As Integer, num As Integer
Sheets("Calendar").Columns("A:B").ClearContents
num = ActiveSheet.Cells(1, 1).Value - month(Now)
FromDate = WorksheetFunction.EoMonth(Date, 0 + num) + 1
ToDate = WorksheetFunction.EoMonth(Date, 1 + num)
On Error Resume Next
Set olApp = GetObject(, "Outlook.Application")
If Err.Number > 0 Then Set olApp = CreateObject("Outlook.Application")
On Error GoTo 0
Set olNS = olApp.GetNamespace("MAPI")
Set olFolder = olNS.Folders("Internet Calendars").Folders("Calend")
NextRow = 2
With Sheets("Calendar")
.Range("A1:C1").Value = Array("Project", "Date", "First Trim")
For Each olApt In olFolder.Items
If (olApt.Start >= FromDate And olApt.Start <= ToDate) Then
.Cells(NextRow, "A").Value = olApt.subject
.Cells(NextRow, "B").Value = CDate(olApt.Start)
NextRow = NextRow + 1
Else
End If
Next olApt
.Columns.AutoFit
End With
Set olApt = Nothing
Set olFolder = Nothing
Set olNS = Nothing
Set olApp = Nothing
'Sort
Dim Lastrow As Integer
Lastrow = Sheets("Calendar").Cells(Rows.Count, 1).End(xlUp).Row
Worksheets("Calendar").Sort.SortFields.Add2 Key:=Range("B2").End(xlDown) _
, SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
With Worksheets("Calendar").Sort
.SetRange Range(Cells(1, 1), Cells(Lastrow, 3))
.Header = xlYes
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With
Sheets("Calendar").Calculate
'Update Meeting dates
z = 3
For j = 2 To 20
If Sheets("Calendar").Cells(j, 5).Value <> "" Then
For I = 2 To 160
If Sheets("Consultants").Cells(I, 15).Value = Sheets("Calendar").Cells(j, 5).Value Then
For h = 9 To 160
If Sheets("Consultants").Cells(I, 1).Value = ActiveSheet.Cells(h, 2).Value Then
ActiveSheet.Cells(h, 4).Value = Sheets("Calendar").Cells(j, 2).Value
Exit For
End If
Next h
End If
Next I
End If
Next j
End Sub