循环浏览文件夹中的文件并使用cou

时间:2017-02-27 14:44:26

标签: excel vba loops countif

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

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

1 个答案:

答案 0 :(得分:0)

以下是一些让它发挥作用的建议:

  • 使用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
相关问题