贊贊小屋

Office VBA稅務新聞整合應用:Word網路爬蟲交給Outlook寄信

微軟Office套裝軟體都支援VBA功能,可以編寫自動化程式,並且跨應用整合執行任務。本文以稅務局網頁新聞為例,介紹用Word取得網路爬蟲資料,Outlook自動寄信。

於公於私,我們常常收到定期發送的「新聞」郵件,不管是狹義的各新聞報章媒體的最近消息,或者是各類產品各個機構發給會員訂閱者的活動通知,這一章介紹了如何用Excel乃至於Word取得稅務新聞,最後一節簡單分享如何將所取得的網頁內容透過Outlook發送郵件:

一、Outlook VBA

在上一節從Excel到Word,會發現VBA的操作及用法完全一樣,其實大部份Office相關的應用軟體都支持VBA功能,其中Excel是大宗,Word用的機會少一點,這一節剛好會啓動Outlook,順便和讀者介紹一下,如下圖所示,這個辦公室裡相當熟悉的郵件軟體,如同其他Office家族成員,也可以於「檔案」、「選項」中的「自定功能區」,將「開發人員」索引標籤打勾顯示,不過實際操作後,Outlook僅有VBA編輯器及執行巨集按紐,並沒有錄製巨集的選項,這是因為Outlook為收發郵件,不像Excel有許多複雜的資料計算及操作,因此Outlook雖然同樣有VBA,但在功能上是相對簡化了。

Office VBA稅務新聞整合應用:Word網路爬蟲交給Outlook寄信 VBA網路爬蟲 第1張

二、Word VBA

簡短介紹完Outlook,回到Word,於Word應用軟體中編寫如下VBA程式碼:

10:新增一個「SendMail_Hello」巨集程式;
20:宣告一個新的「MailBox」物件;
30:定義「MailBox」為一個「Outlook.Application」的物件,這是Outlook 物件模型中的最高層級物件,可以把Outlook或者任何一個應用軟體程式想像為一個大資料夾,裡面有很多東西(物件)和指令(方法),而Outlook就是這個大資料夾的名稱,亦即根目錄;
40:定義「mail」為「MailBox」中建立一封新郵件(「CreateItem」)的對象,「(olMailItem)」代表直接使用outlook寄送郵件;
50:針對「mail」編輯方法及屬性,開始一連串的with程式區塊,其實就是以VBA程式碼的方法撰寫新郵件;
60:收件者;
70:主旨;
80:內文;
90:傳送郵件;
100:結束此with區塊;
120:結束「SendMail_Hello」巨集程式

Office VBA稅務新聞整合應用:Word網路爬蟲交給Outlook寄信 VBA網路爬蟲 第2張

三、Outlook警告及允許

執行「SendMail_Hello」巨集時,outlook會偵測到有其他程式要利用它自動傳送郵件,提出警告,在這個視窗按下「允許」。

Office VBA稅務新聞整合應用:Word網路爬蟲交給Outlook寄信 VBA網路爬蟲 第3張

四、Hello Word

「Hello, World!」,這是從1972年流傳至今,每個學習電腦程式語言寫出第一個程式的經典用法,通常當電腦螢幕出現這一句話,代表該語言的編譯器、程式開發環境、執行環境已經成功運作。熟悉Wordpress架設網站的讀者,應該也知道網站架設好的第一篇文章便是「Hello, World!」,在這裡沿用此經典傳承,讓VBA第一次自動傳送的郵件也是「你好,世界!」

Office VBA稅務新聞整合應用:Word網路爬蟲交給Outlook寄信 VBA網路爬蟲 第4張

五、Outlook取消警告

如果經當使用VBA自動傳送郵件,不想每次都看到第三步驟的警告視窗,可以Outlook的「選項」中,將「信任中心」的「以程式設計方法存取」設定為「不要警告我有可能的活動」。

Office VBA稅務新聞整合應用:Word網路爬蟲交給Outlook寄信 VBA網路爬蟲 第5張

六、Word自動寄信程式

接下來正式編寫Word自動傳送稅務新聞郵件的程式碼:

20:相當於全選Word內容資料;
30:將Word全部內容先統一轉換成文字,然後定義為「news」;
40~120:和第二步程式類似,只不過郵件主旨為「TaxNews」,郵件內文為定義好的變數「news」;
130:郵件傳送完後關閉outlook應用。

Office VBA稅務新聞整合應用:Word網路爬蟲交給Outlook寄信 VBA網路爬蟲 第6張

七、收到VBA來信

收到了這封由Office自動傳送的稅務新聞郵件,表示在學習VBA自動化的過程中達到了一個里程碑,如同收到「Hello, World!」一樣的驚喜!

Office VBA稅務新聞整合應用:Word網路爬蟲交給Outlook寄信 VBA網路爬蟲 第7張

Office整合寄信的VBA規劃

這一節在郵件收件者只設定為一個人,不過既然是發送電子郵件,方便的地方在於可以很容易傳送群組信,所以這裡可以設定幾個收件者群組,依照實務上不同狀況的需要,讓Office自動傳送特定內容的郵件,不限於Word文章,Excel的報表圖表當然也沒有問題!

本文內容取自《人人做得到的網路資料整理術》,書本仍然是最好的學習方法,今天就買本書吧!

博客來網路書店網址:

Office VBA稅務新聞整合應用:Word網路爬蟲交給Outlook寄信 VBA網路爬蟲 第8張