WeatherXL - Ứng dụng lấy dữ liệu Thời tiết siêu nhanh (***Nguồn cấp FreeMeteo đã dừng cấp dữ liệu lịch sử) (1 người xem)

Liên hệ QC

Người dùng đang xem chủ đề này

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
-------------------------------------------

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
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
Excel của bạn hoạt động với ngôn ngữ tiếng Nhật,
Nhưng tôi không thể chuyển Window của mình sang tiếng Nhật để kiểm tra được.

Icon thời tiết định dạng PNG, Có thể do Office 32bit không hỗ trợ hiển thị PNG
Bạn thử vào Layout chọn Selection Pane click hiển thị 1 IconWheatherxxx xem có nhìn thấy không
vâng mà sao a biết máy e dùng ngôn ngữ nước ngoài hay vậy?
 
Upvote 0
Từ tháng 5 đến giờ thì Website Weather đã cập nhật mới rồi, phải sửa code lại. Các bạn chờ bản cập nhật.
Tại github:
Vâng em cảm ơn anh, mong anh giúp đỡ để mọi người có thể dùng để phục vụ công việc
 
Upvote 0
Từ tháng 5 đến giờ thì Website Weather đã cập nhật mới rồi, phải sửa code lại. Các bạn chờ bản cập nhật.
Tại github:
Em không tải được file Anh ạ. Anh cho em hỏi Anh có lấy được dữ liệu mưa không Anh
 
Upvote 0
***Đã cập nhật ứng dụng vào lúc: 15:50 25/1/2021

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 chạy code thấy báo lỗi và định dạng ngày ở sheet (Thơif tiết (2)) lại không theo ngày/tháng/năm vậy anh?
Xin được anh giúp!
l1.pngl2.pngl3.png
 
Upvote 0
Em chào anh, em chạy code thấy báo lỗi và định dạng ngày ở sheet (Thơif tiết (2)) lại không theo ngày/tháng/năm vậy anh?
Xin được anh giúp!
Phiên bản bạn đang sử dụng chỉ có Sheet THỜI TIẾT HÀNG NGÀY hoạt động.
Các sheet còn lại tôi đang phát triển, do lười biếng phát triển thêm nên tôi đăng phiên bản này lên để tạm thời thôi.

Bạn cần kiểm tra TLS đã cài đặt chưa, để chạy bất đồng bộ:

Còn không thì bạn chạy thủ tục trong Module ..._Copy
 
Upvote 0
Phiên bản bạn đang sử dụng chỉ có Sheet THỜI TIẾT HÀNG NGÀY hoạt động.
Các sheet còn lại tôi đang phát triển, do lười biếng phát triển thêm nên tôi đăng phiên bản này lên để tạm thời thôi.

Bạn cần kiểm tra TLS đã cài đặt chưa, để chạy bất đồng bộ:

Còn không thì bạn chạy thủ tục trong Module ..._Copy
Vâng cảm ơn anh! mong anh phát triển các sheet còn lại để mọi người được ứng dụng.
 
Upvote 0
Phiên bản bạn đang sử dụng chỉ có Sheet THỜI TIẾT HÀNG NGÀY hoạt động.
Các sheet còn lại tôi đang phát triển, do lười biếng phát triển thêm nên tôi đăng phiên bản này lên để tạm thời thôi.

Bạn cần kiểm tra TLS đã cài đặt chưa, để chạy bất đồng bộ:

Còn không thì bạn chạy thủ tục trong Module ..._Copy
Em cài theo anh hướng dẫn mà chạy code vẫn không tác động anh.
Anh xem giúp em.
1111.png
 
Upvote 0

Ứng dụng Excel lấy dữ liệu Thời tiết siêu nhanh​


***Cập nhật mới nhất: 13:30 7/5/2021
+ Nguồn dữ liệu mới từ FreeMeteo.VN


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à AccuWeather rất nhanh.
Giúp ích nhiều cho các bạn viết ứng dụng thi công trình cần dữ liệu thời tiết.

Ứng dụng sử dụng cơ chế Bất đồng bộ của HTTP nên có thể sẽ không hoạt động trên Window 32 bit. Hoặc máy tính các bạn sử dụng là máy công ty đã bị khóa truy cập.

Một số máy có thể không chạy do cài đặt UseAgent cho HTTP không phù hợp. Vì vậy nên các bạn cần cập nhật biến const UseAgent từ trình duyệt Chrome.


Các bạn có thể Liên hệ với tôi qua Facebook: https://m.me/he.sanbi/ để hỏi về ứng dụ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.

----------------------------------

WeatherXL​

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

LocalizeXL
Sheet (THỜI TIẾT ACCU) em thấy thời gian ở cột A theo thứ tự tăng dần từ trên xuống dưới.
Sheet (THỜI TIẾT METEO) em thấy thời gian ở cột A theo thứ tự giảm dần, Anh có thể chỉnh lại để thời gian ở cột A trong Sheet (THỜI TIẾT METEO) cũng theo thứ tự tăng dần từ trên xuống dưới được không ạ?
Xin cảm ơn anh!
 
Upvote 0

QuangMinhtb

Bạn sửa bài viết xóa phần trích dẫn, chỉ @tên thôi.

Sheet (THỜI TIẾT METEO) Có mũi tên bạn chỉ cần click vào nó để điều chỉnh thứ tự sắp xếp
 
Upvote 0

Ứng dụng Excel lấy dữ liệu Thời tiết siêu nhanh​


***Cập nhật mới nhất: 12:20 8/5/2021
+ Nguồn dữ liệu mới từ FreeMeteo.VN


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à AccuWeather rất nhanh.
Giúp ích nhiều cho các bạn viết ứng dụng thi công trình cần dữ liệu thời tiết.

Ứng dụng sử dụng cơ chế Bất đồng bộ của HTTP nên có thể sẽ không hoạt động trên Window 32 bit. Hoặc máy tính các bạn sử dụng là máy công ty đã bị khóa truy cập.

Một số máy có thể không chạy do cài đặt UseAgent cho HTTP không phù hợp. Vì vậy nên các bạn cần cập nhật biến const UseAgent từ trình duyệt Chrome.


Các bạn có thể Liên hệ với tôi qua Facebook: https://m.me/he.sanbi/ để hỏi về ứng dụ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.

----------------------------------

WeatherXL​

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

LocalizeXL
Em chạy bản mới cập nhập thấy báo lỗi sau anh:
Xin được a giúp.

Ứng dụng Excel lấy dữ liệu Thời tiết siêu nhanh​


***Cập nhật mới nhất: 12:20 8/5/2021
+ Nguồn dữ liệu mới từ FreeMeteo.VN


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à AccuWeather rất nhanh.
Giúp ích nhiều cho các bạn viết ứng dụng thi công trình cần dữ liệu thời tiết.

Ứng dụng sử dụng cơ chế Bất đồng bộ của HTTP nên có thể sẽ không hoạt động trên Window 32 bit. Hoặc máy tính các bạn sử dụng là máy công ty đã bị khóa truy cập.

Một số máy có thể không chạy do cài đặt UseAgent cho HTTP không phù hợp. Vì vậy nên các bạn cần cập nhật biến const UseAgent từ trình duyệt Chrome.


Các bạn có thể Liên hệ với tôi qua Facebook: https://m.me/he.sanbi/ để hỏi về ứng dụ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.

----------------------------------

WeatherXL​

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

LocalizeXL
Em chạy bản mới cập nhập thấy báo lỗi sau anh:
Xin được a giúp.
l1.pngl2.png
 
Upvote 0
Có các lỗi sau trong phiên bản ngày 8/5 anh HeSanbi
1. Sheet Thời tiết ACCU: Không chạy
2. Sheet THỜI TIẾT METEO chạy có các lỗi sau
+ Khi chọn địa danh nhấn nút cập nhật lỗi tại dòng .Finally = False
1620463433815.png
+ Bỏ qua lỗi này xuất hiện lỗi tiếp theo
1620463510450.png
 
Upvote 0

*** ỨNG DỤNG ĐÃ NGƯNG PHÁT TRIỂN ***​


***Cập nhật mới nhất: 18:40 8/5/2021
+ Nguồn dữ liệu mới từ FreeMeteo.VN


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à AccuWeather 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.

Ứng dụng sử dụng cơ chế Bất đồng bộ của HTTP nên có thể sẽ không hoạt động trên Window 32 bit. Hoặc máy tính các bạn sử dụng là máy công ty đã bị khóa truy cập.

Một số máy có thể không chạy do cài đặt UseAgent cho HTTP không phù hợp. Vì vậy nên các bạn cần cập nhật biến const UseAgent từ trình duyệt Chrome.

.


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.

----------------------------------

WeatherXL​

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


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:
Em chào anh, anh cho em hỏi:
Dữ liệu thời tiết lấy quay đầu lịch sử được tối đa mấy năm tình từ thới điểm hiện tại ạ?
Em lấy năm 2018 thì không lấy được dữ liệu
Em cảm ơn anh!
 
Upvote 0
Tôi chạy thử mà báo lỗi và không cập nhật lượng mưa
 

File đính kèm

  • Bao loi nay.PNG
    Bao loi nay.PNG
    39.3 KB · Đọc: 19
  • Khong cap nhat.PNG
    Khong cap nhat.PNG
    248.4 KB · Đọc: 19
Upvote 0

***** Cập nhật mới: 12/06/2023 *****

Sửa lỗi chế độ Sort không di chuyển Hình ảnh thời tiết
Chuyển hình ảnh thời tiết sang cột đầu tiên

(Không biết bài viết được BQT duyệt thành #Bài viết nổi bật từ khi nào)
 
Lần chỉnh sửa cuối:
Upvote 0
Đã 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)
 
Upvote 0
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)
Anh @HeSanbi có vẻ thích lập trình hàm nhỉ. Có điều theo ý kiến chủ quan của em, với đại đa số người dùng họ thích click hơn là viết hàm vì phải nhớ cấu trúc hàm...
-Trải nghiệm đầu tiên là rất hay treo ứng dụng, với lỗi 351.... (không kịp nhìn thì treo máy)
-Phần "Chép mã như dưới đây vào module dự án của bạn, để gán nút cập nhật dữ liệu." em nghĩ anh truyền luôn code vào phím đấy luôn thì hợp lý hơn nếu không thao tác em nghĩ chậm hơn so với mở file excel đã có code thời tiết cũ của anh và sử dụng
-Biết thêm được việc sử dụng hàm để làm vài việc khác ngoài tính toán....
 
Lần chỉnh sửa cuối:
Upvote 0
Anh @HeSanbi có vẻ thích lập trình hàm nhỉ. Có điều theo ý kiến chủ quan của em, với đại đa số người dùng họ thích click hơn là viết hàm vì phải nhớ cấu trúc hàm...
-Trải nghiệm đầu tiên là rất hay treo ứng dụng, với lỗi 351.... (không kịp nhìn thì treo máy)
-Phần "Chép mã như dưới đây vào module dự án của bạn, để gán nút cập nhật dữ liệu." em nghĩ anh truyền luôn code vào phím đấy luôn thì hợp lý hơn nếu không thao tác em nghĩ chậm hơn so với mở file excel đã có code thời tiết cũ của anh và sử dụng
-Biết thêm được việc sử dụng hàm để làm vài việc khác ngoài tính toán....
Lỗi treo là do Add-in tự động chạy tìm bản Update mới, lỗi này chỉ xảy ra khi Excel chưa kịp khởi động xong
Gán nút trực tiếp đó phải là lập trình viên tự sao chép mã vào chính dự án. Nếu không sẽ dính liên kết ngoài.
Vì vậy mà Add-in không để gán thủ tục trực tiếp vào nút của dự án khác.
 
Upvote 0
Nhấn để tải về Add-in WeatherXL
(Để tải tại GiaiPhapExcel cần đăng nhập)

Link tải phụ tại Github:

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

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:
Xin bác Sanbi hướng dẫn chèn ảnh động vào bài ạ. Em chèn file .gif mà nó toàn đứng yên như .jpg thôi ạ!
 
Upvote 0
@hoangtuan.net Gif này được lưu trữ tại server Github bạn nhé, tệp gif chỉ cần có nơi lưu trữ và có thể truy cập là được.
Github là sở hữu của Microsoft. Là kho lưu trữ cho dân lập trình.
 
Upvote 0
Nhấn để tải về Add-in WeatherXL
(Để tải tại GiaiPhapExcel cần đăng nhập)

Link tải phụ tại Github:

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

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:
Xin bác Sanbi hướng dẫn chèn ảnh động vào bài ạ. Em chèn file .gif mà nó toàn đứng yên như .jpg thôi ạ!
@hoangtuan.net Gif này được lưu trữ tại server Github bạn nhé, tệp gif chỉ cần có nơi lưu trữ và có thể truy cập là được.
Github là sở hữu của Microsoft. Là kho lưu trữ cho dân lập trình.
Cảm ơn bác nhiều!
 
Upvote 0

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)
Em chạy cập nhập thấy thông báo như hình dưới là do đâu vậy anh?2025-01-25_085126.png
 
Upvote 0

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

Back
Top Bottom