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

Liên hệ QC
Nhấn để tải về Add-in WeatherXL
(Để tải tại GiaiPhapExcel cần đăng nhập)

-----------------------------------------------​

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:
 
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ạn tải lại file trên vào code VBA export class module có tên ClsHtmlWorker xem có 2 dòng code:
Attribute OnReadyStateChange.VB_UserMemId = 0
'Attribute OnReadyStateChange.VB_UserMemId = 0

Nếu không thì bỏ dấu nháy ' lưu lại và Import vào lại File.

Không được nữa thì đành UltraViewer.
Phiên Anh giúp trên máy em tí nhé
Id: 30 692 779
Pass: 6581
Cám ơn Anh nhiều
 
Upvote 0
Bạn kiểm tra đoạn code này và chụp màn hình giúp tôi

PHP:
Private Sub Sub_Test()
  With VBA.CreateObject("MSXML2.XMLHTTP")
    .Open "GET", "https://www.giaiphapexcel.com/diendan/whats-new/", False
    .setRequestHeader "Content-type", "application/x-www-form-urlencoded"
    .setRequestHeader "X-Requested-With", "XMLHttpRequest"
    .Send
    MsgBox .responseText
  End With
End Sub
Dạ. Em đang ra ngoài. Sáng em gửi Anh nhé
 
Upvote 0
@cuto24, @naturooo, @quyenpv @PacificPR


Tôi phát hiện ra rằng:

Code khi thực hiện trên máy của tôi lại có thể request được site AccuWheather, nhưng sang máy khác thì AccuWheather không trả lại bất kì điều gì.


Thực sự là không tôi không hiểu vấn đề là do phía AccuWheather hay do Phiên bản Office.

Nếu phát hiện được thì tôi sẽ cập nhật để các bạn biết.
Em chạy đoạn Code của Anh nó ra như thế này Anh ạ
1591020509958.png
 
Upvote 0
@cuto24, @naturooo, @quyenpv @PacificPR


Tôi phát hiện ra rằng:

Code khi thực hiện trên máy của tôi lại có thể request được site AccuWheather, nhưng sang máy khác thì AccuWheather không trả lại bất kì điều gì.


Thực sự là không tôi không hiểu vấn đề là do phía AccuWheather hay do Phiên bản Office.

Nếu phát hiện được thì tôi sẽ cập nhật để các bạn biết.
e nghĩ có khi nào do vị trí hoặc khu vực cài trên máy tính không?
 
Upvote 0
Đoán là: "do phía AccuWheather"

Khi resquest tới AccuWheather để phân tích cấu trúc... viết code thì phía AccuWheather đã lưu lại session_id của client.
-> kết quả code lấy được dữ liệu.
Nếu dùng ở máy tính khác (IP khác) thì AccuWheather chưa có session_id của client -> không lấy được dữ liệu.

Mình chỉ đoán mò vậy thôi.
 
Upvote 0
Em thấy chỉ là lấy data từ web thôi, kiếm trang nào có api, load về json rồi muốn làm gì thì làm có phải dễ ko ợ,

Bác làm cả 1 cái request ra trang đấy rồi lại phải xử lý cả đống dữ liệu cho mệt người nhỉ :D

VD: Openweather
 
Upvote 0
Upvote 0
@Cu Tồ, @naturooo, @quyenpv @PacificPR

Các bạn test lại 2 file này xem sao
---------------------------------
File chạy tốt anh, tuy nhiên file icon thời tiết bị lỗi không hiển thị ảnh
Bài đã được tự động gộp:

PacificPR ơi. Xin mượn Code của anh HeSanbi đưa vào phần Hồ sơ quản lý chất lượng cho nhẹ. Thêm phần ngày tháng các ngày lễ như cũ nữa là ngon
 
Lần chỉnh sửa cuối:
Upvote 0
Web KT
Back
Top Bottom