VBAを使用してExcelファイルからすべてのVBAモジュールを削除することはできますか?すべてのVBAモジュールをExcelファイルから削除しますか?
このスクリプトを実行する前に、モジュールが存在する場合の名前は不明です。
VBAを使用してExcelファイルからすべてのVBAモジュールを削除することはできますか?すべてのVBAモジュールをExcelファイルから削除しますか?
このスクリプトを実行する前に、モジュールが存在する場合の名前は不明です。
もちろん、可能です。次のコードは、仕事を行います。
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
これはClassModulesとユーザーフォームを含むすべてのモジュールを削除しますが、すべてのオブジェクトモジュール(シート、ワークブック)を維持します。ここで
は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
*標準コードモジュール*だけを削除しないでくださいか? –
面白いことは、このような状況では、ループしたときに任意の削除処理を実行するときに最初に通常必要とされるためにどの最後の反復処理するために必要ではないということです。すべてのモジュール、ユーザーフォーム、およびクラスモジュールが削除されます。 –
別のワークブックのコードを変更する場合は、 'ActiveWorkbook'への参照を' ThisWorkbook'に変更するか、特定のワークブックのリファレンスを変更します。 – pablete
@pableteテンプレートでこれを知っているときは、 'ThisWorkbook'はプロジェクト自体ではなくテンプレートを参照します。これは時々トリッキーなことがあります。 – Mafii