Dùng VBA để export Query từ access ra Excel

Liên hệ QC

ngoctuyen1995

Thành viên hoạt động
Tham gia
25/4/17
Bài viết
196
Được thích
19
Giới tính
Nữ
Thân chào cả nhà GPEX,
Mong cả nhà giúp em một việc ạ.
Hiện tại em có 01 File access chứa nhiều Query. Em muốn dùng VBA từ Excel để xuất các Query này (Query có hiện Data và Tên Query là Số) ra File Excel hiện hành tại sheet Data.
Trong file excel ở Sheet Data em có làm demo kết quả ạ.
Mong cả nhà giúp đỡ, em chân thành cảm ơn ạ.
 

File đính kèm

  • test.zip
    76.9 KB · Đọc: 13
Hiện tại em có 01 File access chứa nhiều Query. Em muốn dùng VBA từ Excel để xuất các Query này (Query có hiện Data và Tên Query là Số) ra File Excel hiện hành tại sheet Data.
Có 2 cách:
- Một là dùng công cụ có sẳn của Excel (get External Data) kết nối với Access database và chọn Table/Query cần lấy dữ liệu về. Nếu bên Access có thay đổi thiết kế truy vấn của Query thì bên Excel cũng chỉ cần Refresh là dữ liệu được cập nhật.
- Hai là dùng code VBA sử dụng thư viện Microsoft Office xx.0 Database Engine Object hoặc Microsoft DAO XX Object Library
Tôi nghĩ bạn dùng cách 1 cho nó nhanh.
 
Upvote 0
Có 2 cách:
- Một là dùng công cụ có sẳn của Excel (get External Data) kết nối với Access database và chọn Table/Query cần lấy dữ liệu về. Nếu bên Access có thay đổi thiết kế truy vấn của Query thì bên Excel cũng chỉ cần Refresh là dữ liệu được cập nhật.
- Hai là dùng code VBA sử dụng thư viện Microsoft Office xx.0 Database Engine Object hoặc Microsoft DAO XX Object Library
Tôi nghĩ bạn dùng cách 1 cho nó nhanh.
Em không rành về cái này lắm ạ.. Cách nào cũng được miễn sao ra kết quả là được ạ. Mong Anh giúp đỡ ạ
 
Upvote 0
Em không rành về cái này lắm ạ.. Cách nào cũng được miễn sao ra kết quả là được ạ.

Bạn vào Menu Data - Get External Data - chọn From Access.


Screenshot at Aug 31 11-31-30.png
--> Sẽ hiện hộp thoại để chọn file Access database mà bạn muốn kết nối.


Screenshot at Aug 31 11-32-27.png

--> Chọn Table/ Query mà bạn muốn kết nối -> OK

Screenshot at Aug 31 11-33-08.png
 

File đính kèm

  • Data.xlsx
    20.3 KB · Đọc: 4
Upvote 0
Bạn vào Menu Data - Get External Data - chọn From Access.


View attachment 265124
--> Sẽ hiện hộp thoại để chọn file Access database mà bạn muốn kết nối.


View attachment 265126

--> Chọn Table/ Query mà bạn muốn kết nối -> OK

View attachment 265127
Em cảm ơn anh đã giúp đỡ.. Nhưng cách này không ổn rồi ạ. Số lượng Query của em có thể lên tới 500 câu Query và Data bên trong thay đổi rất nhiều, nếu ngồi Setup từng câu Query như vậy thì không ổn ạ. Chắc chỉ có thể dùng VBA để quét từng Query nếu có Data thì mới export ra Excel. Nếu được mong anh giúp em với.
 
Upvote 0
Em cảm ơn anh đã giúp đỡ.. Nhưng cách này không ổn rồi ạ. Số lượng Query của em có thể lên tới 500 câu Query và Data bên trong thay đổi rất nhiều, nếu ngồi Setup từng câu Query như vậy thì không ổn ạ. Chắc chỉ có thể dùng VBA để quét từng Query nếu có Data thì mới export ra Excel. Nếu được mong anh giúp em với.

:) Nói thật với bạn nếu mà bạn thiết kế 500 cái query tức là bạn chưa biết cách khai thác, làm việc, với CSDL rồi. Tôi nghĩ bạn nên chọn phương pháp tiếp cận khác, khai thác dữ liệu. Tôi đã nhìn qua cái database và các query của bạn nhưng không muốn góp ý gì về nó vì cũng chưa nghĩ ra từ gì để nói :) .
Bạn thử nêu các yêu cầu về truy vấn của bạn đối với CSDL Access này xem như thế nào?
 
Lần chỉnh sửa cuối:
Upvote 0
Số lượng Query của em có thể lên tới 500 câu Query và Data bên trong thay đổi rất nhiều,
Theo tôi nên nói về giải thuật, cách tiếp cận truy vấn dữ liệu trước, chứ đừng nên đi vội vô code kiết để chạy cho ra kết quả như bạn yêu cầu. Vì cách làm của bạn còn nhiều bất cập, giải quyết nó sẽ không đi tới đâu đâu. Kinh nghiệm nhìn vô bài toán CSDL của tôi thấy vậy.
- Từ Excel nếu bạn muốn truy vấn dữ liệu từ CSDL Access thì có thể dùng thư viện ADODB với các câu lệnh SQL để lấy thẳng dữ liệu từ Table. Cách làm này bạn có thể truyền các tham số truy vấn theo yêu cầu dễ hơn so với lấy từ Query tạo sẳn của Access.
- Nếu bạn không rành viết câu lệnh truy vấn SQL thì chỉ có vô Database Access, tận dụng lưới Query trực quan của nó để dễ thiết kế truy vấn. Sau đó kết nói với Query từ Excel, lấy dữ liệu về. Nếu làm Query trong Access thì phải phân thích dữ liệu , yêu cầu để làm ra một cái query súc tích, gọn, đầy đủ, không dư thừa query v.v...
Nói chung cách làm thì nhiều nhưng phải xây dựng cái mô hình lấy dữ liệu ổn định, xài lâu dài, không cần phải viết code lại nếu có thay đổi (không nói về thay đổi cấu trúc Table).
 
Upvote 0
Thân chào cả nhà GPEX,
Mong cả nhà giúp em một việc ạ.
Hiện tại em có 01 File access chứa nhiều Query. Em muốn dùng VBA từ Excel để xuất các Query này (Query có hiện Data và Tên Query là Số) ra File Excel hiện hành tại sheet Data.
Trong file excel ở Sheet Data em có làm demo kết quả ạ.
Mong cả nhà giúp đỡ, em chân thành cảm ơn ạ.
cái SQL tôi úp trên GPE này có thể giúp cho bạn 1 chút đấy ... chỉ chọn Files xong có list Tablename + Query xong chỉ chọn là xong Nếu biết SQL thì chỉnh sửa nó

Còn muốn lấy Qua Internet thì chờ tôi chuyển Code VB6 vào Delphi khoãng 50/50 xong tôi úp cho
Hình sau là lấy qua Internet 1 files to n+1 file ok hết ... có hàm mở rộng cho dân code két tùy chỉnh viết thêm

1630394807739.png
 
Lần chỉnh sửa cuối:
Upvote 0
Cái này có tự động cập nhật khi dữ liệu bên Access thay đổi không bạn? Như cái tool get external data của Excel đó.
 
Upvote 0
Cái này có tự động cập nhật khi dữ liệu bên Access thay đổi không bạn? Như cái tool get external data của Excel đó.
Viết cho mình xài chết 1 TableName + các cột cố định thì ok .... còn viết cho người dùng tùy biến thì chưa bạn ... hiện tại chưa nghĩ ra cách

Nó lấy hết tất cả các File trong Folder chia sẻ .... mới làm có Excel và Access .... đang cho thêm SQLite vào nữa vì tất cả chúng giống y trang nhau chỉ khác cái Driver kết nối của SQLite nó khác

Nó y trang cái SQL mạnh úp trên này ... chỉ khác là lấy qua Internet
 
Lần chỉnh sửa cuối:
Upvote 0
Tôi đoán phương thức OpenSchema trong ADO có thể liệt kê ra các query. Đã gần 20 năm không dùng tới cái hàm này nên tôi không có code minh họa nào cả đành góp ý suông. --=0
 
Upvote 0
nếu chủ thớt thích thì mình xuất cho 1 cái hàm API như hình sau mà dùng cho SQLite + Excel + Access + Ms Server ... và hãy quên ADODB của Ms đi ... Mình sử dụng FireDAC của Delphi

Xuất ra 1 List sạch tinh ko dính bất cứ cái sys nào của Access +....
Hình sau là bản nháp ... rảnh làm đủ thứ Y trang ADODB xong cứ theo keo nó chạy thui

1630501923673.png
 
Upvote 0
Cơ bản có hết rồi giờ test chút giáp vào vào xong ... quên luôn ADODB của Ms đi cho khỏe ... FireDAC chạy đa nền tảng
viết 1 Hàm duy nhất lấy tất cả các CSDL mà FireDAC hổ trợ
1/ Cho Excel
1630550519427.png

2/ Cho Access
1630550558810.png

3/ Cho SQLite
1630550595289.png

4/ tách cái Server + abcdxyz ra 1 hàm khác vì IP + Port viết thêm vào chỉ thêm rối rắm

quen tay rồi thấy thường .... chủ thớt lại có cái hàm độc nhất GPE xài chơi thôi
 
Upvote 0
Cơ bản có hết rồi giờ test chút giáp vào vào xong ... quên luôn ADODB của Ms đi cho khỏe ...
Có vẻ công nghệ của Kiều Mạnh tạo ra đã đủ sức thay thế cho ADO của Microsoft nên có vài điều tò mò muốn hỏi về API của Kiều Mạnh.
  • Tôi hay dùng query có tham số kiểu "SELECT * FROM T WHERE Id=? AND Name=?" thì code nạp tham số cho query này như thế nào?
  • Trong data Access, nếu tôi muốn lưu file (txt, doc, jpg,...) vào một field kiểu OLE Object thì code sẽ như thế nào?
Không biết API của Kiều Mạnh có giải quyết mấy vấn đề này đơn giản hơn ADO không nhỉ?
 
Lần chỉnh sửa cuối:
Upvote 0
Có vẻ công nghệ của Kiều Mạnh tạo ra đã đủ sức thay thế cho ADO của Microsoft nên có vài điều tò mò muốn hỏi về API của Kiều Mạnh.
  • Tôi hay dùng query có tham số kiểu "SELECT * FROM T WHERE Id=? AND Name=?" thì code nạp tham số cho query này như thế nào?
  • Trong data Access, nếu tôi muốn lưu file (txt, doc, jpg,...) vào một field kiểu OLE Object thì code sẽ như thế nào?
Không biết API của Kiều Mạnh có giải quyết mấy vấn đề này đơn giản hơn ADO không nhỉ?
Link sau là câu trả lời cho bạn

1/ Câu SQL như nhau ...cái SQL tôi úp trên này nếu rành SQL thích gì thì cứ viết vào đó ( nếu bạn có khả năng ) còn tôi chỉ biết cơ bản SQL còn lòng ghép lằng nhằng = thua

2/ Ghi nó cũng y trang ADODB của Ms

3/ tôi thấy đọc và ghi nó là chuẩn chung trên mọi tools lập trình chỉ khác là thể hiện câu lệnh khác nhau chút về cách viết theo tools đó quy định

4/còn tốc độ hay so sánh thì quốc tế nó nói chứ tôi ko nói


5/ Còn hổ trợ thì FireDAC nó nhiều hơn những gì mà ADODB hiện có ... xem link sau nó ko nói tới Excel vì lý do gì đó tôi ko biết ... nhưng thực tế sử dụng tốt

6/ hay xem video sau cho Excel ... tôi xem đi xem lại ko nhớ bao nhiêu lần xong tôi đã làm được nó
Liên kết: https://www.youtube.com/watch?v=i9IpB06EQoA


7/ tôi nghĩ thế là tạm đủ ... hãy thong thả mà đọc + xem nếu thích
 
Lần chỉnh sửa cuối:
Upvote 0
Có vẻ công nghệ của Kiều Mạnh tạo ra đã đủ sức thay thế cho ADO của Microsoft nên có vài điều tò mò muốn hỏi về API của Kiều Mạnh.
  • Tôi hay dùng query có tham số kiểu "SELECT * FROM T WHERE Id=? AND Name=?" thì code nạp tham số cho query này như thế nào?
  • Trong data Access, nếu tôi muốn lưu file (txt, doc, jpg,...) vào một field kiểu OLE Object thì code sẽ như thế nào?
Không biết API của Kiều Mạnh có giải quyết mấy vấn đề này đơn giản hơn ADO không nhỉ?
Câu hỏi thú vị với 2 cái dấu hỏi. Gặp cái này cũng khó phết đấy
 
Upvote 0
Câu hỏi thú vị với 2 cái dấu hỏi. Gặp cái này cũng khó phết đấy
Câu SQL nó là chuẩn chung trên Mọi tools nó rộng lớn lắm ... ngay cả những người giỏi nhất GPE này viết trên VBA thì cũng ko biết hết tất cả các cách lồng + ghép lằng nhằng đâu
 
Upvote 0
Web KT

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

Back
Top Bottom