循环遍历文件夹中的文件和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
答
下面是一些建议,得到它的工作:
- 使用
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
- 对于使用VBA的
Dir
的一些例子 - 在这里看到:http://www.exceltrick.com/formulas_macros/vba-dir-function/
让我们了解您已经尝试过,你在哪里卡住等这是没有代码编写服务 – gizlmo
堆栈溢出不是我的网站的代码。请发布您尝试过的代码无效。 –
第二次调用dir应该只是'Dir()'(无参数) – Shadow