close

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

arrow
arrow

    吳老師 發表在 痞客邦 留言(0) 人氣()