最近因為工作需要,下班後摸索嘗試了excel巨集,竟然成功了~(雖然現在Excel巨集已經算退流行了,python才是主流...以後有機會再來學python ^^)
真有成就感~來記錄分享一下~
這次主要是讓巨集自動抓取網站上的資料,依據不同欄位分類,自動填入
會使用到的excel功能有:
excel 錄製巨集、
資料匯入(從web來源匯入)
覺得「錄製巨集」對於初學者很方便,跟photoshop的動作錄製有點類似,都是先把要做的事情錄一遍下來,然後讓電腦重複幫你做。
就算完全沒任何基礎,不會寫程式也OK。遇到需要的功能而不知道語法,可以在網路上搜尋語法就OK了。
(但會寫程式也是有差啦,debug時就需要靠程式邏輯了 XDD)
這次會使用的是公益資訊中心網站,抓取非營利組織的email名單。
由於網站是一個組織就一個頁面,所以如果要蒐集各組織的名稱、聯絡人和email,就需要一個個網頁點進去,複製再貼到excel裡,感覺蠻花時間。
所以我就想...能不能我指定好要抓的各網址,讓電腦自動到該網址抓取~
我先開立3個工作表,分別存放
工作表1.要抓取的機構
工作表2.網站複製下來的原始資料
工作表3.最後彙整的清單
巨集,我分為3個部分。(不確定能不能在同一個巨集裡有多個函式,有請高手補充)
巨集1.從網站匯入外部資料,放在工作表2
巨集2.從工作表2複製機構名稱、聯絡人、email到 工作表3,回到工作表2清除外部匯入的資料(若不清除亦可,新匯入的資料會以插入方式,加在上一筆資料的最左邊)
巨集3.呼叫巨集1和巨集2
步驟1.複製網頁上的各組織的名稱,直接貼上至excel的工作表1,這時候第一欄會呈現帶連結的文字,
我們等下要做的就是抓取這些文字的超連結,讓巨集進入到該機構的超連結網址,抓取資料。
步驟2.開始錄製巨集~
首先要開啟「開發人員」頁籤,可以在檔案→選項→自訂功能區,把開發人員這個選項打勾
在工作表2,點選錄製巨集,
接著點選「資料」頁籤,選擇「從Web」(從網站取得外部資料) ,
在地址欄位輸入其中一筆網址(例如 http://www.npo.org.tw/npolist_detail.asp?id=7457 ),點選右邊的「到」按鈕
等畫面載入後,點選聯絡資訊那塊表格左邊的箭頭,然後按下 匯入
按下 確定
匯入後 如下圖
接著按 停止錄製,到此,巨集1告一個段落
然後再錄製巨集2
複製工作表2的 B1儲存格,機構名稱,貼到工作表3的 A1 儲存格。
再複製工作表2的 聯絡人(B4),貼到工作表3。依此類推,複製電子郵件欄位。
貼完如下圖,回到工作表2,刪除剛剛匯入的資料(不刪也OK),接著按「停止錄製」
這樣就完成了巨集1和巨集2的部分了。
接下來是把巨集1和巨集2合併呼叫的巨集3~
點選Visual Basic,進入巨集編輯畫面
在最下方增加一個巨集3,設定url和i兩個變數,分別傳入巨集1和巨集2
定義變數url 為 工作表1的第一欄的超連結網址
變數 i ,則是跑迴圈用的,看有幾列就寫到幾,也可以先測試跑個3~5個,以免有錯誤時會卡死
接著稍微改一下巨集1,把url變數傳入巨集1
記得要在巨集1最上方 增加一列 「Sheets("工作表2").Select」,因為剛剛錄製時,沒有產生這行
修改URL這行,移除原本網址,改為「"URL;" + url, Destination:=Range( _ 」
Name的那行,可以在最前方加 ' 單引號,即可註解掉,但實測這列不改也不會影響到程式運行~
調整後的巨集1,長這樣~
巨集2,加入i 變數,微調程式碼,改為貼到第i列的第1個 , Cells( i , 1 ),其餘依此類推。
到此就大致完成囉!
為了方便呼叫巨集,也可以點選 巨集→巨集3→選項,設定快捷鍵~
大家工作上如有遇到要自動抓資料,也可以試試看哦~蠻方便的!
也可以在這篇底下留言,交流討論~
因為我是初學者,如果有寫錯的地方,也歡迎留言告訴我,我會盡快修正哦~
留言列表