Chào các bác, dạo này em đang làm việc với Google Sheets nhiều mà đôi khi vẫn cần xử lý dữ liệu trên Excel cho quen tay. Em tìm hiểu thì thấy có nhiều cách để lấy dữ liệu từ các CSDL khác vào Excel, nhưng chưa thấy bài nào chia sẻ chi tiết cách lấy dữ liệu trực tiếp từ Google Sheets vào Excel bằng VBA cả.
Em đã thử một vài cách và có vẻ hoạt động khá ổn, nên hôm nay lên đây chia sẻ với mọi người, hy vọng sẽ giúp ích cho bác nào đang gặp tình huống tương tự.
Cách 1: Dùng hàm IMPORTDATA (đơn giản nhưng có giới hạn)
- Trong Excel, bạn có thể dùng hàm
=IMPORTDATA("URL_của_Google_Sheet"). Tuy nhiên, cách này chỉ lấy được dữ liệu dạng public và không linh hoạt lắm.
Cách 2: Dùng VBA và Google Sheets API (phức tạp hơn nhưng mạnh mẽ)
- Đây là cách em đang áp dụng. Nó đòi hỏi bạn phải thiết lập một chút về API của Google.
- Bước 1: Lấy URL của Google Sheet. Bạn cần public sheet hoặc tạo service account để có quyền truy cập.
- Bước 2: Viết code VBA. Dùng các object như
MSXML2.XMLHTTPđể gọi API và nhận dữ liệu trả về (thường là dạng JSON hoặc CSV). Sau đó, bạn parse dữ liệu này và điền vào Excel. - Bước 3: Xử lý dữ liệu. Dữ liệu nhận về có thể cần làm sạch hoặc định dạng lại trước khi sử dụng.
Em thấy cách dùng VBA và API này tuy ban đầu hơi tốn công thiết lập, nhưng một khi đã chạy được thì việc tự động hóa lấy dữ liệu từ Google Sheets về Excel hoàn toàn nằm trong tầm tay. Nó rất hữu ích cho việc tổng hợp báo cáo từ nhiều nguồn khác nhau.
Có bác nào đã từng làm cách này chưa? Chia sẻ thêm kinh nghiệm hoặc cách tối ưu hơn cho em học hỏi với ạ!