development

"코드 실행이 중지되었습니다"라는 메시지와 함께 Excel VBA 앱이 자연스럽게 중지됨

big-blog 2020. 6. 25. 07:32
반응형

"코드 실행이 중지되었습니다"라는 메시지와 함께 Excel VBA 앱이 자연스럽게 중지됨


웹에서 볼 수 있듯이 이것은 상당히 일반적인 불만이지만 답변이 더 드문 것 같습니다. 문제는 이것입니다 :

여러 사용자 컴퓨터에서 완벽하게 작동하는 여러 Excel VBA 앱이 있습니다. 그러나 한 시스템에서 특정 코드 줄에서 중지합니다. 항상 같은 줄이지 만 그 줄은 서로 공통점이 없습니다.

중단 후 F5 (실행)를 누르면 앱이 계속 진행되므로 중단 점이 추가 된 것과 거의 같습니다. 우리는 메뉴에서 '모든 나누기 제거'를 선택하고 나누기를 추가하고 다시 제거하려고 시도했습니다.

우리는 이전에 단일 앱 에서이 문제를 겪었으며 모듈에서 코드를 잘라 내고 컴파일 한 다음 다시 붙여 넣는 방식으로 '보통'했습니다.

문제는 이제 단일 .xls가 아닌 Excel 자체와 관련된 것으로 보이므로이를 관리하는 방법이 약간 확실하지 않습니다.

모든 도움을 주셔서 감사합니다 :)

감사,

필립 휘팅 턴


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

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

이것이 누군가를 돕기를 바랍니다.


이 문제는 Office / Windows의 이상한 문제에서 비롯됩니다.

동일한 VBA 코드를 개발하고 지난 며칠 동안 수백 번 (문자 그대로) 실행 한 후 지금이 문제가 발생했습니다. 유일한 차이점은이 난처한 문제가 발생하기 직전에 정통 방법으로 VBA 코드 실행을 실수로 종료했다는 것입니다.

모든 임시 파일을 정리하고 재부팅 등을 수행했습니다 ...이 모든 후에 코드를 다시 실행해도 여전히 문제가 발생했습니다. 첫 번째 루프에 들어가기 전에. 는 것을 의미한다 "를 눌러"디버그 "팝업에서 버튼을 누른 두 번 [CTRL + 브레이크]를 누르고,이 후 정지하지 않고 계속 할 수 있습니다" 오피스 / 윈도우의 조합에 뭔가가 실행을 발표하지 않았기 때문에. 붙어 있습니다.

중복 Ctrl + Break 조치는 느린 실행을 해결합니다.


한 가지 해결책은 다음과 같습니다.

이 문제에 대한 해결책은 매크로의 첫 줄에“Application.EnableCancelKey = xlDisabled”코드 줄을 추가하는 것입니다. 이렇게하면 문제가 해결되고“Code”오류 메시지가 나타나지 않고 매크로를 성공적으로 실행할 수 있습니다. 실행이 중단되었습니다”.

그러나이 코드 줄을 삽입 한 후에는 더 이상 Ctrl + Break를 사용할 수 없었습니다. 따라서 작동하지만 크게 작동하지는 않습니다.


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


일반적인 치료 방법을 시도해보십시오.-VBA 코드에서 Rob Bovey의 VBA 코드 클리너 실행-사용자 PC의 모든 추가 기능, 특히 COM 및 .NET 추가 기능 제거-모든 사용자 .EXD 파일 삭제 (MSoft 업데이트 비 호환성)-Excel 실행 사용자 시스템 감지 및 복구-사용자의 .xlb 파일 크기 (20-30K)를 확인합니다.-재부팅 한 다음 모든 사용자의 임시 파일을 삭제합니다.


의견을 보내 주신 모든 분들께 감사드립니다. 이 문제는 제어판에서 REPAIR를 선택하여 해결되었습니다. 이것은 Office의 기본 COM 구성 요소 중 일부를 명시 적으로 다시 등록하고 REINSTALL이 수행하지 않는 작업을 수행합니다. 나는 후자가 점검 목록을 통과하고 때로는 이미 설치되어 있다면 거기에있는 것을 받아 들일 것으로 기대합니다. 그런 다음 Microsoft가 아닌 내 오류라고 생각하지만 사용자 컴퓨터에 COM interop에 대한 내 자신의 .NET dll을 등록하는 것과는 별도의 문제가있었습니다 (다른 컴퓨터에서도 작동하지만). 다시 한 번 감사드립니다. 정말 감사합니다.


하나의 복잡한 Excel VBA 앱을 개발하는 동안이 문제가 몇 번 발생했습니다. 때때로 Excel은 VBA 개체를 매우 임의로 중단하기 시작했습니다. 유일한 해결책은 컴퓨터를 재부팅하는 것입니다. 재부팅 후 Excel은 일반적으로 정상적으로 작동하기 시작했습니다.

곧이 문제에 대한 가능한 해결책은 매크로가 실행 중이 지 않을 때 CTRL + Break를 한 번 누르는 것입니다. 어쩌면 이것이 당신에게도 도움이 될 수 있습니다.


매크로가 실행되지 않고 오른쪽 모서리에있는 빨간색 X의 통합 문서를 닫으려고하면 "코드 실행이 중단되었습니다"라는 foobar.xlsm (매크로 사용) 통합 문서와 함께 Excel 2007을 사용하는 경우 에도이 문제가 발생했습니다. 모두 또는 "초기화"양식, 통합 문서 또는 통합 문서 매크로 중 하나입니다. 내가 얻은 옵션은 "End"또는 "Continue"이며 디버그는 항상 회색으로 표시됩니다. 이전 포스터에서 제어판-> 프로그램 및 기능-> "Microsoft Office Proffesional 2007"(내 경우)-> 변경-> 복구를 마우스 오른쪽 버튼으로 클릭하십시오.

이것은 나를 위해 문제를 해결했습니다. MS 업데이트 직후에이 문제를 추가 할 수도 있고, 자발적으로 설치하지 않은 Microsoft의 "Team Foundation"이라는 Excel에서 추가 기능을 찾았습니다.


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

  • 나는이 문제에 수십 번 이상 직면했으며 프로젝트 조건에 따라 스탠의 부두 마법 답변 # 1 또는 # 2 중에서 선택했습니다. 다시 계속 직면했을 때, 왜 그것이 처음부터 일어나는지 더 궁금해졌습니다.

  • Mac 사용자를위한 답변도 추가하고 싶습니다.

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

    • 코드가 보호되어 있고 암호를 모르면 # 1 답변 이 도움이되지 않습니다.
    • 코드가 보호되지 않으면 # 2로 코드를 디버깅 할 수 없습니다.

  1. 다음과 같은 이유로 발생할 수 있습니다.

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

    • P 코드는 Visual Basic (.NET 이전)에서 사용 된 중간 코드이므로 VBA에서 계속 사용됩니다. 실행 속도가 느려져보다 컴팩트 한 실행 파일이 가능해졌습니다. 왜 p- 코드에 대해 이야기하고 있습니까? 때때로 여러 실행과 큰 파일 사이에서 손상되거나 소프트웨어 (Excel) 설치로 인해 어딘가 손상되었습니다. p 코드가 손상된 경우 코드 실행이 계속 중단됩니다. 해결책: In these cases, it is assumed that your code has started to corrupt and chances in future are that your Excel workbook also get corrupt giving you messages like "excel file corrupted and cannot be opened". Hence, as a quick solution, you can rely on answer #1 or answer #2 as per your requirements. However, never ignore the signs of corruption. It's better to copy your code modules in notepad, delete the modules, save & close the workbook, close the excel. Now, re-open the workbook and start creating new modules with the code copied earlier to notepad.

  2. Mac users, try any of the below option and of them will definitely work depending on your system architecture i.e. OS and Office version

    • Ctrl + Pause
    • Ctrl + ScrLk
    • Esc + Esc (Press twice consecutively)

You will be put into break mode using the above key combinations as the macro suspends execution immediately finishing the current task. This is replacement of Step 2.

  1. Solution: To overcome the limitation of using answer #1 and answer #2, I use xlErrorHandler along with Resume statement in the Error Handler if the error code is 18. Then, the interrupt is sent to the running procedure as an error, trappable by an error handler set up with an On Error GoTo statement. The trappable error code is 18. The current procedure is interrupted, and the user can debug or end the procedure. Microsoft gives caution that do not use this if your error handler has resume statement else your error handler always returns to the same statement. That's exactly we want in unwanted meaningless interruptions of code execution.


My current reputation does not yet allow to post this as a comment. Stans solution to enter the debug mode, press twice Ctrl+Break, play on, save did solve my problem, but I have two unexpected twists:

  1. My project struture is password protected, so in order to get into the Debug Mode I had to first enter Developer mode, click on the project structure and enter the password.

  2. My project is a template file (.xmtl). I opened the file via double click which opens it as .xml with a "1" at the end of the previous file name. I fixed the bug as by Stans instruction and saved it as that ...1.xml file. When I then opened the template again, this time as template, and wanted to apply the same bug fix to that file, the bug was gone! I did not change this file and still no bug at executing the Macro. This means to me that the bug is not actually in the file, but in a (hidden) setting in Excel.


The problem now seems to relate to Excel itself

Reinstall and patch it up :) Other then that its hard to tell.

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

반응형