У меня есть 2 файла CSV orders_by_user_backlog и orders_by_user_pivot. Я хочу создать с VBA файл .xlsx, который называется «Отчеты по заказам пользователей», содержащий 2 листа.Скопировать данные из разных книг и обновить сводную таблицу EXCEL VBA
Первый лист, называемый backlog, я просто скопирую данные из orders_by_user_backlog.csv и вставьте его туда.
Второй лист под названием pivot, я скопирую данные из orders_by_user_pivot.csv и вставлю его туда и обновить сводную таблицу на том же листе с новыми данными.
Я использую .xlsx файл как шаблон под названием Заказы пользователей Шаблон
Вот мой код
Sub Orders_by_User_report()
Application.ScreenUpdating = False
Application.DisplayAlerts = False
'open the csv output from query orders by user backlog
Workbooks.Open FileName:="C:\Reports\orders_by_user_backlog.csv"
Cells.Select
Selection.Copy
Workbooks.Open FileName:= _
"C:\Reports\Report templates\Orders By Users Template.xlsx"
Sheets(1).Select
Cells.Select
ActiveSheet.Paste
'Bold and color top row, add autofilter, zoom 80% and autofit
Range("A1:H1").Select
Selection.Interior.Color = 255
Selection.Font.Bold = True
Selection.AutoFilter
ActiveWindow.Zoom = 80
Cells.Select
Cells.EntireColumn.AutoFit
'open the csv output from query orders by user pivot
Workbooks.Open FileName:="C:\Reports\orders_by_user_pivot.csv"
Cells.Select
Selection.Copy
Workbooks.Open FileName:= _
"C:\Reports\Report templates\Orders By Users Template.xlsx"
Sheets(2).Select
Cells.Select
ActiveSheet.Paste
'Bold and color top row, add autofilter, zoom 80% and autofit
Range("A1:D1").Select
Selection.Interior.Color = 255
Selection.Font.Bold = True
Selection.AutoFilter
ActiveWindow.Zoom = 80
Cells.Select
Cells.EntireColumn.AutoFit
'refresh pivot table
Sheets(2).Select
ActiveSheet.PivotTables("PivotTable1").PivotCache.Refresh
'save file as xlsx for the output
ActiveWorkbook.SaveAs FileName:= _
"C:\Reports\Orders by Users\Orders by Users Report " & ".xlsx" _
, FileFormat:=xlOpenXMLWorkbook, CreateBackup:=False
ActiveWindow.Close
ActiveWindow.Close
Application.DisplayAlerts = True
Application.ScreenUpdating = True
End Sub
Я знаю, где моя проблема, это в «ActiveSheet», но я Жду» не знаю, как это исправить. Everytime я использую
ActiveSheet.Paste
или
ActiveSheet.PivotTables ("PivotTable1"). PivotCache.Refresh
он показывает мне ошибку в второй ActiveSheet.Paste, когда я комментирую эту часть и пытаюсь только с одним CSV-файлом, она вставляется отлично, а затем снова останавливается в ActiveSheet.PivotTables.
Может кто-нибудь, пожалуйста, посоветуйте мне, что изменить в моем коде? Большое спасибо.
try 'ActiveSheet.PivotTables (« PivotTable1 »). RefreshTable' –
Я пробовал это раньше, и он не работал. Проблема в ActiveSheet, потому что она перестает работать там со второго ActiveSheet.Paste – JuniorDev
Не используйте метод activesheet, это не очень удобно. Определите ваши листы явно, т.е. Worksheet («Sheet1»). PivotTables («PivotTable1») – User632716