2013-03-18 106 views
1

我有一個文件夾,其中包含許多文件,我需要:打開本週的文件,將它們存儲在一個數組中,將它們傳遞給一個子文件,並通過它們循環以獲取摘要信息。在Excel VBA宏中的數組

我可以從下面的代碼中獲取所需的日期文件。但是,代碼拋出一個錯誤,將其存儲在數組中並將其傳遞給數組。

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 
+1

什麼是錯誤? – Sam 2013-03-18 20:53:03

+0

@Sam:我現在編輯了數組聲明。但是,上面的代碼現在將數組中的名稱存儲?以及如何傳遞它另一個功能? – Jill448 2013-03-18 21:23:38

+0

您應該在代碼中設置一個斷點,以查看數組是否按照您的預期填充,並且還要查看這些尺寸是否正確。要將它傳遞給子過程,必須將過程更改爲接受數組作爲參數。 – Sam 2013-03-18 21:31:13

回答

3

strArray變量是Single類型。如果您想要的變量是一個字符串數組,你必須聲明它是這樣:

Dim strArray(0 to 5) As String

編輯:

現在,你已經改變了你的代碼中使用strArray() As String而非strArray As Single,你應該更新你的CreateStats子程序來接受一個數組作爲參數。現在應該是這個樣子:

Private Sub CreateStats(myArray() As String)

當你擁有了它,現在,你的程序只接受一個字符串。它必須接受一串字符串。一旦你有了,你可以遍歷每個字符串並進行處理。

1

通過命名您的數組strArray看起來您將擁有一個字符串數組,實際上您嘗試將工作簿名稱存儲在其中。但是,您將數組聲明爲Single,這是一種數字數據類型。根據CreateStats(strArray)子的做法,您可能需要將其從Single更改爲String,或者可能需要設置另一個數組來保存Single,並且此數組保存String。