it-source

ActiveX 컨트롤이 비활성화되어 있습니까?

criticalcode 2023. 5. 26. 21:08
반응형

ActiveX 컨트롤이 비활성화되어 있습니까?

ActiveX 확인란을 사용하여 특정 활동을 제어하는 Excel 워크시트가 있습니다.

오늘 그들은 오류를 내기 시작했습니다.최신 버전의 Excel을 실행하는 동료로부터 이 문제에 대한 경고를 받았지만 여전히 컴퓨터에서 작동하고 있었습니다.
Windows 업데이트가 있다는 것을 알고 업데이트를 했습니다.이제 내 컴퓨터에서 더 이상 작동하지 않습니다.

ActiveX 확인란을 더 이상 선택할 수 없습니다.

ActiveX 컨트롤을 워크시트에 추가할 수 없으며 새 워크시트에도 추가할 수 없습니다.
.

개체를 삽입할 수 없습니다.

ActiveX가 아닌 양식 컨트롤을 추가할 수 있습니다.

다른 포럼에서 MS 업데이트 때문이라는 것과 사용자 프로필의 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...)을 닫아야 합니다.

Microsoft Excel 지원 팀 블로그에서 찾은 최고의 답변은 다음과 같습니다.

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

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

"개체를 삽입할 수 없습니다." "개체 라이브러리가 잘못되었거나 찾을 수 없는 개체 정의에 대한 참조가 포함되어 있습니다."

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

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

%appdata%\마이크로소프트\forms

%temp%\Excel8.0

%temp%\VBE

스크립팅 솔루션:

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

del %del%\vbe\*.exd

del %tg%\tg8.0\*.exd

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

del %appdata%\filename\local\*.

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

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

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

추가 단계:

위의 단계를 수행해도 문제가 해결되지 않으면 다른 단계를 테스트할 수 있습니다(아래 경고 참조).

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

    Visual Basic for Applications > 임의의 코드 모듈 > Debug > Compile VBroject에 어떤 종류의 주석이나 편집을 추가하여 프로젝트를 수정합니다.

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

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

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

Microsoft는 현재 이 문제를 해결하고 있습니다.블로그에서 업데이트를 확인합니다.

원천

KB2553154였습니다.Microsoft는 수정 사항을 릴리스해야 합니다.Excel 애플리케이션의 개발자로서 우리는 모든 클라이언트 컴퓨터로 이동하여 파일을 삭제할 수 없습니다.우리는 마이크로소프트가 야기한 일에 대해 비난을 받고 있습니다.

저는 엑셀 개발자인데, 이 일이 일어났을 때 분명히 고통을 느꼈습니다.다행히 Excel이 실행 중인 상태에서도 MSForms.exd 파일의 이름을 VBA로 변경하여 해결책을 찾을 수 있었습니다.스프레드시트를 배포해야 하는 Excel 개발자는 다음 VBA 코드를 스프레드시트에 추가하여 MS 업데이트에 영향을 받지 않도록 할 수 있습니다.

이 코드를 모듈에 배치합니다.

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\그리고.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가 수정 사항을 릴리스할 때까지 이 해결 방법을 사용하여 작업을 계속 배포할 수 있습니다.

는 이 해결책을 여기에 올렸습니다.

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

KB 이상의 조언은 저에게 효과가 없었습니다.한 Excel 2007 사용자가 (보안 업데이트가 있든 없든) 파일을 저장하면 원래 오류가 반환됩니다.

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

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

이 문제에 대한 정보와 업데이트의 가장 좋은 출처는 TechNet 블로그 » Microsoft Excel 지원 팀 블로그(위에서 언급한 바와 같이)에서 찾을 수 있습니다.

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

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

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

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

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

문제에 대한 일반 정보:

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

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

"개체를 삽입할 수 없습니다", "개체 라이브러리가 잘못되었거나 찾을 수 없는 개체 정의에 대한 참조가 포함되어 있습니다", "이 개체를 만드는 데 사용된 프로그램은 양식입니다.해당 프로그램이 컴퓨터에 설치되어 있지 않거나 응답하지 않습니다.이 개체를 편집하려면 양식을 설치하거나 양식의 대화 상자가 닫혔는지 확인하십시오." [...] 또한 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 > 임의의 코드 모듈 > Debug > Compile VBroject에 어떤 종류의 주석이나 편집을 추가하여 프로젝트를 수정합니다.

  3. 파일을 저장한 후 다시 엽니다.해상도 테스트.

해결된 경우 업데이트된 프로젝트를 추가 사용자에게 제공합니다.

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

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

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

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

이 수정 프로그램이 작동하려면 문제가 발생할 때까지 기다려야 할 수 있습니다.Windows Update를 시스템에 설치하기 전에 미리 적용하면 도움이 되지 않습니다.

저는 마침내 공식 Microsoft KB에서 다음과 같은 답변을 찾았습니다.

http://support.microsoft.com/kb/3025036/EN-US

이전 답변과 다른 새로운 정보는 없지만 적어도 Microsoft가 이 문제를 인식하고 있음을 인정합니다.

이에 대한 많은 답변이 이미 게시된 것으로 알고 있지만, 제 사이트에 대한 답변 중 하나도 독립적으로 작동하지 않았습니다.그래서 제게 도움이 된 것은 다음과 같습니다.

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

2단계: 이러한 업데이트를 숨겨서 이후 재부팅 시 설치되지 않도록 합니다.

3단계: C에서 Excel 8.0 폴더 삭제:\Users\<>\AppData\Local\온도

4단계: 워크스테이션을 다시 시작합니다(위에서 언급한 KB가 실수로 적용되지 않았는지도 확인합니다).

저는 제게 유일한 것으로 작용한 답을 제공하고 싶습니다(저는 제가 유일한 사람일 수도 있다는 것을 깨달았습니다).제가 리본을 사용하여 부르는 매크로가 하나 있습니다.코드는 다음과 같습니다.

colStore = new Collection

나는 그것이 오류를 유발한다는 것을 알지 못했기 때문에 당황해서 여기 있는 모든 것을 시도했습니다.버튼이 작동을 멈추어서 작동이 안 됐어요.오류를 발견하고 다음으로 수정했습니다.

Set colStore = new Collection

다시 작동하기 시작했습니다.당신이 나에게 물어본다면 정말 이상하지만 나처럼 절망적이었던 누군가를 도울 수도 있습니다.

언급URL : https://stackoverflow.com/questions/27411399/are-activex-controls-disabled

반응형