Chiết xuât dữ liệu file A sang File B bằng VBA

Liên hệ QC
Tôi tuân thủ nội quy khi đăng bài

tranthanh2200

Thành viên hoạt động
Tham gia
12/1/18
Bài viết
150
Được thích
32
Donate (Momo)
Donate
Giới tính
Nam
Em đang tập VBA mà viết song theo ý hiểu nhưng nó lỗi tùm lum. Nhờ các bác sửa giúp code này với a.
Mô tả: Em định tạo 1 file với tên là dulieu có 3 sheet data, cd, ccd
Sau đó past dữ liệu sau khi lọc từ file gốc sang.
Option Explicit
Sub taomoi()
Dim i As Byte
Dim Vungcd As Range
Dim Vungccd As Range
Dim wb As Workbook
Dim DC As Long
Dim DT As Range

Workbooks.Add
ActiveWorkbook.SaveAs "Dulieu.xlsm"
Set wb = Application.Workbooks("Dulieu")

For i = 1 To 2
Worksheets.Add
Next i

Sheet1.Name = "Data"
Sheet2.Name = "CD"
Sheet3.Name = "CCD"

Set Vungcd = Workbooks("Dulieu").Worksheets("CD").Range("A1")
Set Vungccd = Workbooks("Dulieu").Worksheets("CCD").Range("A1")

ThisWorkbooks.Worksheets("tudien").Select
Sheet2.Range("B2").Select
DC = ActiveWorkbook.Sheet2.Range("B" & Rows.Count).End(xlUp).Row

Set DT = Sheet2.Range("A2:E" & DC)

DT.AutoFilter Field:=5, Criteria1:=">=12", Operator:=xlAnd
DT.Copy
Vungcd.PasteSpecial xlPasteValues

DT.AutoFilter Field:=5, Criteria1:="<12", Operator:=xlAnd
DT.Copy
Vungccd.PasteSpecial xlPasteValues

DT.AutoFilter
DT.Copy
Application.Workbooks("Dulieu").Worksheets("Data").Range("A1").PasteSpecial xlPasteValues


End Sub
 
Em đang tập VBA mà viết song theo ý hiểu nhưng nó lỗi tùm lum. Nhờ các bác sửa giúp code này với a.
Mô tả: Em định tạo 1 file với tên là dulieu có 3 sheet data, cd, ccd
Sau đó past dữ liệu sau khi lọc từ file gốc sang.
Option Explicit
Sub taomoi()
Dim i As Byte
Dim Vungcd As Range
Dim Vungccd As Range
Dim wb As Workbook
Dim DC As Long
Dim DT As Range

Workbooks.Add
ActiveWorkbook.SaveAs "Dulieu.xlsm"
Set wb = Application.Workbooks("Dulieu")

For i = 1 To 2
Worksheets.Add
Next i

Sheet1.Name = "Data"
Sheet2.Name = "CD"
Sheet3.Name = "CCD"

Set Vungcd = Workbooks("Dulieu").Worksheets("CD").Range("A1")
Set Vungccd = Workbooks("Dulieu").Worksheets("CCD").Range("A1")

ThisWorkbooks.Worksheets("tudien").Select
Sheet2.Range("B2").Select
DC = ActiveWorkbook.Sheet2.Range("B" & Rows.Count).End(xlUp).Row

Set DT = Sheet2.Range("A2:E" & DC)

DT.AutoFilter Field:=5, Criteria1:=">=12", Operator:=xlAnd
DT.Copy
Vungcd.PasteSpecial xlPasteValues

DT.AutoFilter Field:=5, Criteria1:="<12", Operator:=xlAnd
DT.Copy
Vungccd.PasteSpecial xlPasteValues

DT.AutoFilter
DT.Copy
Application.Workbooks("Dulieu").Worksheets("Data").Range("A1").PasteSpecial xlPasteValues


End Sub
Bạn có thể viết rõ sheet1 sheet2 sheet2 rõ ràng ra. Cái nào set rồi thì sử dụng nó triệt để. Rõ ràng. Tường minh ra
 
Upvote 0
Em đang tập VBA mà viết song theo ý hiểu nhưng nó lỗi tùm lum. Nhờ các bác sửa giúp code này với a.
Mô tả: Em định tạo 1 file với tên là dulieu có 3 sheet data, cd, ccd
Sau đó past dữ liệu sau khi lọc từ file gốc sang.
Mã:
Option Explicit

Sub taomoi()
Dim i As Byte
Dim Vungcd As Range
Dim Vungccd As Range
Dim wb As Workbook
Dim DC As Long
Dim DT As Range

Workbooks.Add
ActiveWorkbook.SaveAs "Dulieu.xlsm"
Set wb = Application.Workbooks("Dulieu")

For i = 1 To 2
Worksheets.Add
Next i

Sheet1.Name = "Data"
Sheet2.Name = "CD"
Sheet3.Name = "CCD"
Set Vungcd = Workbooks("Dulieu").Worksheets("CD").Range("A1")
Set Vungccd = Workbooks("Dulieu").Worksheets("CCD").Range("A1")

ThisWorkbooks.Worksheets("tudien").Select
Sheet2.Range("B2").Select
DC = ActiveWorkbook.Sheet2.Range("B" & Rows.Count).End(xlUp).Row
Set DT = Sheet2.Range("A2:E" & DC)
DT.AutoFilter Field:=5, Criteria1:=">=12", Operator:=xlAnd
DT.Copy
Vungcd.PasteSpecial xlPasteValues
DT.AutoFilter Field:=5, Criteria1:="<12", Operator:=xlAnd
DT.Copy
Vungccd.PasteSpecial xlPasteValues
DT.AutoFilter
DT.Copy
Application.Workbooks("Dulieu").Worksheets("Data").Range("A1").PasteSpecial xlPasteValues
End Sub
Nên đưa vào thẻ code.
 
Upvote 0
Khi gặp khó khăn với code cả mấy chục dòng như thế thì dùng chính sach "chia để trị"
Phần đặt file với 4 sheets là một công việc.
Phần đẩy dữ liệu từ file gốc sang là một công việc.
Chéo code hai phần ấy vào hai sub riêng (tạm đẩy phần khai báo biến lên trên, biến toàn cục)

' khai báo biến ở đây

' hết khai báo biến
Sub Chu()
call Phan1
call Phan2
End Sub

Sub Phan1
...
Sub Phan2
...

Lúc ấy sẽ dễ tìm ra chỗ sai hơn.

Chú: sau khi chạy hoàn chỉnh, sửa các từ Dim thành Private
Hoặc, nếu muốn gộp lại thì cũng dễ biết cách gộp.
 
Upvote 0
Những kiến thức như thẻ code, biến toàn cục, call em mới đọc qua nhưng chưa dám mở rộng vì áp dụng lại loạn thần. Em sẽ nghiên cứu từng bước như các bác hướng dẫn. Nếu khó quá nhờ các bác đỡ 1 tay cho thông não. Xin cảm ơn các bác.
 
Upvote 0
Ngay từ đầu với 2 dòng này đã không chạy được thì không biết lỗi tùm lum là thế nào nhỉ?
ActiveWorkbook.SaveAs "Dulieu.xlsm" 'Không có FileFormat:=xlOpenXMLWorkbookMacroEnabled thì làm sao lưu được dạng .xlsm?
Set wb = Application.Workbooks("Dulieu") 'Tên file cụt thế này thì làm sao code chấp nhận?
 
Upvote 0
Em đang tập VBA mà viết song theo ý hiểu nhưng nó lỗi tùm lum. Nhờ các bác sửa giúp code này với a.
Mô tả: Em định tạo 1 file với tên là dulieu có 3 sheet data, cd, ccd
Sau đó past dữ liệu sau khi lọc từ file gốc sang.
Option Explicit
Sub taomoi()
Dim i As Byte
Dim Vungcd As Range
Dim Vungccd As Range
Dim wb As Workbook
Dim DC As Long
Dim DT As Range

Workbooks.Add
ActiveWorkbook.SaveAs "Dulieu.xlsm"
Set wb = Application.Workbooks("Dulieu")

For i = 1 To 2
Worksheets.Add
Next i

Sheet1.Name = "Data"
Sheet2.Name = "CD"
Sheet3.Name = "CCD"

Set Vungcd = Workbooks("Dulieu").Worksheets("CD").Range("A1")
Set Vungccd = Workbooks("Dulieu").Worksheets("CCD").Range("A1")

ThisWorkbooks.Worksheets("tudien").Select
Sheet2.Range("B2").Select
DC = ActiveWorkbook.Sheet2.Range("B" & Rows.Count).End(xlUp).Row

Set DT = Sheet2.Range("A2:E" & DC)

DT.AutoFilter Field:=5, Criteria1:=">=12", Operator:=xlAnd
DT.Copy
Vungcd.PasteSpecial xlPasteValues

DT.AutoFilter Field:=5, Criteria1:="<12", Operator:=xlAnd
DT.Copy
Vungccd.PasteSpecial xlPasteValues

DT.AutoFilter
DT.Copy
Application.Workbooks("Dulieu").Worksheets("Data").Range("A1").PasteSpecial xlPasteValues


End Sub
Tập VBA thì nên bắt đầu từ bài nhỏ, vấn đề nhỏ: nếu lớn thì cũng nên chia nhỏ thử từng trường hợp rồi ghép vào sau
Còn ôm đồm luôn thì không biết lấy code từ đâu, hãy viết tốt từng phần thì sẽ hợp lại được kết quả.
 
Upvote 0
Ngay từ đầu với 2 dòng này đã không chạy được thì không biết lỗi tùm lum là thế nào nhỉ?
ActiveWorkbook.SaveAs "Dulieu.xlsm" 'Không có FileFormat:=xlOpenXMLWorkbookMacroEnabled thì làm sao lưu được dạng .xlsm?
Set wb = Application.Workbooks("Dulieu") 'Tên file cụt thế này thì làm sao code chấp nhận?
Cháu mới tập. Còn chưa hiểu cấu trúc, nhờ chú chỉ dạy thêm ạ
Bài đã được tự động gộp:

Cháu chuyển sang đuổi xlsx được không chú. Cháu chưa hiểu chỗ fileformat la thế nào a
Bài đã được tự động gộp:

Tập VBA thì nên bắt đầu từ bài nhỏ, vấn đề nhỏ: nếu lớn thì cũng nên chia nhỏ thử từng trường hợp rồi ghép vào sau
Còn ôm đồm luôn thì không biết lấy code từ đâu, hãy viết tốt từng phần thì sẽ hợp lại được kết quả.
Em tự viết theo ý hiểu. Nhưng chưa rõ cấu trúc lắm nên chạy lỗi
Bài đã được tự động gộp:

Ngay từ đầu với 2 dòng này đã không chạy được thì không biết lỗi tùm lum là thế nào nhỉ?
ActiveWorkbook.SaveAs "Dulieu.xlsm" 'Không có FileFormat:=xlOpenXMLWorkbookMacroEnabled thì làm sao lưu được dạng .xlsm?
Set wb = Application.Workbooks("Dulieu") 'Tên file cụt thế này thì làm sao code chấp nhận?
Set wb = Application.Workbooks("Dulieu") sao lại cụt nhỉ chú, cháu chưu hiểu :)))
 
Lần chỉnh sửa cuối:
Upvote 0
Cháu mới tập. Còn chưa hiểu cấu trúc, nhờ chú chỉ dạy thêm ạ
Bài đã được tự động gộp:

Cháu chuyển sang đuổi xlsx được không chú. Cháu chưa hiểu chỗ fileformat la thế nào a
Bài đã được tự động gộp:


Em tự viết theo ý hiểu. Nhưng chưa rõ cấu trúc lắm nên chạy lỗi
Bài đã được tự động gộp:


Set wb = Application.Workbooks("Dulieu") sao lại cụt nhỉ chú, cháu chưu hiểu :)))
1. Muốn lưu dạng .xlsm thì câu lệnh là:
ActiveWorkbook.SaveAs FileName:="Dulieu.xlsm", FileFormat:=xlOpenXMLWorkbookMacroEnabled
hoặc đơn giản là:
ActiveWorkbook.SaveAs "Dulieu.xlsm", xlOpenXMLWorkbookMacroEnabled

2. Muốn lưu dạng .xlsx ( tức là không chứa macro) thì:
ActiveWorkbook.SaveAs "Dulieu.xlsx", xlOpenXMLWorkbook

3. Bạn xem tên Dulieu có cái đuôi nào không? Không có đuôi thì gọi là cụt (đuôi) chứ gì nữa!
 
Upvote 0
Cái này tiếng Anh gọi là:
biting off more than you can chew"
(ngốn miếng to quá, miệng nhai không xuể)


Bạn nhào vào cái đống code phức tạp quá so với trình độ của bạn nên ngốn không xuể. Tôi mách cho cách chia nhỏ ra. Nhưng bạn vẫn không làm được có nghĩa là bạn với cao quá. Chỉ còn cách là bỏ qua cái này đi và kiếm cái nào đơn giản, nho nhỏ hơn mà học. Thà biết in ít mà vững còn hơn dồn cả đống mà không rành, đưa code ra dân chuyện nghiệp nó cười cho thúi mũi.
 
Upvote 0
Cái này tiếng Anh gọi là:
biting off more than you can chew"
(ngốn miếng to quá, miệng nhai không xuể)


Bạn nhào vào cái đống code phức tạp quá so với trình độ của bạn nên ngốn không xuể. Tôi mách cho cách chia nhỏ ra. Nhưng bạn vẫn không làm được có nghĩa là bạn với cao quá. Chỉ còn cách là bỏ qua cái này đi và kiếm cái nào đơn giản, nho nhỏ hơn mà học. Thà biết in ít mà vững còn hơn dồn cả đống mà không rành, đưa code ra dân chuyện nghiệp nó cười cho thúi mũi.
Mình làm được rồi. Theo hướng dẫn tách nhỏ dữ liệu chạy từng đoạn. Xin cảm ơn tất cả đã giúp đỡ và hướng dẫn. Chúc mọi người một ngày tốt lành :)
 
Upvote 0
Web KT

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

Back
Top Bottom