2016-10-03 477 views
0

フォルダ内のすべてのワークブックをループするマクロを作成しようとしていて、それぞれが条件を満たす行の範囲の電子メールを送信します。マクロを実行すると、最初のファイルではこれが実行されますが、 "Set rng2 = Union(rng2、row)"という行を指して、オブジェクト '_Global'の "メソッド 'Union'にエラーが発生しました。以下は、関連するコードは次のとおりです。VBAメソッド '_Global'オブジェクトの 'Union'が失敗しました

Sub LoopThroughFiles() 

Dim File As String 

File = Dir("FilePath\") 

While (File <> "") 

    Set WorkBk = Workbooks.Open("FilePath\" & File) 

    Dim rng As Range 
    Dim row As Range 
    Dim rng2 As Range 
    Dim strbody As String 

    Dim OutApp As Object 
    Dim OutMail As Object 

    Set rng = Range("B52:I200") 

    For Each row In rng.Rows 
     If row.Columns(7) >= Date Then 
      If Not rng2 Is Nothing Then 
       'Below is the line that gets the error 
       Set rng2 = Union(rng2, row) 
      Else 
       Set rng2 = row 
      End If 
     End If 
    Next 

    'Email code removed 

    WorkBk.Close savechanges:=True 

    File = Dir() 

Wend 

End Sub 

任意の助けをいただければ幸いです!

答えて

3

Unionには、以前のワークブックを使用して作成したのと同じ範囲で試行しています。処理するファイルごとにrng2をクリアする必要があります。

WorkBk.Close savechanges:=True 
Set rng2 = Nothing '<---You just closed the workbook this range was built with. 
File = Dir() 
関連する問題