programing

Excel 문제 "excel 4.0 함수가 정의된 이름으로 저장됨"

batch 2023. 5. 31. 18:30
반응형

Excel 문제 "excel 4.0 함수가 정의된 이름으로 저장됨"

이 문제를 분리하려고 합니다.

Excel 4.0 함수는 정의된 이름으로 저장됩니다.

저장 중 Excel 문제 발생

오래된 틀에 박힌 것은 아니지만, 저도 같은 문제가 있었고 다른 사람들이 저와 같은 일을 겪을 경우를 대비해 제 결심을 올리고 싶었습니다.

MySQL Workbench 패키지에 포함된 구성 요소인 MySQL Excel COM 추가 기능으로 인해 문제가 발생했습니다.해당 추가 기능을 사용하지 않도록 설정하면 스프레드시트를 저장할 때 매크로 프롬프트가 사라집니다.

나에게 이 메시지는 MySQL For Excel COM Add-In으로 인해 발생했습니다.COM Add-In을 언로드했을 때 메시지가 나타나지 않았습니다.

이미 지적한 솔루션이 맞습니다. MySQL for Excel COM Add-in을 비활성화합니다.

메시지가 표시되는 이유는 이 추가 기능이 워크북에 숨겨진 이름을 추가하기 때문입니다.이러한 이름은 Excel 이름 관리자에 표시되지 않습니다.그러나 이 코드를 워크북 모듈에 추가하면 VBA Direct 창에서 볼 수 있습니다.

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 애드인이 활성화되지 않은 상태에서 자동으로 이러한 이름을 추가하는 이유를 아직 찾지 못했습니다.

추가됨: 이 버그는 http://bugs.mysql.com/bug.php?id=73467 기준으로 MySQL for Excel add-in에서 알려진 버그입니다.

Excel 2013에서도 동일한 문제가 있으며 MySQL Addin을 언로드하여 해결되었습니다. 파일 - OPTIONS - AddIns로 이동하여 이 작업을 수행했습니다.

다음 정의된 이름을 만든 후 이 경고가 발생했습니다.

이름:wsNamesArray

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

이 수식은 워크북의 각 시트 이름이 포함된 배열을 반환합니다.여러 시트(첫 번째, 마지막, 이전 및 다음 시트)의 이름을 반환하는 데 사용했습니다.

문제는 이 공식이 다음을 사용한다는 것입니다.GET.WORKBOOKExcel 4.제가 이해한 바로는 이것은 함수에 내장된 VBA 매크로와 같은 것입니다.이 기능을 저장하려면 Excel 워크북을 .xlsm 또는 .xlsb와 같은 매크로를 허용하는 형식으로 저장해야 합니다.

나의 선택은 Excel 4 함수를 포함하는 정의된 이름을 삭제하거나 정의된 이름을 Excel 4 함수를 포함하지 않는 수식으로 대체하는 것이었습니다.

ChipsLetten의 대답처럼, 여기 내 컴퓨터에서도 동일한 솔루션이 있습니다.일부(실제로 매크로가 없는) 워크북을 저장할 때 "Excel 4.0 함수가 정의된 이름으로 저장됨" 경고와 워크북을 "매크로 사용 가능"으로 저장하는 옵션이 표시됩니다.MySQL for Excel COM-Add-in을 비활성화하면 경고가 더 이상 나타나지 않습니다.

MySQL for Excel 추가 기능을 비활성화하려면(설치한 적이 있는 경우):"개발자"를 누른 다음 "COM 추가 기능"을 누르면 눈금 표시별로 활성화하거나 비활성화할 수 있는 추가 기능 목록이 표시됩니다.

Excel용 커넥터를 설치했습니까? 문제의 원인일 수 있습니다. 제거만 하면 오류가 사라집니다.

domake 컨설팅의 답변에 설명된 대로 숨겨진 범위가 있는 워크시트가 있는 경우 다음 코드를 사용하여 워크시트를 제거할 수 있습니다.

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

저는 2020년에 이 문제가 발생했습니다. 왜냐하면 당신이 그것을 저장하기를 원하기 때문입니다..xlsx서식을 정하다저장해야 합니다..xls .xlsm또는.xlsb파일, 즉 매크로 사용 파일입니다. .xlsm기본 옵션입니다.

언급URL : https://stackoverflow.com/questions/26087354/excel-issue-excel-4-0-function-stored-in-defined-names

반응형