
[英]How to copy last row of data in all worksheets and paste it into one worksheet
[英]Setting the last row in a given worksheet and copy all the data and paste into another sheet and update a pivot table
嗨,我有一个第三方软件,它根据我运行的报告生成一个 excel 文件。 它将数据临时存储在名为reportdata.txt
的文本文件中,然后生成名为reportdata.txt
的工作簿,并将文本文件中的数据复制到该文件中。 我希望 VBA 将所有数据从 A 列到 N 列复制到最后一行,并将其粘贴到工作簿 1 中名为 ExcelList 的工作簿中。这反过来将用于填充数据透视表。 但是,我使用的代码并未复制所有数据。 并且数据透视表不刷新,这是代码
Sub Auto_Open()
'On Error GoTo ErrorHandler
Application.ScreenUpdating = False
Application.DisplayStatusBar = False
ThePath = ThisWorkbook.Path
Workbooks.Open Filename:=ThePath + "\ReportData.txt"
' Copy the workbook, and close the source text file (having marked it as saved)
Set Wbook = ActiveWorkbook
ActiveSheet.Copy
Wbook.Saved = True
'copy select bits of ReportData to Student Details and make the latter active
LastRow = Workbooks("ExcelList.xlsm").Sheets("Sheet1").Range("A" & Rows.Count).End(xlUp).Row
Workbooks("ExcelList.xlsm").Sheets("Sheet1").Range("A1:N" & LastRow) = Workbooks("ReportData.txt").Sheets("Reportdata").Range("A3:N" & LastRow).value
Workbooks("ReportData.txt").Close
Workbooks("Book1").Saved = True
Workbooks("ExcelList.xlsm").Sheets("Sheet1").Activate
'Recalculate the worksheet
Application.Calculation = xlCalculationAutomatic
' Refresh_Macro Macro
Sheets("Sheet2").Select
ActiveWorkbook.ShowPivotTableFieldList = False
ActiveSheet.PivotTables("PivotTable1").PivotCache.Refresh
' Mark the active workbook as saved
ActiveWorkbook.Saved = True
Application.ScreenUpdating = True
Application.DisplayStatusBar = True
Workbooks("ExcelList.xlsm").Saved = True
'Workbooks("ExcelList.xls").Close
Exit Sub
它没有导入所有数据可能是因为您在工作表上使用 LastRow
LastRow = Workbooks("ExcelList.xlsm").Sheets("Sheet1").Range("A" & Rows.Count).End(xlUp).Row
作为 LastRow 也在您的文本文件中。
Workbooks("ReportData.txt").Sheets("Reportdata").Range("A3:N" & LastRow).value
尝试
Option Explicit
Sub Auto_Open_1()
Const TEXTFILE = "ReportData.txt"
Dim Path, wbSource As Workbook, wsSource As Worksheet
Dim wb As Workbook, ws As Worksheet, iLastRow As Long
Dim rngSource As Range
Path = ThisWorkbook.Path
'Debug.Print Path
Set wbSource = Workbooks.Open(ThisWorkbook.Path & "\" & TEXTFILE, False, True)
Set wsSource = wbSource.Sheets(1)
iLastRow = wsSource.Cells(Rows.Count, 1).End(xlUp).Row
Set rngSource = wsSource.Range("A3:N" & iLastRow)
'Debug.Print wsSource.Name, iLastRow
Set wb = ThisWorkbook
Set ws = wb.Sheets("Sheet1")
'ws.Cells.Clear
rngSource.Copy ws.Range("A1")
wbSource.Close False
' refresh pivot
wb.ShowPivotTableFieldList = False
wb.Sheets("Sheet2").PivotTables("PivotTable1").PivotCache.Refresh
' end
MsgBox iLastRow - 2 & " rows copied from " & TEXTFILE, vbInformation
'wb.Saved = True
wb.Close
End Sub
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.