programing

Excel VBA 앱이 자동으로 중지되고 "코드 실행이 중지되었습니다" 메시지가 표시됨

javaba 2023. 5. 29. 21:27
반응형

Excel VBA 앱이 자동으로 중지되고 "코드 실행이 중지되었습니다" 메시지가 표시됨

제가 웹에서 볼 수 있는 바로는, 이것은 꽤 흔한 불만이지만, 대답은 더 드문 것 같습니다.문제는 다음과 같습니다.

우리는 많은 사용자의 기계에서 완벽하게 작동하는 많은 Excel VBA 앱을 가지고 있습니다.그러나 한 컴퓨터에서는 특정 코드 행에서 중지됩니다.항상 같은 선이지만, 그 선들은 서로 공통점이 없는 것 같습니다.

중지 후 F5(실행)를 누르면 앱이 계속되기 때문에 중단점이 추가된 것과 같습니다.우리는 메뉴에서 '모든 휴식 제거'를 선택하고 휴식을 추가한 후 다시 삭제하려고 시도했습니다.

이전에도 단일 앱에서 이 문제가 발생한 적이 있으며 모듈에서 코드를 잘라내고 컴파일한 다음 다시 붙여넣는 등의 방식으로 문제를 해결했습니다.

문제는 이제 단일 .xls가 아닌 Excel 자체와 관련된 것으로 보이며, 따라서 이를 어떻게 관리해야 할지 약간 확신할 수 없습니다.

저는 두 번째 해결책을 찾았습니다.

  1. 팝업에서 "디버그" 버튼을 누릅니다.
  2. +를 두 번 누릅니다.Pause|Break
  3. 계속하려면 재생 버튼을 누릅니다.
  4. 완료 후 파일을 저장합니다.

하나의 솔루션은 다음과 같습니다.

이 문제의 해결책은 코드 "Application" 행을 추가하는 것입니다.매크로의 첫 줄에서 CancelKey = xlDisabled"를 활성화합니다.이렇게 하면 문제가 해결되고 "코드 실행이 중단되었습니다"라는 오류 메시지가 표시되지 않고 매크로를 성공적으로 실행할 수 있습니다.

하지만 이 코드 라인을 삽입한 후에는 Ctrl+Break을 더 이상 사용할 수 없었습니다.그래서 효과는 있지만 크게 작용하지는 않습니다.

이 문제는 Office/Windows 내의 이상한 문제에서 발생합니다.

동일한 VBA 코드를 개발하고 지난 며칠 동안 수백 번(문자 그대로) 실행한 후 방금 이 문제에 직면했습니다.유일하게 달라진 점은 이 복잡한 문제를 경험하기 직전에 실수로 비정통적인 방법으로 VBA 코드의 실행을 종료했다는 것입니다.

임시 파일을 모두 지우고 다시 부팅하는 등...이 모든 것을 끝내고 코드를 다시 실행했을 때 첫 번째 루프에 들어가기 전에 여전히 문제가 발생했습니다.Office/Windows 조합의 어떤 것이 실행을 해제하지 않았기 때문에 "Debug" 팝업에서 "Debug" 단추를 누른 다음 [Ctrl+Break]을 두 번 누르면 이후에도 중단 없이 계속될 수 있습니다."라고 말합니다.끼었어요.

중복 Ctrl+Break 작업을 수행하면 지연 실행이 해결될 수 있습니다.

매크로가 실행되지 않는 동안 ctrl+break을 누르면 문제가 해결되었습니다.

저는 일반적인 교정 방법을 시도하겠습니다. - VBA 코드에서 Rob Boby의 VBA Code Cleaner 실행 - 사용자 PC의 모든 애드인, 특히 COM 및 .NET 애드인 제거 - 모든 사용자 .EXD 파일 삭제(MSoft Update 비호환성) - 사용자 시스템에서 Excel 탐지 및 복구 실행 - 사용자의 크기를 확인합니다.xlb 파일(20-30K여야 함) - 재부팅한 다음 모든 사용자 Temp 파일을 삭제합니다.

저는 하나의 복잡한 Excel VBA 앱을 개발하는 동안 이 문제를 몇 번 접했습니다.때때로 Excel은 VBA 객체를 무작위로 깨기 시작했습니다.그리고 유일한 해결책은 기계를 재부팅하는 것이었습니다.재부팅 후 Excel은 보통 정상적으로 동작하기 시작했습니다.

곧 이 문제에 대한 가능한 해결책이 매크로가 실행되지 않을 때 Ctrl+Break을 한 번 누르는 것이라는 것을 알게 되었습니다.아마 이것도 당신에게 도움이 될 것입니다.

여러분의 의견에 감사드립니다.이 문제는 제어판에서 수리를 선택하여 해결되었습니다.이것은 Office의 기본 COM 구성 요소 중 일부를 명시적으로 재등록하고 재설치하지 않는 작업을 수행합니다.저는 후자가 단지 체크리스트를 검토하고, 아마도 이미 설치되어 있다면 때때로 거기에 있는 것을 받아들일지도 모른다고 예상합니다.그 후 사용자의 컴퓨터에서 COM interop을 위해 내 .NET dll을 등록하는 데 별도의 문제가 있었습니다(다른 컴퓨터에서도 작동함에도 불구하고). 이것은 마이크로소프트가 아닌 내 오류라고 생각합니다.다시 한번 감사드립니다, 정말 감사합니다.

저는 foo bar와 함께 excel 2007을 사용하면서도 이 문제를 겪었습니다.xlsm (macro 지원) 워크북은 매크로가 실행되지 않거나, "초기화" 양식, 워크북 또는 워크시트 매크로를 사용하지 않고 오른쪽 모서리에 있는 빨간색 X의 워크북을 닫으려고 시도하면 "코드 실행이 중단되었습니다"를 얻을 수 있습니다."종료" 또는 "계속" 옵션을 선택하면 디버그가 항상 회색으로 표시됩니다.이전 포스터에서 제안한 제어판 -> 프로그램 및 기능 -> "Microsoft Office Professional 2007"(내 경우) -> 변경 -> 복구를 마우스 오른쪽 버튼으로 클릭했습니다.

이것으로 저는 그 문제를 해결했습니다.나는 MS 업데이트 후에 이것이 곧 일어났다고 덧붙일 수 있고 나는 또한 내가 자발적으로 설치하지 않은 마이크로소프트의 "팀 파운데이션"이라는 애드인을 엑셀에서 발견했습니다.

다음과 같은 이유로 Stan의 답변 #2에 더 자세한 내용을 추가하고자 합니다.

  • 저는 이 문제에 직접 12번 이상 직면했고 프로젝트 조건에 따라 스탠의 부두 마법 답 #1 또는 #2 중 하나를 선택했습니다.계속 다시 마주할 때는 왜 그런 일이 처음부터 생기는지 더욱 의아하게 생각하게 됩니다.

  • 맥 사용자들을 위한 답변도 추가하고 싶습니다.

  • 다음과 같은 두 가지 가능한 답변에는 제한이 있습니다.

    • 코드가 보호되고 암호를 모르는 경우 #1은 도움이 되지 않습니다.
    • 코드가 보호되지 않으면 #2에 대답하면 코드를 디버그할 수 없습니다.

  1. 이 문제는 다음과 같은 이유로 인해 발생할 수 있습니다.

    • 운영 체제가 시스템 리소스를 Excel 프로세스에 할당하지 않았습니다.(솔루션:운영 체제를 시작하기만 하면 됩니다. 성공률은 매우 낮지만 여러 번 작동하는 것으로 알려져 있습니다.)

    • P-code는 Visual Basic(.NET 이전)에서 사용된 중간 코드이므로 VBA에서 여전히 사용됩니다.실행 속도가 느려지는 대신 보다 컴팩트한 실행 파일을 사용할 수 있었습니다.왜 내가 p-code에 대해 이야기하는 거지?소프트웨어(Excel) 설치로 인해 여러 실행과 대용량 파일 사이에 손상되는 경우가 있기 때문입니다.p-code가 손상된 경우.코드 실행이 계속 중단됩니다.솔루션:이러한 경우 코드가 손상되기 시작했으며 향후 Excel 워크북도 손상되어 "excel 파일이 손상되어 열 수 없습니다."와 같은 메시지가 표시될 가능성이 있습니다.따라서 빠른 해결책으로 #1 또는 #2에 대한 답변을 요구사항에 따라 사용할 수 있습니다.하지만, 부패의 징후를 결코 무시하지 마세요.메모장에 코드 모듈을 복사하고, 모듈을 삭제하고, 워크북을 저장한 후 닫고, 엑셀을 닫는 것이 좋습니다.이제 워크북을 다시 열고 이전에 메모장에 복사한 코드로 새 모듈 만들기를 시작합니다.

  2. Mac 사용자는 아래 옵션 중 하나를 사용해 보십시오. 시스템 아키텍처(예: OS 및 Office 버전)에 따라 작동합니다.

    • Ctrl + Pause
    • Ctrl + ScrLk
    • Esc (Esc연속적으로 두 번 누름)

매크로가 현재 작업을 완료하는 즉시 실행을 일시 중단하므로 위의 키 조합을 사용하여 중단 모드로 전환됩니다.이것은 2단계를 대체하는 것입니다.

  1. 솔루션:1번 답과 2번 을 사용하는 한계를 극복하기 위해 사용합니다.xlErrorHandler와 함께Resume오류 코드가 18인 경우 오류 처리기에 문이 표시됩니다.그런 다음, On Error GoTo 문으로 설정된 오류 핸들러에 의해 트랩될 수 있는 오류로 실행 프로시저로 인터럽트가 전송됩니다.트래핑 가능한 오류 코드는 18입니다.현재 절차가 중단되고 사용자가 절차를 디버그하거나 종료할 수 있습니다.Microsoft는 오류 처리기에 resume 문이 있는 경우 이 문을 사용하지 않도록 주의합니다. 그렇지 않으면 오류 처리기가 항상 동일한 문으로 돌아갑니다.그것이 바로 우리가 원치 않는 무의미한 코드 실행 중단에서 원하는 것입니다.

저의 현재 평판으로는 아직 이것을 댓글로 올릴 수 없습니다.솔루션을 디버그 모드로 전환하고 Ctrl+Break을 두 번 누르고 재생한 후 저장하면 문제가 해결되지만 예상치 못한 두 가지 오류가 있습니다.

  1. 제 프로젝트 구조는 암호로 보호되므로 디버그 모드로 들어가려면 먼저 개발자 모드로 들어가 프로젝트 구조를 클릭하고 암호를 입력해야 했습니다.

  2. 내 프로젝트는 템플릿 파일(.xmtl)입니다.이전 파일 이름 끝에 "1"이 있는 .xml로 파일을 여는 더블 클릭을 통해 파일을 열었습니다.스탠스의 지시에 따라 버그를 수정하여 ...1.xml 파일로 저장했습니다.그런 다음 템플릿을 다시 열었을 때, 이번에는 템플릿으로 사용하여 동일한 버그 수정을 해당 파일에 적용하고자 했을 때, 버그가 사라졌습니다!나는 이 파일을 변경하지 않았고 매크로를 실행하는 데 버그가 없었습니다.이는 버그가 실제로 파일에 있는 것이 아니라 Excel의 (숨겨진) 설정에 있다는 것을 의미합니다.

환상 중단점인 경우:

1 문제가 되는 코드 행 삭제

2 코드를 다시 실행합니다.

3 라인을 다시 붙여넣기

저는 여기와 다른 곳에서 모든 답을 뒤적이며 며칠을 보낸 후에 이 우습게도 간단한 해결책을 발견했습니다.제 원래 질문과 연결하면 다른 불쌍한 녀석에게 도움이 될 수 있을 거라고 생각했습니다. 키보드에 브레이크 키가 없을 VBA 브레이크 실행이 적용 가능하기 때문입니다.

원래 답변에 대한 링크

저는 오늘 같은 문제에 직면했습니다.다음 단계로 해결했습니다.

  1. 새 모듈 생성
  2. 문제의 원인이 되는 절차를 이 새 모듈로 이동합니다.
  3. 프로젝트저장
  4. 매크로를 다시 실행합니다.

이번에는 코드 실행이 중간 중지 없이 완료될 때까지 실행됩니다.

언급URL : https://stackoverflow.com/questions/2154699/excel-vba-app-stops-spontaneously-with-message-code-execution-has-been-halted

반응형