如何在文件夹中的所有(已关闭)Excel文件上运行一个VBA宏?

时间:2014-08-12 06:56:43

标签: vba excel-vba excel

  • Excel 2010

一旦我用自己的原始测量打开文件,我就会有一个宏对原始数据执行一些操作,即对其进行排序,删除一些内容,将一些内容复制到新的表中。

最后它关闭原始数据文件(当保存更改时),并关闭,保存和重命名宏在所有排序,删除和复制后创建的新创建的Excel文件。

所以考虑到我只打开这个宏文件(.xlsm)......

如何在所述宏文件的同一文件夹中的所有Excel文件(.xlsx)上运行该宏?我不想一个接一个地打开它们,然后重新运行宏。

我目前正在通过以下方式关闭打开的“原始”文件:

ActiveWorkbook.Saved = True
ActiveWorkbook.Close SaveChanges:=False
Application.DisplayAlerts = True

不得不承认我不知道他们是否完全有意义,但他们的工作。

1 个答案:

答案 0 :(得分:3)

它比您发布的链接更简单 见下文:

Sub stantial()
   Dim myfiles, wb As Workbook, ws As Worksheet
   myfiles = Dir(Thisworkbook.Path & "\*.xlsx")
   Do While Len(myfiles) <> 0
       'Debug.Print myfiles
       '~~> open as readonly since you don't want to alter the original
       Set wb = Workbooks.Open(Thisworkbook.Path & "\" & myfiles, , True)
       '~~> Do your stuff here (edit, copy, sort etc...)
       wb.Close False
       Set wb = Nothing '~~> clean up
       myfiles = Dir
   Loop   
End Sub

上面的代码检索所有带有 .xlsx 扩展名的文件名,然后使用 Workbooks Open 方法打开它。
一旦打开文件,你就可以处理打开的工作簿对象并执行您的操作。
在继续下一步之前,请关闭工作簿,清理变量。 HTH。