为什么每次自动计算工作表时都会收到"We found a problem with some content in '.xlsm'"消息?



我有一个代码,该代码正在从Google日历中提取日历事件,该日历连接到我的Excel。它运行完美,但是每当我添加代码以更新特定表("日历")时,保存并关闭。下次我再次打开文件时,我会提示以下消息:我们在" .xlsm"中发现了一些内容的问题。您是否希望我们尝试尽可能多地恢复?如果您信任此工作簿的来源,请单击"是"。

请注意,仅当我添加:sheet("日历")。计算或应用程序。计算= 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

我通过使用@funthomas的建议来解决此问题。我从头开始启动了工作簿,并做了以下操作:

- 通过VBA投入的公式,而不是将牢固的单元格留在excel中 - 更换的清除列A&amp;B清除所有单元,因为我知道手动输入公式

这样做,我无需再计算工作表。我没有测试实施在工作簿中计算的,我不想冒险损坏任何事情。

相关内容

最新更新