Controlli ActiveX di Microsoft Excel disabilitati?


113

Ho alcuni fogli di lavoro Excel che utilizzano le caselle di controllo ActiveX per controllare determinate attività. Hanno funzionato di recente, ma oggi hanno iniziato a dare errori. Sono stato avvisato da un collega, ma sul mio computer funzionava ancora. Ho confrontato la sua versione di Excel con la mia e la sua era più recente. Ho notato che c'erano nuovi aggiornamenti di Windows, quindi ho eseguito l'aggiornamento. Dopo aver applicato gli aggiornamenti in sospeso, ora non funziona più sul mio computer. Non riesco più a controllare le caselle di controllo ActiveX e, come parte del tentativo di eseguire il debug, sembra che non sia più possibile aggiungere un controllo ActiveX a nessun foglio di lavoro, nemmeno un nuovo foglio di lavoro. Viene visualizzata una finestra di dialogo di errore che dice "Impossibile inserire l'oggetto". (Posso ancora aggiungere controlli del modulo, ma non ActiveX.) Qualcun altro ha riscontrato questo problema dopo un recente aggiornamento? Eventuali suggerimenti?

Grazie,

Mike


quale controllo era nello specifico? o intendi TUTTI gli activeX?
peege

Anche 3 miei colleghi sembrano avere questo problema. I loro fogli di calcolo utilizzano, credo, controlli ActiveX: ComboBox e pulsanti. Uno di loro aveva il suo PC su cui si stava lavorando e quindi non ha ricevuto gli aggiornamenti. Quando l'ha riavuto, ha eseguito con successo i controlli. Cioè, fino all'aggiornamento automatico del suo PC. Adesso no. Inoltre, non possiamo aggiungere controlli ActiveX ai loro fogli.
Mitchell Kaplan

5
Anch'io sto riscontrando questo problema come tutti gli utenti della mia azienda. Come potrebbe MS rilasciare un aggiornamento che interrompe i controlli ActiveX in Excel? Questo è pazzesco.
harryg

3
@ vba4all: no, questa è una domanda di programmazione e appartiene a questo punto.
Harry Johnston

2
@ vba4all: i controlli ActiveX sono uno strumento di programmazione, non è vero? Per cos'altro li useresti? Sarebbe diverso se l'OP chiedesse, ad esempio, di un particolare prodotto di terze parti (che utilizza VBA) che ha smesso di funzionare. Ma in questo caso sembra che sia stato il suo stesso codice a essere stato interessato?
Harry Johnston

Risposte:


159

Da altri forum, ho appreso che è dovuto all'aggiornamento di MS e che una buona soluzione è semplicemente eliminare il file MSForms.exd da qualsiasi sottocartella Temp nel profilo dell'utente. Per esempio:

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

Ovviamente l'applicazione (Excel, Word ...) deve essere chiusa per poter cancellare questo file.


1
Avevo un PC non aggiornato. Ho aperto Excel e sono stato in grado di aggiungere un pulsante ActiveX. Ho cercato C: \ Users [user.name] \ AppData \ Local \ Temp \ Excel8.0 \ MSForms.exd, ma non c'era la cartella Excel8.0. Quindi ho eseguito l'aggiornamento di Windows. Ho provato di nuovo ad aggiungere un pulsante ActiveX al mio foglio di calcolo e non ci sono riuscito. Ho anche notato che ora avevo Excel8.0 \ MSForms.exd. L'ho cancellato e senza riavviare ho riaperto Excel e ora ero in grado di aggiungere il pulsante ActiveX. Grazie!
Mitchell Kaplan

2
Grazie!! Questo processo ha risolto il problema sul mio computer. Ritengo che gli sviluppatori che hanno grandi versioni pubbliche si interrompano ... Si spera che MS fornisca una correzione.
Mike Pedersen

1
Questo non ha funzionato per me. Sto eseguendo un ripristino del sistema al 12/7/14 su uno dei nostri PC per vedere se questo lo risolverà. Ho anche provato a rimuovere un pulsante e sostituirlo con una risposta di seguito, ma ho ricevuto un pop-up "Impossibile inserire l'oggetto" o qualcosa del genere.
alpinista

1
Per gli utenti di Windows XP, la sottocartella Temp può essere trovata qui: C: \ Documents and Settings \ [user.name] \ Local Settings \ Temp \ Excel8.0 \ MSForms.exd
bjtilley

2
Dopo aver eliminato i file sopra, non ha funzionato per me, ma poi ho trovato questi file nella cartella C: / Windows / Temp e li ho eliminati. Quindi sono riuscito a far funzionare questo problema.
QV1

35

Ecco la migliore risposta che ho trovato nel blog del team di supporto di Microsoft Excel

Per alcuni utenti, Forms Controls (FM20.dll) non funziona più come previsto dopo l'installazione degli aggiornamenti di dicembre 2014. A volte si verificano problemi, ad esempio quando aprono file con progetti VBA esistenti utilizzando i controlli dei moduli, provano a inserire un controllo dei moduli in un nuovo foglio di lavoro o eseguono software di terze parti che potrebbero utilizzare questi componenti.

Potresti ricevere errori come:

"Impossibile inserire l'oggetto" "Libreria di oggetti non valida o contiene riferimenti a definizioni di oggetti che non è stato possibile trovare"

Inoltre, potresti non essere in grado di utilizzare o modificare le proprietà di un controllo ActiveX in un foglio di lavoro o ricevere un errore quando si tenta di fare riferimento a un controllo ActiveX come membro di un foglio di lavoro tramite codice. Passaggi da seguire dopo l'aggiornamento:

Per risolvere questo problema, è necessario eliminare le versioni memorizzate nella cache delle librerie dei tipi di controllo (file di estensione) nel computer client. A tale scopo, è necessario cercare nel disco rigido i file con estensione ".exd" ed eliminare tutti i file .exd trovati. Questi file .exd verranno ricreati automaticamente quando si utilizzano i nuovi controlli la prossima volta che si utilizza VBA. Questi file di estensione saranno sotto il profilo dell'utente e potrebbero anche trovarsi in altre posizioni, come le seguenti:

% Appdata% \ Microsoft forme \

% Temp% \ Excel8.0

% Temp% \ VBE

Soluzione di scripting:

Poiché questo problema può interessare più di una macchina, è anche possibile creare una soluzione di script per eliminare i file EXD ed eseguire lo script come parte del processo di accesso utilizzando un criterio. Lo script necessario dovrebbe contenere le seguenti righe e dovrebbe essere eseguito per ogni USER poiché i file .exd sono specifici per USER.

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

Passaggio aggiuntivo:

Se i passaggi precedenti non risolvono il problema, un altro passaggio che può essere testato (vedere l'avviso di seguito):

  1. Su una macchina completamente aggiornata e dopo aver rimosso i file .exd, apri il file in Excel con le autorizzazioni di modifica.

    Apri Visual Basic for Applications> modifica il progetto aggiungendo un commento o una modifica di qualche tipo a qualsiasi modulo di codice> Debug> Compila VBAProject.

    Salva e riapri il file. Prova la risoluzione. Se risolto, fornire questo progetto aggiornato ad altri utenti.

    Avviso: se questo passaggio risolve il problema, tieni presente che dopo aver distribuito questo progetto aggiornato agli altri utenti, anche questi utenti dovranno avere gli aggiornamenti applicati sui loro sistemi e anche i file .exd rimossi.

Se questo non risolve il problema, potrebbe trattarsi di un problema diverso e potrebbe essere necessaria un'ulteriore risoluzione dei problemi.

Microsoft sta attualmente lavorando a questo problema. Guarda il blog per gli aggiornamenti.

fonte


3
controlla la fonte collegata, ora ha aggiornato la soluzione di scripting
peterson

Sulla mia macchina,% appdata% è definito come "C: \ Users \ <utente corrente> \ AppData \ Roaming \", quindi non esiste una directory "% appdata% \ microsoft \ local \". Inoltre, "% appdata% \ Roaming \ microsoft \ forms \" sembra essere ridondante, come "C: \ Users \ <utente corrente> \ AppData \ Roaming \ Roaming \ microsoft \ forms \" e, ancora una volta, tale directory non esiste sulla mia macchina.
pstraton

15

Era KB2553154 . Microsoft deve rilasciare una correzione. In qualità di sviluppatore di applicazioni Excel, non possiamo accedere a tutti i computer dei nostri clienti ed eliminare file da essi. Siamo accusati di qualcosa che Microsoft ha causato.


1
Anche KB2596927 e KB2726958, a seconda della versione di Office in esecuzione.
Harry Johnston

13

Sono uno sviluppatore Excel e ho sicuramente sentito il dolore quando è successo. Fortunatamente, sono stato in grado di trovare una soluzione alternativa rinominando i file MSForms.exd in VBA anche quando Excel è in esecuzione, il che può anche risolvere il problema. Gli sviluppatori Excel che devono distribuire i propri fogli di calcolo possono aggiungere il seguente codice VBA ai propri fogli di calcolo per renderli immuni all'aggiornamento di MS.

Inserisci questo codice in qualsiasi modulo.

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    

La subroutine RenameMSFormsFiles tenta di rinominare i file MSForms.exd nelle cartelle C:\Users\[user.name]\AppData\Local\Temp\Excel8.0\e C:\Users\[user.name]\AppData\Local\Temp\VBE\in MSForms - Copy.exd.

Quindi chiamare la subroutine RenameMSFormsFiles all'inizio dell'evento Workbook_Open.

Private Sub Workbook_Open() 
  RenameMSFormsFiles  
End Sub

Il foglio di calcolo tenterà di rinominare i file MSForms.exd quando si apre. Ovviamente, questa non è una soluzione perfetta:

  1. L'utente interessato continuerà a riscontrare gli errori del controllo ActiveX durante l'esecuzione del codice VBA la prima volta che apre il foglio di calcolo. Solo dopo aver eseguito il codice VBA una volta e riavviato Excel, il problema è stato risolto. Normalmente quando un utente incontra un foglio di calcolo rotto, la reazione istintiva è chiudere Excel e provare ad aprire nuovamente il foglio di calcolo. :)
  2. I file MSForms.exd vengono rinominati ogni volta che si apre il foglio di calcolo, anche quando non ci sono problemi con i file MSForms.exd. Ma il foglio di calcolo funzionerà perfettamente.

Almeno per ora, gli sviluppatori di Excel possono continuare a distribuire il loro lavoro con questa soluzione alternativa fino a quando Microsoft non rilascia una correzione.

Ho pubblicato questa soluzione qui .


Grazie Yi. Ha funzionato per me, ma ho dovuto riavviare il mio Excel 2010 (potrebbe essere collegato al fatto che stavo eseguendo l'editor VBA allo stesso tempo?)
J. Chomel

5

Con Windows 8.1 non sono riuscito a trovare alcun file .exd utilizzando la ricerca di Windows. D'altra parte, un comando cmd ha dir *.exd /Strovato l'unico file sul mio sistema.


3

I consigli in KB e superiori non hanno funzionato per me. Ho scoperto che se un utente di Excel 2007 (con o senza l'aggiornamento della protezione; non sono sicuro delle circostanze esatte che lo causano) salva il file, viene restituito l'errore originale.

Ho scoperto che il modo più veloce per riparare nuovamente il file è eliminare tutto il codice VBA. Salva. Quindi sostituire il codice VBA (copia / incolla). Salva. Prima di tentare, elimino prima i file .EXD, perché altrimenti ottengo un errore all'apertura.

Nel mio caso, non posso aggiornare / aggiornare tutti gli utenti del mio file Excel in varie posizioni. Poiché il problema si ripresenta dopo che alcuni utenti hanno salvato il file Excel, dovrò sostituire il controllo ActiveX con qualcos'altro.


2
Nessuno dei suggerimenti ha funzionato per me tranne il salvataggio del file come XLSX (rimuovendo tutto il codice), quindi incollato di nuovo come hai fatto - salvando nuovamente come XLSM. Enorme, MASSICCIO dolore nel culo Microsoft. La reinstallazione di Office non ha risolto il problema nemmeno per me, quindi nessuno spreca il tuo tempo a provarlo
DontFretBrett

2

Istruzioni semplificate per gli utenti finali. Sentiti libero di copiare / incollare quanto segue.

Ecco come risolvere il problema quando si presenta:

  1. Chiudi tutti i tuoi programmi e file di Office.
  2. Apri Windows Explorer e digita% TEMP% nella barra degli indirizzi, quindi premi Invio. Questo ti porterà nella cartella temporanea di sistema.
  3. Individua ed elimina le seguenti cartelle: Excel8.0, VBE, Word8.0
  4. Ora prova a utilizzare di nuovo il tuo file, non dovrebbe avere problemi.

Potrebbe essere necessario attendere fino a quando si verifica il problema affinché questa correzione funzioni. Applicarlo prematuramente (prima che Windows Update venga installato sul tuo sistema) non aiuterà.


2

La migliore fonte di informazioni e aggiornamenti su questo problema che ho trovato è nei blog di TechNet »Il blog del team di supporto di Microsoft Excel (come menzionato):

I controlli del modulo smettono di funzionare dopo gli aggiornamenti di dicembre 2014 (aggiornato il 10 marzo 2015)

Nel marzo 2015 è stato rilasciato un hotfix oltre alla correzione automatica e alle istruzioni manuali, ed è disponibile anche su Windows Update.

L'ultimo aggiornamento e correzione di Microsoft: 3025036 errore "Impossibile inserire oggetto" in una soluzione Office personalizzata ActiveX dopo l'installazione dell'aggiornamento per la protezione MS14-082

STATO: aggiornamento del 10 marzo 2015:

Gli hotfix per questo problema sono stati rilasciati negli aggiornamenti di marzo 2015 per Office 2007, 2010 e 2013.

Informazioni generali sul problema:

Per alcuni utenti, i controlli dei moduli (FM20.dll) non funzionano più come previsto dopo l'installazione degli aggiornamenti di sicurezza di Microsoft Office MS14-082 per dicembre 2014. Si verificano problemi a volte, ad esempio quando aprono file con progetti VBA esistenti utilizzando i controlli dei moduli, prova per inserire un controllo moduli in un nuovo foglio di lavoro o eseguire software di terze parti che potrebbero utilizzare questi componenti.

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

Potresti ricevere errori come: "Impossibile inserire l'oggetto"; "Libreria di oggetti non valida o contiene riferimenti a definizioni di oggetti che non è stato possibile trovare"; "Il programma utilizzato per creare questo oggetto è Forms. Quel programma non è installato sul tuo computer o non risponde. Per modificare questo oggetto, installa Forms o assicurati che tutte le finestre di dialogo in Forms siano chiuse." [...] Inoltre, potresti non essere in grado di utilizzare o modificare le proprietà di un controllo ActiveX su un foglio di lavoro o ricevere un errore quando provi a fare riferimento a un controllo ActiveX come membro di un foglio di lavoro tramite codice.

Soluzioni manuali e aggiuntive:

Soluzione di scripting:

Poiché questo problema può interessare più di una macchina, è anche possibile creare una soluzione di script per eliminare i file EXD ed eseguire lo script come parte del processo di accesso utilizzando un criterio. Lo script necessario dovrebbe contenere le seguenti righe e dovrebbe essere eseguito per ogni USER poiché i file .exd sono specifici per USER.

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

Passaggio aggiuntivo:

Se i passaggi precedenti non risolvono il problema, un altro passaggio che può essere testato (vedere l'avviso di seguito):

  1. Su una macchina completamente aggiornata e dopo aver rimosso i file .exd, apri il file in Excel con le autorizzazioni di modifica.

  2. Apri Visual Basic for Applications> modifica il progetto aggiungendo un commento o una modifica di qualche tipo a qualsiasi modulo di codice> Debug> Compila VBAProject.

  3. Salva e riapri il file. Prova la risoluzione.

Se risolto, fornire questo progetto aggiornato ad altri utenti.

Avviso: se questo passaggio risolve il problema, tieni presente che dopo aver distribuito questo progetto aggiornato agli altri utenti, anche questi utenti dovranno avere gli aggiornamenti applicati sui loro sistemi e anche i file .exd rimossi.



0

So che molte risposte sono già state pubblicate per questo, ma nessuna delle due ha funzionato indipendentemente per il mio sito. Quindi ecco cosa ha funzionato per me:

Passaggio 1: disinstallare i seguenti aggiornamenti: KB2920789, KB2920790, KB2920792, KB2920793, KB2984942, KB2596927

Passaggio 2: nascondi questi aggiornamenti in modo che non vengano installati ai riavvii successivi

Passaggio 3: eliminare la cartella Excel8.0 da C: \ Users \ <> \ AppData \ Local \ Temp

Passaggio 4: riavvia la workstatiion (mi assicurerei anche che i KB sopra menzionati non siano stati applicati inavvertitamente)


0

Voglio fornire una risposta che ha funzionato come l'unica cosa per me (mi rendo conto che potrei essere l'unico in assoluto). Avevo in una macro che stavo chiamando usando il nastro. Aveva il seguente codice:

colStore = new Collection

Non sapevo che generava un errore, quindi sono rimasto perplesso e ho provato di tutto qui. Il pulsante ha smesso di funzionare e non sono riuscito a farlo funzionare. Quando ho notato l'errore e l'ho corretto in:

Set colStore = new Collection

Ha ricominciato a funzionare. Assolutamente strano se me lo chiedi, ma forse aiuta qualcuno là fuori che era disperato come me.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.