WeatherXL - Ứng dụng lấy dữ liệu Thời tiết siêu nhanh (*15/01/2024)

Liên hệ QC

Add-in lấy dữ liệu lịch sử Thời tiết hàng ngày vào bảng tính nhanh chóng

Bài viết này tôi chia sẻ với các bạn ứng dụng Excel sử dụng VBA lấy dữ liệu thời tiết từ nguồn FreeMeteo và TimeAndDate rất nhanh.

Giúp ích nhiều cho các bạn viết ứng dụng thi công công trình cần dữ liệu thời tiết.
----------------------------------


WeatherXL​

Dữ liệu thời tiết trực tuyến từ nguồn freeMeteo

WeatherXL


HƯỚNG DẪN SỬ DỤNG

Để Add-in lấy được thông tin từ Trang tính để thực hiện cập nhật dữ liệu, cần thực hiện các bước như hướng dẫn dưới đây.
Tạo các ô với các Name như sau: (Trong tab Formulas > Name Manager)
(Tạo name để tự động lấy thông tin tải và ghi dữ liệu)
Các ô bắt buộc:
1. Nguồn web: tên tt_Nguon
2. Từ ngày: tên tt_TuNgay
3. Đến ngày: tên tt_DenNgay
(Không cần tạo name tt_TuNgay tt_DenNgay khi có cột dữ liệu tên tt_TheoNgay)
Các ô cột dữ liệu:
Đặt ô với Name tên tt_DuLieu đại diện vùng sẽ ghi toàn bộ dữ liệu thông tin thời tiết vào trang tính.
Nếu muốn dữ liều các cột riêng lẻ hãy tạo Name như dưới đây:
Các Name phải tạo tại tiêu đề cột, Name nào không có thì bỏ qua không ghi dữ liệu.
4. Nhiệt độ (nhỏ - lớn): tên tt_NhietDo (giá trị: 24 / 28)
5. Nhiệt độ (<) nhỏ nhất: tên tt_NhietDo_Nho
6. Nhiệt độ (<) lớn nhất: tên tt_NhietDo_Lon
7. Ngày hoặc Theo Ngày:
+ Nếu tên tt_Ngay_Tang: với cột ngày sắp xếp tăng dần
+ Nếu tên tt_Ngay_Giam: với cột ngày sắp xếp giảm dần
+ Nếu tên tt_TheoNgay: khi dữ liệu cột ngày đã tồn tại, dữ liệu sẽ ghi vào dòng tương ứng ngày
(Không cần tạo name tt_TuNgay tt_DenNgay)
8. Mức gió ổn định tối đa: tên tt_MucGio
9. Gió giật tối đa: tên tt_GioGiat
10. Lượng mưa: tên tt_LuongMua
11. Mô tả: tên tt_MoTa
12. Hiện icon: tên tt_icon (Nếu name tồn tại thì Icon sẽ được thêm vào dòng dữ liệu)
Để tạo tất cả Name trên nhanh hơn, hãy gõ hàm =ThoiTiet_AddNames() vào ô bất kì, các Name sẽ tự động được tạo và cửa sổ Name Manager sẽ hiện lên để chỉnh sửa.
Để tạo trang tính có sẵn, hãy gõ hàm =ThoiTiet_Worksheet() vào ô bất kì,
Một trang tính mới sẽ được tạo vào dự án của bạn với giao diện đầy đủ.
Tìm vị trí vùng địa lý:
Gõ hàm =ThoiTiet_TimKiem("Hà Nội") sẽ tìm kiếm vùng+đường dẫn và ghi vào tại vị trí ô gõ hàm.
Bạn cần chép đường dẫn vị trí địa lý cần thiết vào ô Name tt_Nguon.


Gán nút nhấn:

Chép mã dưới đây vào module dự án của bạn, để gán nút cập nhật dữ liệu.
Mã sẽ tự động tìm kiếm Add-in và thực thi các lệnh.

JavaScript:
        Sub GetWeatherVN(Optional Direction&)
              WeatherXLCall "GetWeatherVN", Direction
        End Sub
        Sub ClearWeatherVN(Optional Direction&)
              WeatherXLCall "ClearWeatherVN", Direction
        End Sub
        Sub sortDataMeteoWeather(Optional Direction&)
              WeatherXLCall "sortDataMeteoWeather", Direction
        End Sub
        Sub sortDataTADWeather(Optional Direction&)
              WeatherXLCall "sortDataTADWeather", Direction
        End Sub
        Private Sub WeatherXLCall(Byval proc$, Optional Direction&)
            On Error Resume Next
            Dim a
            For Each a In Application.AddIns
                If a.Name Like "WeatherXL*" Then
                    Application.OnTime Now, "'" & a.Name & "'!'" & proc & " " & Direction & "'": Exit Sub
                End If
            Next
            MsgBox "Hay cai dat Add-in WeatherXL", vbInformation
            Err.clear
        End Sub

Gán tên GetWeatherVN vào nút nhấn cập nhật dữ liệu


Phiên bản cập nhật:

Trình tự động tìm kiếm bản cập nhật mới nhất tại Github
Để tìm bản cập nhật mới gõ hàm: =ThoiTiet_Update()
Để tắt gõ hàm: =ThoiTiet_UpdateOff()
Để bật gõ hàm: =ThoiTiet_UpdateOn()


Các bạn có thể tham khảo thêm các bài viết của tôi tại tag #sanbi udf

----------------------------------
Liên hệ hỗ trợ:

Liên hệ Facebook Messenger: Vo Truong Anh Tuan
Liên hệ Zalo: 0384170514
Quét QRCode Zalo:

z4135340916408_08dfdd87080de540fdaecdacb9209bd3.jpg


-----------------------------------
Các bạn có tham khảo thêm:
+ Ứng dụng lấy mã số thuế:


+ Ứng dụng gửi tin nhắn Zalo:


Các bài viết của tôi tại tag #sanbi udf


Tôi đã viết code cho ứng dụng lấy dữ liệu thời tiết rất nhanh nhờ vào tool do chính tôi viết ra.
Các bạn muốn học VBA nhanh nhất có thể hãy tham khảo tool hỗ trợ lập trình VBA:

(Để tải tại GiaiPhapExcel cần đăng nhập)
 

File đính kèm

Lần chỉnh sửa cuối:
Giải pháp
Đã có dự án WeatherXL Add-in

Nếu các bạn trước đây chỉ sử dụng ứng dụng thời tiết mà tôi đã viết. Khá bất tiện trong quá trình sử dụng để ứng dụng cho nhiều trường hợp mà bạn mong muốn, thì nay tôi đã phát triển ứng dụng thành Add-in để sử dụng thuận tiện hơn.

Mục tiêu add-in:

  1. Thiết lặp nhanh chóng
  2. Cập nhật thêm dữ liệu nếu dữ liệu chưa có, thay vì phải xóa đi toàn bộ và cập nhật lại từ đầu.

(Ứng dụng được đăng tại mục tài nguyên diễn đàn)
Bài viết này tôi chia sẻ với các bạn 2 file thực hiện lấy dữ liệu thời tiết từ nguồn AccuWeather

File WheatherAccu.xlsb với code thực hiện lấy dữ liệu đơn giản nên mất nhiều thời gian hơn.
Với WheatherAccu_Async.xlsb thì code rất phức tạp để sử dụng cơ chế Bất đồng bộ khi dùng phương thức Request HTTP, nên lấy dữ liệu rất nhanh nếu dữ liệu có nhiều tháng.


Sau khi sử dụng ứng dụng, nếu gặp vấn đề các bạn có thể đăng bài bên dưới để được giải đáp.


----------------------------------
View attachment 238362
Em chào anh. Em thấy anh rất giỏi về việc lấy số liệu trên Web như File lấy số liệu chứng khoán quá khó và hay. Lúc nào em nhờ anh giải yêu cầu này được không ạ.
Em có tìm tòi và giải bằng Python được rồi nhưng vẫn ham giải bằng VBA sẽ như thế nào cho Case này ạ. Em cảm ơn anh.
 
Lần chỉnh sửa cuối:
Upvote 0
@cuto24, @naturooo, @quyenpv

Các bạn thử tải lại file.

----------------------------------------------
@hoahuongduong1986
Nếu bạn làm được bằng Python, thì bạn đăng code Python vào chủ đề của bạn và tag tên của tôi vào, được thì tôi sẽ xem qua giúp bạn.
Trước mắt là tôi thấy trang của bạn cần lấy dữ liệu qua nhiều lớp bảo mật với API nghiêm ngặt.
Em vẫn bị lỗi vậy bác ạ.
 
Upvote 0
@cuto24, @naturooo, @quyenpv

Các bạn thử tải lại file.

----------------------------------------------
@hoahuongduong1986
Nếu bạn làm được bằng Python, thì bạn đăng code Python vào chủ đề của bạn và tag tên của tôi vào, được thì tôi sẽ xem qua giúp bạn.
Trước mắt là tôi thấy trang của bạn cần lấy dữ liệu qua nhiều lớp bảo mật với API nghiêm ngặt.
e vẫn bị lỗi đấy
 
Upvote 0
Bài viết đã cập nhật, các bạn xem lại bài viết chính.
 
Lần chỉnh sửa cuối:
Upvote 0
@cuto24, @naturooo, @quyenpv

Các bạn thử tải lại file.

----------------------------------------------
@hoahuongduong1986
Nếu bạn làm được bằng Python, thì bạn đăng code Python vào chủ đề của bạn và tag tên của tôi vào, được thì tôi sẽ xem qua giúp bạn.
Trước mắt là tôi thấy trang của bạn cần lấy dữ liệu qua nhiều lớp bảo mật với API nghiêm ngặt.
Dạ, em gửi anh rồi đó ạ. Em cảm ơn!
 
Upvote 0
Bài viết đã cập nhật, các bạn xem lại bài viết chính.
 
Lần chỉnh sửa cuối:
Upvote 0
Bài viết đã cập nhật, các bạn xem lại bài viết chính.
 
Lần chỉnh sửa cuối:
Upvote 0
Web KT

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

Back
Top Bottom