循环遍历文件夹中的文件和COUNTIF

问题描述:

我有这样的VBA代码来算不在所有零创先争优保存在一个文件夹中的文件中的所有值,并在包含宏worbook打印出结果。我遇到的问题是它一遍又一遍地打开同一个文件(第一个文件)而不是移动到下一个文件。循环遍历文件夹中的文件和COUNTIF

Sub RealCount() 

    Dim file As String 
    Dim row As Integer 
    Dim wb As Workbook 

    row = 2  
    file = Dir("\\Daglig rapport\KPI Marknadskommunikation\FEB\*.xl??") 
    Do While file <> "" 
     Set wb = Workbooks.Open("\\Daglig rapport\KPI Marknadskommunikation\FEB\*.xl??") 
     Call ZeroCount 
     file = Dir("\\Daglig rapport\KPI Marknadskommunikation\FEB\*.xl??") 
    Loop 
End Sub 
+0

让我们了解您已经尝试过,你在哪里卡住等这是没有代码编写服务 – gizlmo

+0

堆栈溢出不是我的网站的代码。请发布您尝试过的代码无效。 –

+0

第二次调用dir应该只是'Dir()'(无参数) – Shadow

下面是一些建议,得到它的工作:

  • 使用path变量保持在文件夹的位置,使代码更容易阅读
  • 修复Workbooks.Open所以参数应该是实际的文件路径(我有点惊讶Excel的Workbook.Open实际上可以与通配符字符如*?
  • 检查ZeroCount不会调用任何Dir函数。如果这样做,那么Excel可能会重置您调用Dir正确获取循环中下一个文件的能力。如果您发现发生了这种情况,并且您必须在此循环内绝对呼叫Dir,则可以先循环所有Dir值并将它们存储到数组中。然后再拍循环,通过阵列这就要求ZeroCount去(或需要在其中使用Dir任何代码)

这里有照顾的第一个两分的例子:

Sub RealCount() 
    Dim path as String 
    Dim file As String 
    Dim row As Integer 
    Dim wb As Workbook 

    path = "\\Daglig rapport\KPI Marknadskommunikation\FEB\" 
    row = 2  
    file = Dir(path & "*.xl??") 
    Do While file <> "" 
     Set wb = Workbooks.Open(path & file) 
     Call ZeroCount 
     row = row + 1  ' I assume you want to increment row each time as well maybe? 
     file = Dir() 
    Loop 
End Sub