Excel VB循环文件夹并运行macros

我试过这个代码,似乎不工作。 谁能告诉我为什么?

Sub ProcessFiles() Dim Filename, Pathname As String Dim wb As Workbook Pathname = ActiveWorkbook.Path & "C:\Macro\" Filename = Dir(Pathname & "*.xls") Do While Filename <> "" Set wb = Workbooks.Open(Pathname & Filename) DoWork wb wb.Close SaveChanges:=True Filename = Dir() Loop End Sub Sub DoWork(wb As Workbook) With wb Range("A1").Select ActiveCell.FormulaR1C1 = "Name" Range("B1").Select ActiveCell.FormulaR1C1 = "Anil" Range("A2").Select End With End Sub 

我发现有两个方面值得关注。 第一,

Pathname = ActiveWorkbook.Path&“C:\ Macro \”

这将返回类似于“C:\ Users \ [USER NAME] \ [FILELOCATION] C:\ Macro \”(这是我的输出C:\ Users \ Developer \ DesktopC:\ Macro \“)

一个简单的方法来检查这是放置

MsgBoxpath名

Pathname = ActiveWorkbook.Path&“C:\ Macro \”

喜欢

Pathname = ActiveWorkbook.Path&“C:\ Macro \”

MsgBoxpath名

并运行代码。 这将显示主要问题的path名。 如果您计划打开/修改的excel文件与ActiveWorkbook在同一个目录中,这将工作正常

path名= ActiveWorkbook.Path&“\”

(完成后删除Msgboxpath名。)

第二个关注领域是Do While Loop。 如果文件名不等于“”,你现在已经把它设置为只执行循环。 但是,当您进入循环时,您使用Filename = Dir()将Filename设置为“”。 如果您不打算遍历文件夹,则可以使用单个IF语句。 如果您计划遍历该文件夹,请继续执行Do While语句,但最终需要修改Filename = Dir()。

希望有所帮助。

这可能是你的问题:

Pathname = ActiveWorkbook.Path & "C:\Macro\"

ActiveWorkbook.Path已经返回C:\YourPathToWorkbook所以你的Pathname可能是这样的:

C:\yourpathtoworkbookC:\Macro\

您应该使用F8逐步执行代码,并将它们hover在variables上,当它们以黄色突出显示时。