XD360 KÍNH CHÚC CHO MỌI NHÀ VẠN SỰ AN LÀNH!

Phần mềm ôn thi sát hạch chứng chỉ hành nghề xây dựng

 Quên mật khẩu
 Đăng ký mới
Anh Trần HòeBùi Quốc Hưng
Xem: 3320|Trả lời: 15
Thu gọn cột thông tin

[Nhờ kiểm tra giúp] Code VBA Copy dữ liệu từ file Excel (sheet) khác

[Lấy địa chỉ]
thanh.bm Đăng lúc 11/10/2019 12:00 | Xem tất |Chế độ đọc

Hãy đăng nhập để có nhiều chức năng hữu dụng hơn và xem ảnh rõ hơn!

Bạn phải đăng nhập để xem được nội dung, nếu bạn chưa có tài khoản? hãy Đăng ký mới

x
Chào anh em,
Hiện tôi đang lập 1 file tổng hợp các dữ liệu (Copy) từ các file khác vào 1 file tổng hợp, để làm báo cáo khi cần.
Nôm na là:
+ 1 file chính được xây dựng các form được xây dựng sẵn (Chính).
+ Lấy dữ liệu (Copy) bao gồm cả định dạng từ các file báo cáo (File này với dòng cột, định dạng tương ứng file chính).
Tuy nhiên, khi chạy VBA, không rõ lỗi ở đâu mà không thể chạy được. Mong anh em kiểm tra code VBA này giúp.

Cụ thể: Theo file đính kèm là:
1. File excel với tên  "STL00Full_Master_Full" là File chính, để báo cáo, các dữ liệu được copy từ các file con vào đây.
trong này, vùng tiêu đề đã được xây dựng sẵn.
- Các cột tương ứng với các tiêu đề tương ứng với tất cả các file báo cáo.
- Có 1 nút được đặt tên "COPY DATA", khi click vào đây sẽ hiện ô cửa sổ để chọn các file cần lấy dữ liệu.



2. Các file có tiêu đề là "STL001; STL002; STL003" - tạm lấy mẫu cho 3 file, thực tế sẽ có nhiều file hơn nữa.
- Là các file được các đơn vị báo cáo, gửi về.
- Là dữ liệu cơ sở để tổng hợp vào file chính như ở mục (1),c hỉ lấy dữ liệu ở sheet có tên "NganSach"



VẤN ĐỀ:
- Tôi đã xây dựng code VBA. Nhưng ở đây chỉ chạy được độc lập (Copy) được 1 file.
- Nếu chọn nhiều file (từ 2 file excel báo cáo trở lên thì chỉ copy được file cuối cùng.
- Khi chạy VBA thường xuất hiện các bản thông báo Update, có cách nào bỏ được thông báo này không?

MONG ANH EM GIÚP.

Thân chào!



www.xaydung360.vn XÂY TÂM, DỰNG TẦM CHUYÊN NGHIỆP

tranhoe Đăng lúc 11/10/2019 21:27 | Xem tất
Đầu tiên là bị lỗi ở:
Set master = ActiveWorkbook.Sheets("Ngan Sach_SAMTUYENLAM")
Đúng phải là:
Set master = ActiveWorkbook.Sheets("Ngan Sach_Master")

Sửa xong mới đến nhều vấn đề:
- Cái này nói sau nhưng phải nói trước: các file của em (STL001_Du An.slsx, STL002_Du An.slsx, STL003_Du An.slsx, STL00Full_Master_Full.xlsm) đều bị lỗi Update dữ liệu khi chưa dùng đến Macro. Vậy thì phải xử trước, khi đó sẽ không có câu hỏi cần Update dữ liệu (khi chạy VBA) đối với từng file nữa.
- Cơ sở dữ liệu của Em: với từng file thì cell cuối cùng (của dòng dữ liệu cần lấy) không phải ở cột "A", nên sẽ rối Code (Anh cũng chưa chạy từng dòng để phát hiện), dẫn đến chỉ ghi được 1 file dữ liệu thôi.
- Anh cũng chưa hiểu hết ý đồ của file Master nên với CSDL của em thì không thể áp dụng cái Code trong những bài thực hành (như em vừa đăng trên xd360), còn rất và rất nhiều cái để giải quyết.

Đôi điều góp ý!. Thân

Đánh giá

Mong bạn tiếp tục chia sẻ. Thanks!: 5.0
Mong bạn tiếp tục chia sẻ. Thanks!: 5
Cám ơn anh Hòe. Em đang vừa tự học, vừa mầy mò áp dụng vào file đang làm. Mà lỗi tùm lum. Cám ơn góp ý của anh.   Đăng lúc 12/10/2019 22:51

www.xaydung360.vn XÂY TÂM, DỰNG TẦM CHUYÊN NGHIỆP

Trả lời Hay 1 Dở 0

Dùng đạo cụ Báo cáo

tranhoe Đăng lúc 16/10/2019 16:35 | Xem tất
thanh.bm gửi lúc 16/10/2019 09:37
Chào anh em,
Sau khi mầy mò, cuối cùng cũng làm được. Nay fix lại, gửi anh em tham khảo ...

1./ Trong cả file tổng STL00Full_Master_Full.xlsm và các file dữ liệu con đều có Name "Status" nên mỗi lần Copy dữ liệu qua đều bị báo trùng Name phải xác nhận ghi đè hay sửa Name
Name "Status" có cần dùng không?, nếu không thì xóa để khỏi bị hỏi.
2./ Sau khi dán dữ liệu thì nên nhớ giải phóng bộ nhớ cho phần copy (để khỏi bị hỏi). Dùng
[Visual Basic] 纯文本查看 复制代码
Application.CutCopyMode = False


3./ Macro Xóa dữ liệu còn thừa nhiều lệnh (do ghi macro rồi xóa chưa hết.


Đánh giá

Mong bạn tiếp tục chia sẻ. Thanks!: 5.0
Mong bạn tiếp tục chia sẻ. Thanks!: 5
Em bị vấn đề ấy mà chưa biết giải quyết thế nào. VBA của em còn non, cám ơn bác rất nhiều.  Đăng lúc 17/10/2019 08:41

www.xaydung360.vn XÂY TÂM, DỰNG TẦM CHUYÊN NGHIỆP

Trả lời Hay 1 Dở 0

Dùng đạo cụ Báo cáo

 Tác giả| thanh.bm Đăng lúc 16/10/2019 09:37 | Xem tất
Chào anh em,
Sau khi mầy mò, cuối cùng cũng làm được. Nay fix lại, gửi anh em tham khảo.
1. Đây là file mà tôi thường hay quản lý Ngân sách dự án, trong này:
- Đây là file quản lý các hợp đồng, phục vụ cho việc lập ngân sách/ quản lý ngân sách của Các dự án riêng rẽ hoặc tổng hợp (FIle Master).
- Anh em có thể tuỳ biến muốn bổ sung thông tin hoặc copy dữ liệu nào (Tuỳ chọn).
Lưu ý: Tên sheet Copy  "NganSach", Các anh em tải về sửa lại tên Sheet, và đồng thời sửa lại Code, đoạn nào có chữ "NganSach", tuỳ thích ở File có tên "STL00Full_Master_Full" .

2. Anh em tham khảo theo file này nhé.

                               
Đăng nhập/Đăng ký mở rộng

VBA Copy Du lieu tu sheet da dong khac.rar (341.4 KB, Lượt tải về: 33)

Số người tham gia 2Thanked +12 Thu lại Lý do
panhprohp123 + 2 Rất chuyên nghiệp! Thanks!
tranhoe + 10 Thích bài này! Thanks!

Xem tất cả

www.xaydung360.vn XÂY TÂM, DỰNG TẦM CHUYÊN NGHIỆP

tranhoe Đăng lúc 20/10/2019 15:11 | Xem tất
thanh.bm gửi lúc 16/10/2019 09:37
Chào anh em,
Sau khi mầy mò, cuối cùng cũng làm được. Nay fix lại, gửi anh em tham khảo ...

Đã rà soát kỹ Code và tinh chỉnh lại; đồng thời xóa 4 name trong 4 file. File chạy khá nhanh.
File: VBA Copy Du lieu tu sheet da dong khac2.rar (344.46 KB, Lượt tải về: 16)

Đánh giá

Mong bạn tiếp tục chia sẻ. Thanks!: 5.0
Mong bạn tiếp tục chia sẻ. Thanks!: 5
Chân thành cám ơn bác. Sau khi em hoàn thiện file QL này một cách đầy đủ thì sẽ post lên để anh em tham khảo.  Đăng lúc 21/10/2019 09:08

www.xaydung360.vn XÂY TÂM, DỰNG TẦM CHUYÊN NGHIỆP

 Tác giả| thanh.bm Đăng lúc 25/10/2019 15:18 | Xem tất
tranhoe gửi lúc 20/10/2019 15:11
Đã rà soát kỹ Code và tinh chỉnh lại; đồng thời xóa 4 name trong 4 file. File chạy kh ...

Chào anh Hoè,
Em vẫn bị 1 lỗi, mò mãi không ra, cụ thể:
1. Xuất hiện Status khi chạy VBA. Mình có cách nào dùng VBA bỏ thông báo này không? Em đã tìm trên Google mà chưa mò ra, mong anh em chỉ giúp.
VBA.jpg

2. Và file STL003 này không chuyển dữ liệu vào file Master được.
STL003_Ngan Sach.xlsx (100.4 KB, Lượt tải về: 3)

Đánh giá

Anh dang tìm cách xóa name đó trước khi copy nhưng chưa được.  Đăng lúc 25/10/2019 21:40
Các file STLxxx là do đơn vị cấp dưới gửi lên. Trong đó có sẵn name "Status" rồi. Đơn giản là xóa name đó trước rồi gửi mẫu đó cho các đơn vị cấp dưới.   Đăng lúc 25/10/2019 21:39

www.xaydung360.vn XÂY TÂM, DỰNG TẦM CHUYÊN NGHIỆP

tranhoe Đăng lúc 26/10/2019 20:05 | Xem tất
thanh.bm gửi lúc 25/10/2019 15:18
Chào anh Hoè,
Em vẫn bị 1 lỗi, mò mãi không ra, cụ thể:
1. Xuất hiện Status khi chạy  ...

1./ Tất cả các file của em đều chứa rất nhiều Name rác và bị ẩn nữa (hàng chục ngàn Name), Xóa cũng khá lâu mới hết được. Dùng code sau để Xem Name, Xóa Name
[Visual Basic] 纯文本查看 复制代码
Sub Xem_AllNames()
Dim wsName As Name
For Each wsName In ActiveWorkbook.Names
If wsName.Visible = False Then wsName.Visible = True
Next wsName
End Sub
Sub Xoa_AllNames()
Dim wsName As Name
    For Each wsName In ActiveWorkbook.Names
        'If wsName.Name <> "Status" Then wsName.Delete   'Giu lại name Status khong Xoa
        wsName.Delete
    Next wsName
End Sub

2./ Sau khi đã xóa hết Name rồi thì chạy mượt mà như file đính kèm.
3./ File STL003_Du An 03.xlsx có bố cục khác với các file khác.

VBA Copy Du lieu tu sheet da dong khac_2.rar (289.88 KB, Lượt tải về: 16)

Đánh giá

Mong bạn tiếp tục chia sẻ. Thanks!: 1.0
Mong bạn tiếp tục chia sẻ. Thanks!: 1
Em kiểm tra theo trong Name Manager, thì thấy rất ít Name được tạo. Không rõ Name đang bị ẩn thì phải.  Đăng lúc 12/11/2019 08:39
Cám ơn anh Hoè.  Đăng lúc 28/10/2019 09:11

www.xaydung360.vn XÂY TÂM, DỰNG TẦM CHUYÊN NGHIỆP

tranhoe Đăng lúc 12/11/2019 22:36 | Xem tất
thanh.bm gửi lúc 25/10/2019 15:18
Em kiểm tra theo trong Name Manager, thì thấy rất ít Name được tạo. Không rõ Name đang bị ẩn thì phải....

Anh đã nói rồi. Vì có rất nhiều Mame ẩn. Muốn xem được thì phải hiện nó lên, bằng cách chạy Sub Xem_AllNames().
Chạy xong, vào phần quản lý name trong Excel sẽ thấy tất tần tật.
Thấy rồi thì thích Xóa thằng nào thì Xóa thôi; chạy Sub Xoa_AllNames(). Trong sub này muố giữ name nào thì thay trong câu lệnh:
If wsName.Name <> "Status" Then wsName.Delete   'Giu lại name Status khong Xoa

Đánh giá

Mong bạn tiếp tục chia sẻ. Thanks!: 5.0
Mong bạn tiếp tục chia sẻ. Thanks!: 5
Cám ơn bác rất nhiều!  Đăng lúc 14/11/2019 15:55

www.xaydung360.vn XÂY TÂM, DỰNG TẦM CHUYÊN NGHIỆP

Phiên bản Mobile|Phần mềm ôn thi sát hạch chứng chỉ hành nghề xây dựng  

Phần mềm dự toán xây dựng excel | Hướng dẫn lập dự toán xây dựng | Phần mềm tư vấn giám sát | Phần mềm quản lý chất lượng xây dựng |

Phần mềm ôn thi sát hạch chứng chỉ hành nghề xây dựng

Phần mềm ôn thi sát hạch chứng chỉ hành nghề Kiến Trúc sư

Phần mềm ôn thi sát hạch chứng chỉ hành nghề Đấu thầu

GMT+7, 29/3/2024 18:33 , Processed in 0.390191 second(s), 27 queries .

Powered by Discuz! X3.2

© 2001-2013 Kiso Comsenz Inc.