|
こんにちは。
以下のxlsxを結合するマクロを使おうとしたら、問題が生じました。
たとえばa.xlsxとb.xlsxがあったとしますと、
先に開いたxlsxの最下行をポイントしたまではよかったのですが、その行に
次に開いたxlsxの最上行つまりタイトル行がかぶってpasteされてしまい、その後、タイトル行がdeleteされます。
つまり先に開いたxlsxの最下行のレコードがdeleteされてしまう のです。
この問題を解決するにはどう記述すればよろしいでしょうか。
Sub Test()
Dim Files, FilesCnt As Integer, i As Integer
Dim cBook As Workbook, pBook As Workbook
Files = Application.GetOpenFilename _
(FileFilter:="CsVFile(*.xlsx), *.xlsx", MultiSelect:=True)
If IsArray(Files) Then
Set pBook = Workbooks.Add(xlWBATWorksheet)
FilesCnt = UBound(Files)
For i = 1 To FilesCnt
Workbooks.Open Files(i)
Set cBook = ActiveWorkbook
If i > 1 Then
cBook.ActiveSheet.UsedRange.Offset(1, 0).Copy
Else
cBook.ActiveSheet.UsedRange.Copy
End If
With pBook.ActiveSheet
.Cells(.Range("A65536").End(xlUp).Row, 1). _
PasteSpecial (xlPasteAll)
End With
Application.CutCopyMode = False
cBook.Close
Next i
End If
ActiveWorkbook.SaveAs Filename:="D:\Test.xlsx", FileFormat:= _
xlOpenXMLWorkbook, CreateBackup:=False
ActiveWorkbook.Close Filename:="D:\Test.xlsx"
MsgBox "終了しました。"
Set cBook = Nothing: Set pBook = Nothing
End Sub
|
|