|
あと、もう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 "終了しました。"
の直前でしょうか?
|
|