Excel 문제 "excel 4.0 함수가 정의된 이름으로 저장됨"
이 문제를 분리하려고 합니다.
Excel 4.0 함수는 정의된 이름으로 저장됩니다.

오래된 틀에 박힌 것은 아니지만, 저도 같은 문제가 있었고 다른 사람들이 저와 같은 일을 겪을 경우를 대비해 제 결심을 올리고 싶었습니다.
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
'programing' 카테고리의 다른 글
| MS Excel에서 열지 않고 Excel 파일의 VBA 매크로(또는 vbaProject.bin) 읽기 (0) | 2023.05.31 |
|---|---|
| 루비의 더블콜론::는? (0) | 2023.05.31 |
| 중단된 쿼리 종료( 트랜잭션의 유휴 상태) (0) | 2023.05.31 |
| 부울을 정수로 캐스팅하면 -1이 참입니까? (0) | 2023.05.21 |
| 예외.메시지 대 예외.문자열로() (0) | 2023.05.21 |