1

我尝试了这段代码,似乎它不起作用。谁能告诉我为什么?

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
4

2 回答 2

2

我发现了 2 个值得关注的领域。第一的,

路径名 = ActiveWorkbook.Path & "C:\Macro\"

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

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

消息框路径名

路径名 = ActiveWorkbook.Path & "C:\Macro\"

喜欢

路径名 = ActiveWorkbook.Path & "C:\Macro\"

消息框路径名

并运行代码。这将向您显示主要问题的路径名。如果您计划打开/修改的 excel 文件与 ActiveWorkbook 位于同一目录中,则可以正常工作

路径名 = ActiveWorkbook.Path & "\"

(完成后删除 Msgbox 路径名。)

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

希望有帮助。

于 2013-02-09T04:37:40.763 回答
1

这可能是你的问题:

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

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

C:\yourpathtoworkbookC:\Macro\

您应该使用 F8 单步执行代码,并在变量以黄色突出显示时将鼠标悬停在变量上。

于 2013-02-09T04:39:06.827 回答