Excel工作簿在模块中包含以下VBA宏,并在多个单元格中调用它以生成值 .

共享工作簿时(“审阅” - >“共享工作簿”),打开工作簿时会显示带有“自动化错误”的消息框,除了从任务管理器中删除Excel进程外,用户无法执行任何操作 .

无论工作簿是否已由其他人打开,Excel 2013都会发生这种情况 .

我唯一的解决方案是从工作簿中删除VBA代码并存储在外部XLAM加载项中,如建议here . 出于几个原因,我不想这样做 . 顺便说一句,我已经尝试过这个解决方案,并且每次打开工作簿时都会显示一条消息,指出无法更新某些链接 .

你知道是否有办法避免这种“自动化错误”消息?也许它与宏名称,VBA项目中的一些引用或其他任何内容有关?

Public Function OutFileName(OutType As String, OutNum As String) As String
 ' This function generates a filename from a file type and number

    Dim TempStr As String
    Dim i As Integer

    TempStr = LCase(Left(OutType, 1)) & OutNum

    ' If number begins with &, we directly go to the end of the macro
    If Left(OutNum, 1) = "&" Then
        GoTo EndOfMacro
    End If

    ' If it ends with a point and a digit, add a zero before the digit
    If Mid(TempStr, Len(TempStr) - 1, 1) = "." Or Mid(TempStr, Len(TempStr) - 1, 1) = "-" Then
        TempStr = Left(TempStr, Len(TempStr) - 1) & "0" & Right(TempStr, 1)
    End If


    ' Replace "." and "-" by underscore after "-"
        For i = Len(TempStr) To 1 Step -1
         If Mid(TempStr, i, 1) = "." Then
            TempStr = Left(TempStr, i - 1) & "_" & Right(TempStr, Len(TempStr) - i)
        End If
        If Mid(TempStr, i, 1) = "-" Then
            TempStr = Left(TempStr, i - 1) & "_" & Right(TempStr, Len(TempStr) - i)
            Exit For
        End If
    Next

    ' Delete other points and "-"
    TempStr = Replace(TempStr, ".", "")
    TempStr = Replace(TempStr, "-", "")

EndOfMacro:
    OutFileName = TempStr
End Function