Подтвердить что ты не робот

Проблема Excel "функция excel 4.0, хранящаяся в определенных именах"

Я пытаюсь изолировать проблему, вызывающую

"функция excel 4.0, хранящаяся в определенных именах"

То, что я не могу понять, является причиной этого.

Excel Issue During Save

Эта проблема началась недавно и неспособна выяснить, почему.

4b9b3361

Ответ 1

Не для того, чтобы ударить старый поток, но у меня была такая же проблема, и я хотел опубликовать свое решение, если кто-то еще испытывает то же самое, что и я.

Моя проблема закончилась тем, что была добавлена ​​надстройка MySQL Excel COM, которая была компонентом, включенным в пакет MySQL Workbench. Отключение этого дополнения привело к исчезновению приглашения макроса при сохранении электронных таблиц.

Ответ 2

Для меня это сообщение было вызвано надстройкой MySQL для Excel COM. Сообщение перестало появляться, когда я выгружал надстройку COM.

Ответ 3

Вышеописанное решение является правильным: отключите надстройку MySQL для 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 для Excel по адресу http://bugs.mysql.com/bug.php?id=73467

Ответ 4

У меня такая же проблема в Excel 2013 и была решена путем выгрузки MySQL Add in - я сделал это, перейдя в ФАЙЛ - ОПЦИИ - Добавить Ins

Ответ 5

Как и в ответе ChipsLetten, такое же решение здесь на моем компьютере: при сохранении некоторой (фактически свободной от макрос) книги я получаю предупреждение "Функция Excel 4.0, хранящаяся в определенных именах", и возможность сохранить книгу как "макро- включено". При деактивации COM-надстройки "MySQL for Excel" предупреждение больше не появляется.

Чтобы отключить надстройку "MySQL для Excel" (если вы когда-либо ее установили): вкладка "Разработчик", затем кнопка "Надстройки COM", и вы получите список надстроек, которые вы может включать или отключать каждую отметку.

Ответ 6

Установили ли вы какой-либо разъем для excel?, возможно, что это вызвало проблему, просто удалите ее, и ошибка исчезнет.

Ответ 7

Если у вас есть рабочие листы со скрытыми диапазонами, как описано в ответе domke consulting, вы можете использовать следующий код для их удаления:

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