| 
    
     |  | あと、もう1点 プロシージャの最後で
 
 >  Set cBook = Nothing
 
 しておられますが、
 つけるなら、For〜Nextのなかで、iが変わるごとに Set cBookしている
 ので、それの「使用が終了した」とき、つまり
 > cBook.Close False
 のあとが正しい位置です。
 
 >    For i = 1 To UBound(Files)
 >      Set cBook = Workbooks.Open(Files(i))
 >      With pBook.Worksheets(1) 'コピー先シート最終セル
 >        Set rCopyTo = .Cells(.Rows.Count, 1).End(xlUp)
 >      End With
 >      m = IIf(i = 1, 0, 1) 'iが1のとき Offsetは無し
 >      cBook.ActiveSheet.UsedRange.Offset(m).Copy _
 >       rCopyTo.Offset(m)
 >      cBook.Close False
 Set cBook = Nothing 'cBookの使用を終了したことを知らせる
 >    Next i
 
 ただし、そう書かなくても、i = 2 のとき Set cBook = のところで
 これまでの cBookを破棄して あらたに cBookに別のWorkbookを割り当てる
 のをVBAが裏で自動でやっていてくれますから、通常は
 
 >     Set cBook = Nothing 'cBookの使用を終了したことを知らせる
 
 は書きません。
 pBook についても、プロシージャを終了するときに 自動で破棄されます
 から、真面目につけなくてもいいのですが(^^)...
 まあ、強いてつけるとしたら、
 
 >  pBook.Close True
 
 の直後、
 
 >  MsgBox "終了しました。"
 
 の直前でしょうか?
 
 
 |  |