Excel VBA 런타임 오류 '32809' - 이해하려고 합니다.
회사 동료가 매크로 워크북 중 하나를 일부 변경했는데 이제 PC에서만 실행하려고 하면 무서운 런타임 오류 '32809'가 표시됩니다.이 최신 버전은 그의 PC와 우리가 테스트한 다른 동료의 PC에서 정상적으로 실행됩니다.이전 버전은 Excel 2010을 실행하는 모든 PC에서 정상적으로 실행됩니다.
매크로가 "Info"라는 이름의 워크시트 색인 1을 선택하려고 하면 오류가 발생합니다.선택/활성화가 필요하지 않다는 것을 알고 있지만 현재는 이 워크북을 사용하고 있으며, 저만 이 오류가 발생하는 이유를 알고 있습니다.
시도해 본 결과:
- 재부팅/전원 주기
- 워크북 사본 저장
- CCleaner를 사용하여 임시 파일 정리
- 온라인 검색
- ActiveX 컨트롤 확인(폼 컨트롤 사용)
모두 성공하지 못했습니다.그리고 나서 바로 옆 창문에서 약간 엉망진창이 되었고, 간단한 것도 발견했습니다.
Debug.Print ThisWorkbook.Worksheets(1).Name
런타임 오류를 던져 워크시트가 깨졌다고 믿게 만들 수 있습니다.워크시트에 _Activate 및 _Change를 포함한 몇 가지 이벤트를 추가했지만 다음을 확인한 후에도 아무 이벤트도 실행되지 않았습니다.
Application.EnableEvents = True
다음과 같이 간단한 테스트 서브를 추가했습니다.
Public Sub Test()
Dim ws As Worksheet
Dim sheetNum As Integer
For Each ws In ThisWorkbook.Worksheets
ws.Select ' Selects all Sheets Without Error
Debug.Print ws.Name ' Prints All Worksheet Names Fine
Next ws
Set ws = ThisWorkbook.Worksheets(1)
ws.Select ' Selects Sheet 1 Without Error
' Prints all but sheetNum = 1, Run-time Error 32809
For sheetNum = 7 To 1 Step -1
Debug.Print ThisWorkbook.Worksheets(sheetNum).Name
Next sheetNum
' Run-time Error 32809
ThisWorkbook.Worksheets(1).Select
End Sub
일부 PC에서만 이 오류가 발생하는 원인에 대해 알고 있거나 이와 유사한 오류가 발생한 적이 있습니까?
저의 경우 다음과 같은 도움이 되었습니다.
- 파일을 다음 이름으로 저장
.xlsx
- 저장하는 (macro-free) - (macro-free) - (macro-free) - (macro-free) - 합니다.
.xlsx
파일링;파일링; - 파일을 다음 이름으로 저장
.xlsm
전체 다시 컴파일이 수행되었습니다.
그 후 모든 것이 정상적으로 작동하기 시작했습니다.200장 이상의 시트와 50개 이상의 매크로가 있는 파일을 가지고 있었고 각 모듈에 댓글을 달지 못했지만 이 솔루션은 효과가 있었습니다.
저도 이것 때문에 한동안 고생했어요.이는 실제로 12월에 시작되는 Windows Update를 통한 일부 Microsoft Office 업데이트 때문에 발생했습니다.이 문제로 인해 생산성이 몇 시간 동안 손실된 것은 말할 것도 없고 상당한 문제를 야기했습니다.
업데이트 중 하나가 양식을 위반하고 UH soccer에서 명시한 대로 Office 캐시를 삭제해야 합니다.
추가로, 여기에 또 다른 답변 스레드가 있습니다. 갑자기 여러 VBA 매크로 오류가 발생했습니다. 대부분 32809에는 세부 정보가 포함된 MS 블로그 링크가 있습니다.
업데이트 중 다른 하나는 이러한 양식 중 하나를 만들거나 수정하면(양식 데이터를 저장하는 것과 마찬가지로) 스프레드시트의 내부가 업데이트되고, 업데이트 없이 다른 사용자에게 제공되면 위의 오류가 발생하는 또 다른 오류가 발생합니다.
솔루션(같은 스프레드시트에서 다른 사용자와 작업하는 경우)?안타깝게도, 거래하는 모든 사용자에게 사무실 업데이트를 사용하도록 한 다음 사무실 캐시를 지우도록 하거나 시스템 복원을 통해(또는 수동으로 제거하여) 12월 14일 이전 업데이트로 되돌리십시오.
알아요, 별로 해결책이 없겠죠, 그렇죠?저도 행복하지 않아요.
뒷이야기로, 저는 업데이트를 유지하면서 기계를 업데이트했는데, 제가 거래한 회사 중 하나는 업데이트를 하지 않았습니다.크리스마스 직전에 문제를 해결하려고 머리를 뽑다가 복구 지점이 없어져서 결국은 사양하고 다시 포맷했습니다.
한 달 후, 이 회사의 IT 부서는 워크스테이션을 업데이트했습니다.그리고 놀랄 것도 없이, 그들은 이것과 비슷한 문제를 겪기 시작했습니다(내가 그들의 스프레드시트를 받았을 때는 말할 것도 없고, 나도 같은 문제를 겪었습니다).
이제, 우리는 모두 같은 업데이트를 하고 있고, 모든 것이 가능한 한 잘 되어 있습니다.
유사한(거의 설명할 수 없는) 행동을 경험했습니다.
C: 디렉터리에서 .exd 파일 삭제에 대한 참조를 찾았습니다.\Users\사용자 이름\AppData\로컬\Temp Excel 8.0 및 VBE 디렉토리에 각각 하나씩 있습니다.일반적인 이름은 MSForms.exd입니다.
구글 "Exceld" 또는 "KB 2553154" 제가 보기에, 적어도 한 달 동안 있었던 완전히 받아들일 수 없는 상황입니다.
저는 고객을 위한 애플리케이션을 개발하는 동안 이 문제를 겪었습니다.내 기계에서 작업하는 동안 코드/폼 등은 완벽하게 작동했지만 클라이언트 시스템에 로드되었을 때 이 오류는 내 애플리케이션 내의 어느 시점에서 발생했습니다.
이 오류에 대한 해결 방법은 VBA 모듈과 양식을 제거하여 양식과 코드에서 워크북을 분리하는 것이었습니다.이 작업을 수행한 후에 고객은 '베어' 워크북과 모듈 및 양식을 복사했습니다.매크로 실행 워크북으로 양식과 코드를 가져오면 응용 프로그램이 다시 작동할 수 있습니다.
이것은 엑셀 2010을 사용하는 저에게 효과가 있었고 오픈할 때 같은 오류가 발생했습니다.macro-enabled .xlsm
java.
대화상자를 한 후 아니다"를 실행합니다.save as
으로 구분된.txt
합니다.OK
위해서
...활성 시트만 있습니다.
...저장되지 않았습니다.
-그러면 "save as
에는 다시, 그나이는선택을 선택합니다.macro-enabled .xlsm
서식을 정하다(다른 파일에 저장하거나 원본을 덮어쓰는 것은 중요하지 않지만 다른 파일에 저장하는 것이 안전합니다.)
-마무리 엑셀
된 -을 ..xlsm
파일입니다. 제 경우 오류 메시지가 사라졌고 매크로가 작동하고 있습니다.
32809는 일반 오류 메시지인 것 같습니다.한동안 고심한 끝에 워크북 리본 아래에 있는 "매크로 활성화" 보안 버튼을 클릭하지 않았습니다.제가 이 일을 하고 나면, 모든 것이 잘 작동했습니다.
저의 경우, 매크로 실행 중 오류가 발생했습니다: 시트("자체 시트 1").선택한다.
시트를 다른 이름을 가진 다른 이름으로 복사합니다."oso"를 선택한 다음 원래 시트를 삭제하고 새 시트의 이름을 "자체 시트 1"로 변경합니다.
엑셀 2013
내 솔루션(사용자에게 적합하지 않을 수 있음)
오류를 플래그 지정하는 컴퓨터에서 응용 프로그램을 엽니다.어떤 식으로든 VB 코드를 변경합니다. (중요하지 않은 코드의 주석 행을 매크로 중 하나에 추가했습니다.)
시트(시트 이름).'주석 없음'을 선택합니다.
그리고 저장합니다.그러면 재컴파일이 발생합니다.닫혔다가 다시 열림 - 모두 고정됨.
이것이 말이 되고 도움이 되기를 바랍니다.
승인하다
좋아요, 이상할 수도 있어요.어쨌든 제 동료 중 한 명이 이 오류를 일으켰고 우리는 VBA 편집을 시도했습니다.문제는 엑셀 파일을 데스크톱에 복사하는 것입니다.그리고 그것은 성공하였다.Excel 파일은 원래 네트워크 드라이브에 있었습니다.이것은 효과가 있었고, 이것이 이 문제에 대한 저의 대답입니다.
시트에서 ActiveX 컨트롤을 모두 제거하여 오류 메시지 없이 원활하게 작동합니다.그게 제 해결책입니다.
저는 다음과 같은 일을 했고 열심히 일했습니다.
- Office 2013 설치(2010년에는 시도하지 않았지만 작동할 것으로 생각됨).
- Office 2013 SP1을 설치합니다.
- Windows 업데이트를 실행하고 모든 Office 및 Windows 업데이트를 설치합니다.
- 컴퓨터를 재부팅합니다.
- 다 했어요.
이것은 두 개의 다른 컴퓨터에서 작동했습니다.이것이 당신에게도 효과가 있기를 바랍니다!
VBA 모듈을 내보내고 파일을 다시 저장한 다음 모듈을 다시 가져오면 문제가 없습니다.
해결책을 찾았습니다.다음 Office 업데이트를 다운로드하십시오. https://support.microsoft.com/en-us/kb/2920754
32비트 또는 64비트 중에서 선택하여 설치합니다.
나를 위해 일했어요, 당신에게 효과가 있기를 바랍니다.
안부 전해요
저도 같은 문제를 가지고 있고 이것이 Microsoft 취약성의 문제라는 것을 알게 되었습니다.
이러한 업데이트 패치를 설치할 때 사용할 수 있습니다.이러한 패치는 www.microsoft.com 에서 확인할 수 있습니다.
Office 2010 버전이 SP1인 경우 먼저 Office SP2 팩을 다운로드하여 설치해야 합니다.업데이트 패치 이름은 KB2687455입니다.
업데이트 패치 KB2965240을 설치합니다.
이 보안 업데이트는 Microsoft Office의 취약성을 해결하여 공격자가 영향을 받는 버전의 Office에서 특수하게 조작된 Microsoft Excel 워크북을 열거나 미리 보기하도록 사용자를 유인할 경우 원격 코드를 실행할 수 있습니다.공격자가 이 취약성을 성공적으로 이용하면 현재 사용자와 동일한 사용자 권한을 얻을 수 있습니다.
업데이트 패치 KB2553154를 설치합니다.
Microsoft Office 2010 32-Bit Edition에는 보안 취약성이 있으며 이를 통해 악의적으로 수정된 파일을 열 때 임의 코드가 실행될 수 있습니다.이 업데이트는 해당 취약성을 해결합니다.
특정 시트에 VBA 코드가 포함된 콤보 박스를 추가한 후 이 문제가 발생했습니다.제가 시트를 다시 열기 전까지는 코드 테스트 등은 전혀 문제가 없었습니다.스택 오버플로와 마이크로소프트는 많은 해결책을 제공하지만 실제 솔루션은 제공하지 않습니다.저는 W10(W7에서 업그레이드)과 함께 Excel 2010(네덜란드 버전)을 사용합니다.문제는 엑셀 2010에 있다고 생각합니다.저의 경우 오랫동안 변경되지 않은 모듈에서 VBA로 시트 보호를 해제하기 위해 라인에서 오류가 발생했습니다.
좋아요, 제 의견은 이렇습니다.FM20에 보안 문제가 있었습니다.2015년 1분기에 MS가 업데이트한 DLL.이 업데이트는 새 FM20을 설치합니다.DLL, 그러나 언어 패키지(FM20NLD).DLL 및 FM20ENU.DLL)이 업데이트되지 않았습니다.언어 팩을 사용하지 않으면 이 오류가 없을 수 있습니다.제 생각에는 언어 부분도 업데이트했어야 합니다(그러나 사용 가능한 업데이트가 없습니다).
좋아요. .exd 파일을 삭제하는 것은 잠시 동안 효과가 있습니다.이것은 일시적인 해결책입니다.MS는 진정한 해결책이 없지만 코드를 다시 컴파일하면 문제가 '해결'됩니다.
그것이 일부 사람들이 '댓글을 추가하면 문제가 해결된다'고 말한 이유입니다.예, 주석을 추가하면 강제로 다시 컴파일됩니다.
동의합니다, 이것은 여전히 해결책이지만 일시적인 해결책은 아닙니다.그래서: 1. VBA 코드의 어느 부분에 오류가 있는지 확인하고 2. 재컴파일을 강제로 수행할 주석을 추가합니다.프로젝트를 다시 저장합니다.
그것뿐
저도 비슷한 문제가 있어요.VBA(ActiveX) 코드는 몇 년 동안 20대 이상의 컴퓨터에서 정상적으로 작동했는데, 한 새로운 동료가 합류하면서 문제가 갑자기 드러났습니다. 엑셀 버전은 동일하지만 새 노트북에서는 코드가 작동하지 않습니다. 런타임 오류 '32809'가 표시되었습니다.ActiveX와 Macro의 모든 보안 설정을 확인했습니다. 모두 맞습니다.저는 몇 가지 실험을 했습니다.컴퓨터에서 만든 코드가 동료의 새 노트북에서 작동하지 않습니다.하지만 동료의 새 노트북에 코드를 만들면 컴퓨터에서 작동합니다.컴퓨터에 이 코드를 저장하면 동료의 노트북에서 이 코드를 더 이상 사용할 수 없습니다.
세부적으로 오류를 확인해보니 제 컴퓨터, 동료의 엑셀에 작성된 모든 코드가 인식되지 않는 것이 문제입니다.Debug >> 컴파일 오류가 표시되며, "DIM..."도 인식되지 않습니다.모든 ActiveX 컨트롤, 콤보 상자, 버튼...속성 이름에 새 이름이 임의로 할당되었습니다.예를 들어, [AddNew](새로 추가)라는 버튼 이름이 있는데, 동료의 새 랩톱에서 열리면 [commandbutton54](명령 단추 54)로 다시 할당됩니다.기존 워크시트 이름을 인식할 수도 없습니다.
모든 솔루션을 조사한 결과, "*.exd" 파일 삭제가 작동하지 않습니다(휴지통을 비우기도 합니다). '댓글 추가'가 작동하지 않습니다...
결국 솔루션은 다음과 같습니다.
1단계: 코드가 있는 시트를 복사합니다(코드가 없는 시트는 필요 없음).
2단계: 원래 시트를 삭제합니다.
3단계: 복사된 시트의 이름을 원래 이름으로 변경합니다.
작동하기 시작합니다.모든 ActiveX 컨트롤이 속성에서 원래 이름을 반환합니다.몇 분 밖에 안 걸렸어요.그것이 같은 문제에 직면한 사람들에게 도움이 되기를 바랍니다.참고: 파일을 *.txt로 저장하거나 이름을 xlsx...로 변경할 필요가 없습니다.
오류 32,809: 손상된 시트를 새 시트로 복사하고 이름을 변경하거나 손상된 시트를 삭제하는 것이 좋습니다.또한 손상된 시트의 시트 모듈로 이동하여 손상된 시트와 관련된 시트 모듈에서 코딩을 제거했습니다.그것은 또한 저의 문제를 해결해주었습니다.[시트 모듈에는 해당 워크시트와 관련된 이벤트에 의해 트리거되는 루틴이 있을 수 있습니다.]그래서 저의 경우, 저는 그것이 손상된 시트 모듈이지, 워크시트 자체의 손상된 데이터가 아니라고 생각합니다.
의 모든 인스턴스 삭제*.exd
해결해 주었습니다.
언급URL : https://stackoverflow.com/questions/19861288/excel-vba-run-time-error-32809-trying-to-understand-it
'programing' 카테고리의 다른 글
구글의 콜라브에서 파이썬 패키지를 어떻게 설치합니까? (0) | 2023.09.02 |
---|---|
PowerShell의 사용 권한 오류 (0) | 2023.09.02 |
Angular 5, HTML, boolean on 확인란이 선택되어 있습니다. (0) | 2023.09.02 |
Java EE 웹 앱에서 Windows 인증을 사용하여 SQL Server에 연결할 수 있습니까? (0) | 2023.09.02 |
IIS ApplicationPoolIdentity에 'Temporary ASP'에 대한 쓰기 권한이 없습니다.NET 파일' (0) | 2023.09.02 |