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、sub プロシージャを更新してCreateStats、配列をパラメーターとして受け入れるようにする必要があります。次のようになります。

Private Sub CreateStats(myArray() As String)

現在のように、プロシージャは単一の文字列のみを受け入れます。文字列の配列を受け入れる必要があります。それができたら、各文字列をループして処理を行うことができます。

于 2013-03-18T20:55:32.803 に答える
1

配列strArrayに名前を付けると、文字列の配列が表示され、実際にはワークブック名​​を格納しようとします。ただし、配列を数値データ型である Single として宣言しました。サブが何をするかに応じてCreateStats(strArray)、それを Single から String に変更するか、Single を保持する別の配列と String を保持する配列を設定する必要がある場合があります。

于 2013-03-18T20:58:16.177 に答える