我尝试了这段代码,似乎无法正常工作。谁能告诉我为什么?
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
答案 0 :(得分:2)
我发现了两个值得关注的领域。首先,
Pathname = ActiveWorkbook.Path&amp; “C:\宏\”强>
这将返回类似于“C:\ Users \ [USER NAME] \ [FILELOCATION] C:\ Macro \”的内容(这是我的输出C:\ Users \ Developer \ DesktopC:\ Macro \“)
检查这个的简单方法是放置
MsgBox路径名
之后
Pathname = ActiveWorkbook.Path&amp; “C:\宏\”强>
喜欢
Pathname = ActiveWorkbook.Path&amp; “C:\宏\”强>
MsgBox路径名
并运行代码。这将显示Pathname,这是主要问题。如果您打算打开/修改的Excel文件与ActiveWorkbook位于同一目录中,这将正常工作
Pathname = ActiveWorkbook.Path&amp; “\”强>
(完成后删除Msgbox路径名。)
第二个值得关注的领域是Do While Loop。您目前将其设置为仅在文件名不等于“”时执行循环。但是,当您进入循环时,使用Filename = Dir()将Filename设置为“”。如果您不打算遍历该文件夹,则可以使用单个IF语句。如果您计划迭代文件夹,请继续执行Do While语句,但最终需要修改Filename = Dir()。
希望有所帮助。
答案 1 :(得分:1)
这可能是你的问题:
Pathname = ActiveWorkbook.Path & "C:\Macro\"
ActiveWorkbook.Path
已经返回C:\YourPathToWorkbook
,因此您的Pathname
可能是这样的:
C:\yourpathtoworkbookC:\Macro\
您应该使用F8单步执行代码,并将它们悬停在黄色突出显示的变量上。