Tạo PivotTable bằng VBA.

Liên hệ QC

SteveNguyen1991

Thành viên chính thức
Tham gia
22/8/20
Bài viết
82
Được thích
33
Chào các bác,
em đang tạo Pivottable bằng VBA. Em có 2 workbook. trong Workbook("CHECK") có nút nhấn Copy, khi nhấn vào thì sẽ copy dữ liệu từ Workbook("ERP") qua Workbook("CHECK").Sheets("ERP") rồi tạo 1 PivotTable trong Sheets("ERP").

Mã:
Sub Copy_Data()
Application.ScreenUpdating = False
Dim WS1 As Worksheet
Dim WS2 As Worksheet
Dim NAME As String
Workbooks.Open Filename:=ThisWorkbook.Path & "\ERP"
Set WS1 = ActiveWorkbook.Sheets(1)
Set WS2 = ThisWorkbook.Sheets(2)
Dim LastRow2 As Double
LastRow2 = Excel.WorksheetFunction.CountA(WS2.Range("B:B"))


NAME = ActiveWorkbook.NAME
WS1.Range("D:D").Copy WS2.Range("B:B")
WS1.Range("F:F").Copy WS2.Range("C:C")
WS2.Range("B1") = "Items on ERP"
WS2.Range("C1") = "QTY on ERP"
Workbooks(NAME).Close SAVECHANGES:=False
WS2.Range("C2").WrapText = False
WS2.Range("B:B,C:C").EntireColumn.AutoFit
 
 '' MAKE PIVOTTABLE
 
  ActiveWorkbook.PivotCaches.Create(SourceType:=xlDatabase, SourceData:= _
  WS2.Range("B2:C" & LastRow2), Version:=6).CreatePivotTable _
 TableDestination:=WS2.Range("E2"), TableName:="ERP_INK", defaultVersion:=6
 
 WS2.Activate
' Give a name of Collumn1
 With ActiveSheet.PivotTables("ERP_INK").PivotFields("Item No.")
 .Orientation = xlRowField
 .Position = 1
 End With
 ' Give a name of collumn2
   ActiveSheet.PivotTables("ERP_INK").AddDataField ActiveSheet.PivotTables("ERP_INK").PivotFields("Qty. (Calculated)"), "Sum of QTY", xlSum

 
  Application.ScreenUpdating = True

End Sub
LỖI: khi em bấm nút nhấn Copy thì bị lỗi nhưng hình 17 bên dưới.
em bấm vào End rồi bấm tiếp nút nhấn Copy lần 2 thì ra kết quả như mong muốn.
bác nào giải thích giúp em với!!
 

File đính kèm

  • 17.jpg
    17.jpg
    91.5 KB · Đọc: 16
  • ERP.xlsx
    14.7 KB · Đọc: 5
  • CHECK.xlsm
    47.5 KB · Đọc: 6
Xoá Pivot cũ tồn tại ở 2 cột E:F trước khi tạo pivot mới

WS2.Range("E:F").Clear

Chào anh,
em đã thêm code xóa Pivot cũ bằng lệnh WS2.Range("E:F").Clear nhưng vẫn không được. Em mở Sheets("ERP") lên xóa thủ công rồi chạy code thì vẫn phải bấm 2 lần. Cũng là đoạn code đó em tách ra làm 2 nút nhấn thì lại chạy ngon lành.
 
Upvote 0
Chào anh,
em đã thêm code xóa Pivot cũ bằng lệnh WS2.Range("E:F").Clear nhưng vẫn không được. Em mở Sheets("ERP") lên xóa thủ công rồi chạy code thì vẫn phải bấm 2 lần. Cũng là đoạn code đó em tách ra làm 2 nút nhấn thì lại chạy ngon lành.
Office của bạn có vấn đề rồi.
 
Upvote 0
Web KT

Bài viết mới nhất

Back
Top Bottom