Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Excel 循环浏览文件夹中的文件并计数_Excel_Vba_Loops_Countif - Fatal编程技术网

Excel 循环浏览文件夹中的文件并计数

Excel 循环浏览文件夹中的文件并计数,excel,vba,loops,countif,Excel,Vba,Loops,Countif,我有这个VBA代码来计算保存在文件夹中的所有excel文件中所有不为零的值,并在包含宏的工作簿中打印结果。我遇到的问题是,它一次又一次地打开同一个文件,而不是移动到下一个文件 Sub RealCount() Dim file As String Dim row As Integer Dim wb As Workbook row = 2 file = Dir("\\Daglig rapport\KPI Marknadskommunikation\FEB\*

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

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

下面是一些让它工作的建议:

使用path变量保留文件夹位置并使代码更易于阅读 修复工作簿。Open参数应该是实际的文件路径,我有点惊讶Excel的工作簿。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
有关使用VBA的Dir的更多示例,请参见此处:
向我们展示您已经尝试过的内容,您被卡住的地方等。这不是代码编写服务堆栈溢出不是代码为我的网站。请发布您尝试过的不起作用的代码。第二次调用dir应该只使用dir noparameters@Shadow当前位置已尝试,但仍不起作用。