24

我正在尝试隔离导致的问题

Excel 4.0 函数存储在定义的名称中。

保存期间的 Excel 问题

4

9 回答 9

45

不要碰旧线程,但我也遇到了同样的问题,并想发布我的解决方案,以防其他人遇到与我相同的事情。

我的问题最终是由 MySQL Workbench 包中包含的一个组件 MySQL Excel COM 插件引起的。禁用该插件会导致宏提示在保存电子表格时消失。

于 2015-02-26T14:32:45.083 回答
13

对我来说,这条消息是由 MySQL For Excel COM 加载项引起的。当我卸载 COM 加载项时,该消息停止出现。

于 2014-11-12T10:51:26.977 回答
6

已经指出的解决方案是正确的:禁用 MySQL for Excel COM 插件。

该消息的原因是此加载项将隐藏名称添加到工作簿。这些名称在 Excel 名称管理器中不可见。但是,如果将此代码添加到工作簿模块,则可以在 VBA 直接窗口中看到它们:

Public Sub DEV_CheckNames()

Dim n As name
For Each n In ActiveWorkbook.Names
    If Not n.Visible Then
        Debug.Print n.NameLocal, n.RefersToLocal
        'If you want to delete the name, uncomment this line:
        'n.Delete  
    End If
Next
End Sub

结果(对于 Excel 2013 的德国实例):

LOCAL_DATE_SEPARATOR        =INDEX(ARBEITSBEREICH.ZUORDNEN(37);17)
LOCAL_DAY_FORMAT            =INDEX(ARBEITSBEREICH.ZUORDNEN(37);21)
LOCAL_HOUR_FORMAT           =INDEX(ARBEITSBEREICH.ZUORDNEN(37);22)
LOCAL_MINUTE_FORMAT         =INDEX(ARBEITSBEREICH.ZUORDNEN(37);23)
LOCAL_MONTH_FORMAT          =INDEX(ARBEITSBEREICH.ZUORDNEN(37);20)
LOCAL_MYSQL_DATE_FORMAT     =WIEDERHOLEN(LOCAL_YEAR_FORMAT;4)&LOCAL_DATE_SEPARATOR&WIEDERHOLEN(LOCAL_MONTH_FORMAT;2)&LOCAL_DATE_SEPARATOR&WIEDERHOLEN(LOCAL_DAY_FORMAT;2)&" "&WIEDERHOLEN(LOCAL_HOUR_FORMAT;2)&LOCAL_TIME_SEPARATOR&WIEDERHOLEN(LOCAL_MINUTE_FORMAT;2)&LOCAL_TIME_SEPARATOR&WIEDERHOLEN(LOCAL_SECOND_FORMAT;2)
LOCAL_SECOND_FORMAT         =INDEX(ARBEITSBEREICH.ZUORDNEN(37);24)
LOCAL_TIME_SEPARATOR        =INDEX(ARBEITSBEREICH.ZUORDNEN(37);18)
LOCAL_YEAR_FORMAT           =INDEX(ARBEITSBEREICH.ZUORDNEN(37);19)

在您单击加载项按钮(打开任务窗格)时,这些名称将添加到活动工作簿中。不幸的是,我还没有发现为什么 MySQL 插件有时会自行添加这些名称而没有被激活。

补充:这是 MySQL for Excel 加载项中的一个已知错误,截至http://bugs.mysql.com/bug.php?id=73467

于 2015-04-18T06:57:13.140 回答
4

我在 Excel 2013 中遇到了同样的问题,通过卸载 MySQL 插件解决了这个问题 - 我通过转到文件 - 选项 - 插件来解决这个问题

于 2015-02-10T10:05:50.053 回答
2

创建以下定义的名称后,我遇到了此警告:

姓名: wsNamesArray

指: =RIGHT(GET.WORKBOOK(1),LEN(GET.WORKBOOK(1))-FIND("]",GET.WORKBOOK(1)))

此公式返回一个数组,其中包含工作簿中每个工作表的名称。我用它来返回各种工作表的名称(第一张、最后一张、上一张和下一张)。

问题是这个公式使用了GET.WORKBOOKExcel 4 函数。据我了解,这类似于嵌入在函数中的 VBA 宏。要保存该功能,Excel 工作簿必须以允许宏的格式保存,例如 .xlsm 或 .xlsb(或任何其他几种文件类型)。

我的选择是删除包含 Excel 4 函数的已定义名称,或者将已定义名称替换为没有 Excel 4 函数的公式,

于 2019-11-01T18:02:33.893 回答
1

正如 ChipsLetten 的回答,在我的计算机上使用相同的解决方案:在保存一些(实际上是无宏的)工作簿时,我收到一个警报“Excel 4.0 函数存储在定义的名称中”,以及一个将工作簿保存为“启用宏”的选项。在停用“MySQL for Excel”COM-Add-in 时,警报不再出现。

为了禁用“MySQL for Excel”插件(如果你曾经安装过它):选项卡“开发人员”,然后按钮“COM插件”,你会得到一个插件列表,你可以启用或每个刻度线禁用。

于 2015-01-04T11:52:28.970 回答
0

您是否为 excel 安装了一些连接器?,也许这是导致问题的原因,只需将其卸载,错误就会消失。

于 2014-10-15T20:12:21.320 回答
0

对我来说,在 2020 年,这个问题是由于您想将其保存为.xlsx格式而引起的。它需要保存在一个.xls .xlsm.xlsb文件中,这是启用宏的文件。.xlsm是首选。

于 2020-04-29T16:24:57.470 回答
0

如果您有 domke 咨询的答案中描述的具有隐藏范围的工作表,则可以使用以下代码将其删除:

Public Sub Remove_Hidden_MySQL_Names()

Dim n As Name
For Each n In ActiveWorkbook.Names
    If Not n.Visible Then
        'Delete Names added by MySQL for Excel add-in
        If (InStr(n.NameLocal, "LOCAL_") <> 0 And (InStr(n.NameLocal, "_FORMAT") <> 0 Or _
                                                    InStr(n.NameLocal, "_SEPARATOR") <> 0)) Then
            Debug.Print "Would delete", n.NameLocal, n.RefersToLocal
            'If you want to delete the name, uncomment this line:
            'n.Delete
        Else
                Debug.Print "Keeping", n.NameLocal, n.RefersToLocal
        End If
    End If
Next
End Sub
于 2016-04-06T19:36:33.683 回答