有没有办法以编程方式从很多excel工作表中删除所有vba模块

时间:2019-01-02 07:06:46

标签: excel vba excel-vba

我在一个文件夹中有许多excel文件(.xls),每个文件中都有一个vba宏/模块,我需要将其删除。我可以编写一个遍历该文件夹,检查每个Excel文件并删除vba模块的外部程序吗?请告诉我哪种编程语言最容易做到。谢谢!

通过手动过程,我必须1)打开工作表,2)单击“启用内容”,3)转到“开发人员”选项卡,4)单击“ Visual Basic”按钮,5)右键单击vba模块并删除。正如我提到的,我拥有这些excel文件,这是一项常规工作,我想删除人为的部分。谢谢。

2 个答案:

答案 0 :(得分:2)

我要做什么,我将创建一个宏,该宏将打开这些文件并将其另存为xlsx而不是xlsm。由于xlsx不能包含模块,因此它们将消失。 比您只需要删除原始的。

您甚至可以使用宏录制来做到这一点。

如果我们要谈论很多文件,(我想我们这样做) 如果文件后面有逻辑(例如日期),则可以生成文件的名称 或者您可以将它们放入文件夹中,然后循环浏览文件夹中的项目,将其打开,另存为,删除原始文件。

您可以找到许多选项来检查文件夹(FSO)中的每个文件

新年快乐!

答案 1 :(得分:1)

更改路径并尝试:

Option Explicit

Sub LoopThroughFiles()

    Dim StrFile As String
    Dim Element As Object
    Dim WB As Workbook

    StrFile = Dir("C:\Users\XXXXX\Desktop\Test\*")

    Do While Len(StrFile) > 0
        If Right(StrFile, 4) = ".xls" Then

            Set WB = Workbooks.Open("C:\Users\marios.p\Desktop\Test\" & StrFile)

            For Each Element In ActiveWorkbook.VBProject.VBComponents
                If Element.Type <> 100 Then
                    ActiveWorkbook.VBProject.VBComponents.Remove Element
                End If
            Next

            WB.Save
            WB.Close

        End If

        StrFile = Dir
    Loop

End Sub