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.WORKBOOK
Excel 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 |