2019年11月29日 星期五

EXCEL VBA網路爬取大樂透歷史資料

EXCEL VBA網路爬取大樂透歷史資料

如果想將網路上總共有57頁網頁資料複製到EXCEL工作表中,
如果用土法煉鋼是非常花時間的事,如果每天需要經常性抓取網路資料,
真的非常必要用VBA程式來完成
其實就是目前很夯的網路爬蟲,
Python 程式相比,VBA相對比較親民一些,
直接抓取到EXCEL相對的好處理後續的動作
利用VBA程式,配合 For迴圈+If邏輯判斷一下
基本上程式就可以快速一鍵完成資料下載。
接下來要產生報表作統計分析,或是視覺化圖表就更簡單了。
以下有六個步驟如下,
1.錄製巨集與修改VBA程式
2.VBA寫刪除日期列
3.VBA寫複製日期
4.VBA寫刪除列
5.VBA寫增加中獎號碼

6.VBA寫剖析資料

完成畫面:


統計結果:


大樂特歷史資料下載程式碼





**利用資料的從WEB功能下載資料,再利用錄製巨集產生基本VBA程式加以修改

1.資料的從WEB功能



程式碼:

Sub 大樂透下載()
    With ActiveSheet.QueryTables.Add(Connection:= _
        "URL;https://www.lotto-8.com/listltobigbbk.asp?indexpage=1&orderby=new", _
        Destination:=Range("$A$1"))
        .WebFormatting = xlWebFormattingNone
        .WebTables = "5"
        .Refresh BackgroundQuery:=False
    End With
End Sub


Sub 批次大樂透下載()

    For i = 1 To 57
        '1.匯入WEB資料
        If Range("A1") = "" Then
            r = 1
        Else
            r = Range("A1").End(xlDown).Row + 1
        End If
        With ActiveSheet.QueryTables.Add(Connection:= _
            "URL;https://www.lotto-8.com/listltobigbbk.asp?indexpage=" & i & "&orderby=new" _
            , Destination:=Range("$A$" & r))
            .WebFormatting = xlWebFormattingNone
            .WebTables = "5"
            .Refresh BackgroundQuery:=False
        End With
    Next
End Sub


VBA程式碼

Sub 刪除日期列()

    For i = Range("A1").End(xlDown).Row To 2 Step -1
        If Cells(i, "A") = "日期" Then
            Rows(i).Delete
        End If
    Next
End Sub

Sub 複製日期()

    For i = 2 To Range("A1").End(xlDown).Row
        If (i - 2) Mod 3 = 0 Then
            Cells(i, "A") = Cells(i + 1, "A")
            Cells(i, "A").NumberFormatLocal = "yyyy/m/d"
        End If
    Next
End Sub

Sub 刪除列()

    For i = Range("A1").End(xlDown).Row To 4 Step -3
        Rows(i).Delete
        Rows(i - 1).Delete
    Next
End Sub

Sub 增加中獎號碼()

    For j = 1 To 6
        Cells(1, j + 3) = j
    Next
End Sub

Sub 剖析資料()

    For i = 2 To Range("A1").End(xlDown).Row
        Range("D" & i & ":I" & i) = VBA.Split(Cells(i, "B"), ",")
    Next
End Sub

Sub 刪除B欄()

    Columns("B").Delete
    Columns.AutoFit
End Sub

Sub 大樂透下載()

    Call 批次大樂透下載
    Call 刪除日期列
    Call 複製日期
    Call 刪除列
    Call 增加中獎號碼
    Call 剖析資料
    Call 刪除B欄
End Sub

教學影音(完整版在論壇):

教學影音完整版在論壇:
https://groups.google.com/forum/#!forum/scu_excel_vba2_86

EXCEL VBA進階班的課程規劃

主要是延伸入門課,延伸資料庫、多工作表、工作簿、網路爬蟲、視覺化報表等應用並與Python程式協同應用
單元01_資料拆解相關(VBA)
單元02_輸入自動化與表單設計
單元03_用ADO匯入與匯出資料庫
單元04_大量工作表合併與分割
單元05_資料查詢(篩選與分割工作表)
單元06_下載網路資料(YAHOO股市)
單元07_活頁簿與檔案處理(工作表分割與合併活頁簿)
單元08_視覺化報表與快速匯入圖片

其他相關學習:
    函數東吳進修推廣部, EXCEL, EXCEL VBA 函數 程式設計 線上教學 excel vba 教學 excel vba指令教學 vba範例教學excel  excel vba教學視頻 函數教學 excel函數

    沒有留言: