È possibile rimuovere tutti i moduli VBA da un file Excel utilizzando VBA?Rimuovere tutti i moduli VBA dal file excel?
I nomi dei moduli, se presenti, sono sconosciuti prima di eseguire questo script.
È possibile rimuovere tutti i moduli VBA da un file Excel utilizzando VBA?Rimuovere tutti i moduli VBA dal file excel?
I nomi dei moduli, se presenti, sono sconosciuti prima di eseguire questo script.
Ovviamente, è possibile. Il codice seguente farà il lavoro:
Sub compact_code()
On Error Resume Next
Dim Element As Object
For Each Element In ActiveWorkbook.VBProject.VBComponents
ActiveWorkbook.VBProject.VBComponents.Remove Element
Next
End Sub
Questo rimuovere tutti i moduli inclusi ClassModules e UserForms ma mantenere tutti i moduli di oggetto (fogli, cartelle di lavoro).
Ecco una simile alternativa che rimuove solo i ClassModules:
On Error Resume Next
With wbk.VBProject
For x = .VBComponents.Count To 1 Step -1
If .VBComponents(x).Type = vbext_ct_StdModule Then
.VBComponents.Remove .VBComponents(x)
End If
Next x
End With
On Error GoTo 0
Non rimuoverà solo * i moduli di codice standard *? –
La cosa divertente è che in questa situazione non è richiesto per l'iterazione dall'ultimo al primo, quando il loop che di solito è richiesto durante l'esecuzione di qualsiasi processo di eliminazione. Tutti i moduli, userform e moduli di classe vengono rimossi. –
Vorrei cambiare il riferimento a 'ActiveWorkbook' a' ThisWorkbook' o un riferimento specifico della cartella di lavoro se ho intenzione di cambiare il codice di un'altra cartella di lavoro. – pablete
@pablete attenzione quando hai questo in un modello tho: 'ThisWorkbook' farà riferimento al modello, non al progetto stesso. Questo può essere difficile a volte. – Mafii