1

我有一个包含许多文件的文件夹,我需要从中:打开本周的文件,将它们存储在一个数组中,将它们传递给一个子,然后循环它们以获取摘要信息。

我可以从下面的代码中获取所需的日期文件。但是代码在将其存储在数组中并将其传递给数组时会引发错误。

Sub BatchProcessing()
    firstday = Date - Weekday(Date) + 2  'To get the 1st day of week
    lastday = Date - Weekday(Date) + 6   'To get the 5th day of week
    MyPath = "P:\Data\"                  'Path where my files were present       
    Dim Day
    Dim strArray(0 To 5) As String
     iCount=0
       For Day = firstday To lastday     'To loop through all 5 day files
          formatted_date = Format(Day, "yyyyMd")
          MyTemplate = "TestFile" & formatted_date & ".xlsx"   ' Set the template.
          Workbooks.Open MyPath & MyTemplate
          strArray(iCount) = ActiveWorkbook.Name   
          iCount = iCount+1    
       Next

    CreateStats(strArray)    'Calling a sub which will do the required calculation 
End Sub


Sub CreateStats(strArray As String)
 For Each element in strArray
    set OriginalWorkbook = strArray(i)
     'Do the processing'
 Next
End Sub
4

2 回答 2

3

你的strArray变量是类型Single。如果您希望该变量是字符串数组,则必须将其声明为:

Dim strArray(0 to 5) As String

编辑:

现在您已将代码更改为使用strArray() As String而不是strArray As Single,您应该更新您的CreateStats子过程以接受一个数组作为参数。它现在应该看起来像这样:

Private Sub CreateStats(myArray() As String)

正如你现在所拥有的,你的过程只接受一个字符串。它必须接受一个字符串数组。一旦你有了它,你就可以遍历每个字符串并进行处理。

于 2013-03-18T20:55:32.803 回答
1

通过命名您的数组strArray,您似乎将拥有一个字符串数组,实际上您尝试在其中存储工作簿名称。但是,您将数组声明为 Single,它是一种数值数据类型。根据您的CreateStats(strArray)sub 所做的事情,您可能需要将其从 Single 更改为 String,或者可能设置另一个数组来保存 Single,而这个数组来保存 String。

于 2013-03-18T20:58:16.177 回答