本篇是來騙吃騙吃的啦,也是應觀眾要求的第一篇。
談起EXCEL 是M$ 公司出版的,因此不分國界都要繳M$稅的。
稅繳了,可是大部份人大概所用功能可能不到50%。而你又用了多少?
本篇就來介紹一下EXCEL 的程式 (VBA、巨集) 功能。
一看到寫程式,一定很多人就打退堂鼓了。所以我就不從一般書籍的指令入門開始。M$公司當初應該也是有考慮到使用者,所以作了一個錄製功能。我就從此開始下手。

一、錄製巨集:就是把你的操作過程一五一十的如錄音一般錄下來。在你執行相關動作前需先開啟此一功能。(如下圖)


接下來,就是給巨集一個名稱(如下圖:名稱 get_1)


接著你就會看到出現一個按鈕讓你有停止錄製巨集的功能。(如下圖)


接下來執行您要執行的工作,此處以 ”elieyang來稿:Excel匯入外部資料步驟”( http://www.wretch.cc/blog/bonddealer/14368044 )作為參考,我就偷懶一下,不作相關解釋。我抓取的資料是 中鋼的基本資料 http://dj.mybank.com.tw/z/zc/zca/zca_2002.asp.htm


抓取完資料後,請於停止錄製巨集功能上按停止。


接下來,參照下圖去看你剛才所錄製的程式碼。


以下為所錄製的程式,就是你剛才抓取中鋼基本資料的過程。


程式碼清析版,請注意紅字部份

Sub get_1()
' get_1 Macro
' Stanley 在 2008/11/11 錄製的巨集
'
With ActiveSheet.QueryTables.Add(Connection:= _
"URL;http://dj.mybank.com.tw/z/zc/zca/zca_2002.asp.htm", Destination:=Range( _
"A1"))
        .Name = "zca_2002.asp"
        .FieldNames = True
        .RowNumbers = False
        .FillAdjacentFormulas = False
        .PreserveFormatting = True
        .RefreshOnFileOpen = False
        .BackgroundQuery = True
        .RefreshStyle = xlInsertDeleteCells
        .SavePassword = False
        .SaveData = True
        .AdjustColumnWidth = True
        .RefreshPeriod = 0
        .WebSelectionType = xlSpecifiedTables
        .WebFormatting = xlWebFormattingNone
        .WebTables = "3"
        .WebPreFormattedTextToColumns = True
        .WebConsecutiveDelimitersAsOne = True
        .WebSingleBlockTextImport = False
        .WebDisableDateRecognition = False
        .WebDisableRedirections = False
        .Refresh BackgroundQuery:=False
    End With
End Sub

紅字1:URL;http://dj.mybank.com.tw/z/zc/zca/zca_2002.asp.htm,就是抓取的網頁位置。
紅字2:WebTables = "3",網頁中可能有多個表格;那一個是你要的。
但是錄製的巨集get_1,只能一直重覆你剛才的動作;抓取中鋼基本資料。
接下來就是要修改為可以抓取其他資料的過程



修改如下請注意上面提示紅字部份的改變及新加入的藍色部份,讓你的程式變成可由EXCEL 活頁簿傳資料給程式;以達成抓取多項資料。
Sub Get_1()
' get_1 Macro
' Stanley 在 2008/8/16 錄製的巨集
'定義一些傳遞參數(資料)
Dim stockid
st = Sheets("UI").Range("B2").Value
stockid = Sheets("UI").Range("A2").Value
type1 = Sheets("UI").Range("D2").Value
tables = Sheets("UI").Range("C2").Value
myurl = "URL;http://dj.mybank.com.tw/z/zc/" & type1 & stockid & ".asp.htm"

Sheets("TMP").Select
    Cells.Select
    Selection.Delete Shift:=xlUp
Range("A1").Select
        With ActiveSheet.QueryTables.Add(Connection:=myurl, Destination:=Range("A1"))
        .Name = "5&stockid=2330_1"
        .FieldNames = True
        .RowNumbers = False
        .FillAdjacentFormulas = False
        .PreserveFormatting = True
        .RefreshOnFileOpen = False
        .BackgroundQuery = True
        .RefreshStyle = xlInsertDeleteCells
        .SavePassword = False
        .SaveData = True
        .AdjustColumnWidth = True
        .RefreshPeriod = 0
        .WebSelectionType = xlSpecifiedTables
        .WebFormatting = xlWebFormattingNone
        .WebTables = tables
        .WebPreFormattedTextToColumns = True
        .WebConsecutiveDelimitersAsOne = True
        .WebSingleBlockTextImport = False
        .WebDisableDateRecognition = False
        .Refresh BackgroundQuery:=False
    End With
End Sub

    全站熱搜

    bonddealer 發表在 痞客邦 留言(1) 人氣()