Microsoft Excel ActiveX 컨트롤이 비활성화 되었습니까?


113

ActiveX 확인란을 사용하여 특정 활동을 제어하는 ​​Excel 워크 시트가 있습니다. 그들은 최근에 일했지만 오늘은 오류를주기 시작했습니다. 동료로부터 경고를 받았지만 여전히 내 컴퓨터에서 작동하고있었습니다. 나는 그의 Excel 버전을 내 버전과 비교해 보았고 그의 버전은 더 최신 버전이었습니다. 새로운 Windows 업데이트가 있음을 알았으므로 업데이트했습니다. 보류중인 업데이트를 적용한 후에는 더 이상 내 컴퓨터에서 작동하지 않습니다. 더 이상 ActiveX 확인란을 선택할 수 없으며 디버깅을 시도하는 과정에서 ActiveX 컨트롤을 어떤 워크 시트, 심지어 새 워크 시트에도 더 이상 추가 할 수없는 것 같습니다. "개체를 삽입 할 수 없습니다."라는 오류 대화 상자가 나타납니다. (ActiveX가 아닌 양식 컨트롤을 계속 추가 할 수 있습니다.) 최근 업데이트 후 다른 사람이이 문제를 겪고 있습니까? 어떤 제안?

감사,

마이크


구체적으로 어떤 통제였습니까? 아니면 모든 activeX를 의미합니까?
peege dec.

제 동료 3 명도이 문제가있는 것 같습니다. 그들의 스프레드 시트는 ActiveX 컨트롤 (ComboBoxes 및 Buttons)을 사용합니다. 그들 중 한 명은 자신의 PC를 작업 중이 어서 업데이트를받지 못했습니다. 그가 그것을 되찾았을 때 그것은 성공적으로 컨트롤을 실행했습니다. 즉, PC가 자동으로 업데이트 될 때까지입니다. 이제는 그렇지 않습니다. 또한 시트에 ActiveX 컨트롤을 추가 할 수 없습니다.
Mitchell Kaplan

5
회사의 모든 사용자와 마찬가지로 저도이 문제를 겪고 있습니다. MS가 Excel에서 ActiveX 컨트롤을 손상시키는 업데이트를 어떻게 릴리스 할 수 있습니까? 미친 짓이야.
harryg 2014-12-11

3
@ vba4all : 아니요, 이것은 프로그래밍 질문이며 여기에 속합니다.
Harry Johnston

2
@ vba4all : ActiveX 컨트롤은 프로그래밍 도구입니다. 그렇지 않습니까? 또 어떤 용도로 사용 하시겠습니까? 예를 들어 OP가 작동을 멈춘 특정 타사 제품 (VBA를 사용하는 경우)에 대해 묻는 경우에는 다릅니다. 하지만이 경우 영향을받은 것은 자신의 코드 인 것 같습니다.
Harry Johnston

답변:


159

다른 포럼에서 MS Update 때문이며 사용자 프로필의 Temp 하위 폴더에서 MSForms.exd 파일을 삭제하는 것이 좋은 해결책이라는 것을 알게되었습니다. 예를 들면 :

C:\Users\[user.name]\AppData\Local\Temp\Excel8.0\MSForms.exd

C:\Users\[user.name]\AppData\Local\Temp\VBE\MSForms.exd

C:\Users\[user.name]\AppData\Local\Temp\Word8.0\MSForms.exd

물론이 파일을 삭제하려면 응용 프로그램 (Excel, Word ...)을 닫아야합니다.


1
업데이트되지 않은 PC가 있습니다. 엑셀을 열고 ActiveX 버튼을 추가 할 수있었습니다. C : \ Users [user.name] \ AppData \ Local \ Temp \ Excel8.0 \ MSForms.exd를 찾았지만 Excel8.0 폴더는 없었습니다. 그런 다음 Windows 업데이트를 실행했습니다. 스프레드 시트에 ActiveX 버튼을 다시 추가하려고했지만 할 수 없었습니다. 또한 이제 Excel8.0 \ MSForms.exd가 있다는 것도 언급했습니다. 나는 그것을 삭제하고 재부팅하지 않고 Excel을 다시 열었고 이제 ActiveX 버튼을 추가 할 수있었습니다. 감사!
Mitchell Kaplan

2
감사합니다!! 이 프로세스는 내 컴퓨터의 문제를 해결했습니다. 나는 이것이 깨지는 대규모 공개 릴리스를 가진 개발자에게 느낍니다. MS가 수정을 발표하기를 바랍니다.
마이크 Pedersen은

1
이것은 나를 위해 작동하지 않았습니다. 우리 PC 중 하나에서 12/7/14로 시스템 복원을 수행하여 문제가 해결되는지 확인하고 있습니다. 또한 버튼을 제거하고 아래 답변에 따라 교체하려고 시도했지만 "개체를 삽입 할 수 없습니다."라는 팝업이 나타납니다.
mountainclimber

1
Windows XP 사용자의 경우 Temp 하위 폴더는 C : \ Documents and Settings \ [user.name] \ Local Settings \ Temp \ Excel8.0 \ MSForms.exd
bjtilley

2
위의 파일을 삭제 한 후에는 작동하지 않았지만 C : / Windows / Temp 폴더에서이 파일을 찾아서 삭제했습니다. 그런 다음이 문제를 해결할 수있었습니다.
QV1 2015 년

35

다음은 Microsoft Excel 지원 팀 블로그에서 찾은 최상의 답변입니다.

일부 사용자의 경우 2014 년 12 월 업데이트를 설치 한 후 Forms Controls (FM20.dll)가 더 이상 예상대로 작동하지 않습니다. 양식 컨트롤을 사용하여 기존 VBA 프로젝트에서 파일을 열거 나 새 워크 시트에 양식 컨트롤을 삽입하거나 이러한 구성 요소를 사용할 수있는 타사 소프트웨어를 실행할 때와 같은 문제가 발생합니다.

다음과 같은 오류가 발생할 수 있습니다.

"개체를 삽입 할 수 없습니다." "개체 라이브러리가 유효하지 않거나 찾을 수없는 개체 정의에 대한 참조를 포함합니다."

또한 워크 시트에서 ActiveX 컨트롤의 속성을 사용하거나 변경할 수 없거나 코드를 통해 ActiveX 컨트롤을 워크 시트의 구성원으로 참조하려고 할 때 오류가 발생할 수 있습니다. 업데이트 후 따라야 할 단계 :

이 문제를 해결하려면 클라이언트 컴퓨터에서 캐시 된 버전의 제어 유형 라이브러리 (확장자 파일)를 삭제해야합니다. 이렇게하려면 하드 디스크에서 ".exd"파일 이름 확장명을 가진 파일을 검색하고 찾은 모든 .exd 파일을 삭제해야합니다. 이러한 .exd 파일은 다음에 VBA를 사용할 때 새 컨트롤을 사용할 때 자동으로 다시 만들어집니다. 이러한 Extender 파일은 사용자의 프로필 아래에 있으며 다음과 같은 다른 위치에있을 수도 있습니다.

% appdata % \ Microsoft \ forms

% temp % \ Excel8.0

% temp % \ VBE

스크립팅 솔루션 :

이 문제는 둘 이상의 시스템에 영향을 미칠 수 있으므로 스크립트 솔루션을 만들어 EXD 파일을 삭제하고 정책을 사용하여 로그온 프로세스의 일부로 스크립트를 실행할 수도 있습니다. 필요한 스크립트는 다음 줄을 포함해야하며 .exd 파일은 사용자별로 다르므로 각 사용자에 대해 실행해야합니다.

del % temp % \ vbe \ *. exd

del % temp % \ excel8.0 \ *. exd

del % appdata % \ microsoft \ forms \ *. exd

del % appdata % \ microsoft \ local \ *. exd

del % appdata % \ Roaming \ microsoft \ forms \ *. exd

del % temp % \ word8.0 \ *. exd

del % temp % \ PPT11.0 \ *. exd

추가 단계 :

위의 단계로 문제가 해결되지 않으면 테스트 할 수있는 다른 단계 (아래 경고 참조) :

  1. 완전히 업데이트 된 컴퓨터에서 .exd 파일을 제거한 후 편집 권한으로 Excel에서 파일을 엽니 다.

    Visual Basic for Applications를 열고 코드 모듈> 디버그> VBAProject 컴파일에 주석을 추가하거나 편집하여 프로젝트를 수정합니다.

    파일을 저장하고 다시 엽니 다. 해상도를 테스트합니다. 해결 된 경우이 업데이트 된 프로젝트를 추가 사용자에게 제공하십시오.

    경고 :이 단계로 문제가 해결되면이 업데이트 된 프로젝트를 다른 사용자에게 배포 한 후 해당 사용자는 시스템에 업데이트를 적용하고 .exd 파일도 제거해야합니다.

이렇게해도 문제가 해결되지 않으면 다른 문제 일 수 있으며 추가 문제 해결이 필요할 수 있습니다.

Microsoft는 현재이 문제를 해결하기 위해 노력하고 있습니다. 블로그에서 업데이트를 확인하십시오.

출처


3
링크 된 소스를 확인, 지금 업데이트 된 스크립팅 솔루션
피터슨

내 컴퓨터에서 % appdata %는 "C : \ Users \ <현재 사용자> \ AppData \ Roaming \"으로 정의되어 있으므로 "% appdata % \ microsoft \ local \"디렉터리가 없습니다. 또한 "% appdata % \ Roaming \ microsoft \ forms \"는 "C : \ Users \ <현재 사용자> \ AppData \ Roaming \ Roaming \ microsoft \ forms \"와 같이 중복 된 것으로 보이며 다시 해당 디렉터리가 존재하지 않습니다. 내 컴퓨터에서.
pstraton

15

그것은이었다 KB2553154 . Microsoft는 수정 사항을 릴리스해야합니다. Excel 응용 프로그램 개발자로서 모든 클라이언트 컴퓨터로 이동하여 파일을 삭제할 수는 없습니다. 우리는 Microsoft가 야기한 일에 대해 비난을 받고 있습니다.


1
또한 실행중인 Office 버전에 따라 KB2596927 및 KB2726958도 있습니다.
Harry Johnston

13

저는 Excel 개발자이며이 일이 발생했을 때 분명히 고통을 느꼈습니다. 다행히 Excel이 실행 중일 때도 VBA에서 MSForms.exd 파일의 이름을 변경하여 문제를 해결할 수있는 해결 방법을 찾을 수있었습니다. 스프레드 시트를 배포해야하는 Excel 개발자는 MS 업데이트에 영향을받지 않도록 스프레드 시트에 다음 VBA 코드를 추가 할 수 있습니다.

이 코드를 임의의 모듈에 배치하십시오.

Public Sub RenameMSFormsFiles() 
  Const tempFileName As String = "MSForms - Copy.exd"  
  Const msFormsFileName As String = "MSForms.exd"  
  On Error Resume Next 

  'Try to rename the C:\Users\[user.name]\AppData\Local\Temp\Excel8.0\MSForms.exd file  
  RenameFile Environ("TEMP") & "\Excel8.0\" & msFormsFileName, Environ("TEMP") & "\Excel8.0\" & tempFileName 
  'Try to rename the C:\Users\[user.name]\AppData\Local\Temp\VBE\MSForms.exd file  
  RenameFile Environ("TEMP") & "\VBE\" & msFormsFileName, Environ("TEMP") & "\VBE\" & tempFileName 
End Sub  

Private Sub RenameFile(fromFilePath As String, toFilePath As String) 
  If CheckFileExist(fromFilePath) Then 
      DeleteFile toFilePath  
      Name fromFilePath As toFilePath  
  End If  
End Sub

Private Function CheckFileExist(path As String) As Boolean 
  CheckFileExist = (Dir(path) <> "")  
End Function  

Private Sub DeleteFile(path As String) 
  If CheckFileExist(path) Then 
      SetAttr path, vbNormal  
      Kill path  
  End If  
End Sub    

RenameMSFormsFiles 서브 루틴은 C:\Users\[user.name]\AppData\Local\Temp\Excel8.0\및 에서 MSForms.exd 파일의 이름을 바꾸려고합니다.C:\Users\[user.name]\AppData\Local\Temp\VBE\ 폴더 을 MSForms-Copy.exd로 바꾸려고합니다.

그런 다음 Workbook_Open 이벤트의 맨 처음에 RenameMSFormsFiles 서브 루틴을 호출합니다.

Private Sub Workbook_Open() 
  RenameMSFormsFiles  
End Sub

스프레드 시트가 열리면 MSForms.exd 파일의 이름을 바꾸려고합니다. 분명히 이것은 완벽한 해결책이 아닙니다.

  1. 영향을받는 사용자는 스프레드 시트를 처음 열 때 VBA 코드를 실행할 때 여전히 ActiveX 컨트롤 오류가 발생합니다. VBA 코드를 한 번 실행하고 Excel을 다시 시작한 후에 만 ​​문제가 해결됩니다. 일반적으로 사용자가 손상된 스프레드 시트를 발견 할 때 매우 빠른 반응은 Excel을 닫고 스프레드 시트를 다시 열려는 것입니다. :)
  2. MSForms.exd 파일은 MSForms.exd 파일에 문제가없는 경우에도 스프레드 시트를 열 때마다 이름이 변경됩니다. 그러나 스프레드 시트는 잘 작동합니다.

최소한 지금은 Excel 개발자가 Microsoft에서 수정 사항을 릴리스 할 때까지이 해결 방법으로 작업을 계속 배포 할 수 있습니다.

이 솔루션을 여기에 게시했습니다 .


이순신 감사합니다. 그것은 나를 위해 일하지만 내 다시 시작했다 2010 Excel을 (그것이 내가 동시에 VBA 편집기를 실행했다는 사실에 링크 될 수 있을까?)
J. Chomel에게

5

Windows 8.1에서는 Windows 검색을 사용하여 .exd 파일을 찾을 수 없습니다. 반면에 cmd 명령 dir *.exd /S은 내 시스템에서 하나의 파일을 찾았습니다.


3

KB 이상의 조언은 저에게 효과가 없었습니다. 보안 업데이트를 사용하거나 사용하지 않고 Excel 2007 사용자 한 명이 파일을 저장하면 원래 오류가 반환된다는 사실을 발견했습니다.

파일을 다시 복구하는 가장 빠른 방법은 모든 VBA 코드를 삭제하는 것입니다. 저장. 그런 다음 VBA 코드를 바꿉니다 (복사 / 붙여 넣기). 저장. 이를 시도하기 전에 먼저 .EXD 파일을 삭제합니다. 그렇지 않으면 열 때 오류가 발생하기 때문입니다.

제 경우에는 여러 위치에서 Excel 파일의 모든 사용자를 업그레이드 / 업데이트 할 수 없습니다. 일부 사용자가 Excel 파일을 저장 한 후 문제가 다시 발생하기 때문에 ActiveX 컨트롤을 다른 것으로 바꿔야합니다.


2
파일을 XLSX (모든 코드 제거)로 저장 한 다음 다시 붙여 넣은 다음 XLSM으로 다시 저장하는 것 외에는 어떤 제안도 나에게 효과가 없었습니다. Microsoft 엉덩이에 거대하고 엄청난 고통. 아무도 그 시도하는 시간을 낭비하지 않도록 사무실 중 하나 나를 위해 그것을 해결되지 않았다 재설치
DontFretBrett

2

최종 사용자를위한 단순화 된 지침. 다음을 자유롭게 복사 / 붙여 넣기하십시오.

문제가 발생했을 때 문제를 해결하는 방법은 다음과 같습니다.

  1. 모든 Office 프로그램과 파일을 닫습니다.
  2. Windows 탐색기를 열고 주소 표시 줄에 % TEMP %를 입력 한 다음 Enter 키를 누릅니다. 시스템 임시 폴더로 이동합니다.
  3. 다음 폴더를 찾아 삭제합니다. Excel8.0, VBE, Word8.0
  4. 이제 파일을 다시 사용해보십시오. 문제가 없어야합니다.

이 수정 사항이 작동하려면 문제가 발생할 때까지 기다려야 할 수 있습니다. 시스템에 Windows 업데이트가 설치되기 전에 미리 적용하면 도움이되지 않습니다.


2

이 문제에 대한 최고의 정보 및 업데이트 소스는 TechNet 블로그에서 찾을 수 있습니다.»Microsoft Excel 지원 팀 블로그 (언급 한대로) :

2014 년 12 월 업데이트 후 양식 컨트롤 작동이 중지됨 (2015 년 3 월 10 일 업데이트 됨)

2015 년 3 월에 자동 수정 및 수동 지침 외에 핫픽스가 릴리스 되었으며 Windows Update에서도 사용할 수 있습니다.

Microsoft의 최신 업데이트 및 수정 : MS14-082 보안 업데이트를 설치 한 후 ActiveX 사용자 지정 Office 솔루션에서 3025036 "개체를 삽입 할 수 없음"오류

상태 : 2015 년 3 월 10 일 업데이트 :

이 문제에 대한 핫픽스는 Office 2007, 2010 및 2013 용 2015 년 3 월 업데이트에서 릴리스되었습니다.

문제에 대한 일반 정보 :

일부 사용자의 경우 2014 년 12 월 MS14-082 Microsoft Office 보안 업데이트를 설치 한 후 양식 컨트롤 (FM20.dll)이 더 이상 예상대로 작동하지 않습니다. 양식 컨트롤을 사용하여 기존 VBA 프로젝트로 파일을 열 때와 같은 문제가 발생합니다. 양식 컨트롤을 새 워크 시트에 삽입하거나 이러한 구성 요소를 사용할 수있는 타사 소프트웨어를 실행합니다.

https://technet.microsoft.com/en-us/library/security/ms14-082.aspx

다음과 같은 오류가 나타날 수 있습니다. "개체를 삽입 할 수 없음"; "객체 라이브러리가 유효하지 않거나 찾을 수없는 객체 정의에 대한 참조를 포함합니다."; "이 개체를 만드는 데 사용 된 프로그램은 Forms입니다. 해당 프로그램이 컴퓨터에 설치되어 있지 않거나 응답하지 않습니다.이 개체를 편집하려면 Forms를 설치하거나 Forms의 모든 대화 상자가 닫혀 있는지 확인하십시오." [...] 또한 워크 시트에서 ActiveX 컨트롤의 속성을 사용하거나 변경할 수 없거나 코드를 통해 ActiveX 컨트롤을 워크 시트의 구성원으로 참조하려고 할 때 오류가 발생할 수 있습니다.

수동 및 추가 솔루션 :

스크립팅 솔루션 :

이 문제는 둘 이상의 시스템에 영향을 줄 수 있으므로 EXD 파일을 삭제하고 정책을 사용하여 로그온 프로세스의 일부로 스크립트를 실행하는 스크립팅 솔루션을 만들 수도 있습니다. 필요한 스크립트는 다음 줄을 포함해야하며 .exd 파일은 사용자별로 다르므로 각 사용자에 대해 실행해야합니다.

del %temp%\vbe\*.exd
del %temp%\excel8.0\*.exd
del %appdata%\microsoft\forms\*.exd
del %appdata%\microsoft\local\*.exd
del %temp%\word8.0\*.exd
del %temp%\PPT11.0\*.exd

추가 단계 :

위의 단계로 문제가 해결되지 않으면 테스트 할 수있는 다른 단계 (아래 경고 참조) :

  1. 완전히 업데이트 된 컴퓨터에서 .exd 파일을 제거한 후 편집 권한으로 Excel에서 파일을 엽니 다.

  2. Visual Basic for Applications를 열고 코드 모듈> 디버그> VBAProject 컴파일에 주석을 추가하거나 일종의 편집을 추가하여 프로젝트를 수정합니다.

  3. 파일을 저장하고 다시 엽니 다. 해상도를 테스트합니다.

해결 된 경우이 업데이트 된 프로젝트를 추가 사용자에게 제공하십시오.

경고 :이 단계로 문제가 해결되면이 업데이트 된 프로젝트를 다른 사용자에게 배포 한 후 해당 사용자는 시스템에 업데이트를 적용하고 .exd 파일도 제거해야합니다.



0

나는 이미 많은 답변이 게시되었음을 알고 있지만 하나의 답변이 내 사이트에서 독립적으로 작동하지 않았습니다. 그래서 여기에 저에게 효과적이었습니다.

1 단계 : 다음 업데이트 제거-KB2920789, KB2920790, KB2920792, KB2920793, KB2984942, KB2596927

2 단계 : 이후 재부팅시 설치되지 않도록 이러한 업데이트 숨기기

3 단계 : C : \ Users \ <> \ AppData \ Local \ Temp에서 Excel8.0 폴더 삭제

4 단계 : 작업 상태를 다시 시작합니다 (위에 언급 된 KB가 실수로 적용되지 않았는지 확인합니다).


0

나는 나에게 유일한 일이었던 대답을 제공하고 싶다 (나는 내가 유일한 사람 일 수도 있다는 것을 알고있다). 리본을 사용하여 호출 한 하나의 매크로에 있습니다. 다음 코드가 있습니다.

colStore = new Collection

나는 그것이 오류를 던지는 것을 몰랐기 때문에 당황했고 여기에서 모든 것을 시도했습니다. 버튼이 작동을 멈 췄고 작동하지 못했습니다. 오류를 발견하고 다음과 같이 수정했을 때 :

Set colStore = new Collection

다시 작동하기 시작했습니다. 당신이 나에게 물어 보면 절대적으로 이상하지만 아마도 그것은 나만큼 절망적 인 누군가를 도울 것입니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.