note VBA 實用功能:RSS新聞整理

keep reading...



最近利用VBA
寫了一個自動蒐集關鍵字新聞的Excel

作用是這樣,假設你今天對"林書豪"很有興趣
就可以透過我的方式 提到林書豪的新聞都蒐集起來
將新聞標題、發布時間及原文連結等資訊儲存在Excel

首先 要在網路上建一個RSS
RSS就是一種訊息來源格式規範 --> 維基百科介紹
整合一般網頁、新聞或網頁部落格的資訊
轉換成一種簡單形式的摘要,方便閱讀者蒐集

利用Google新聞可以建立特定關鍵字的新聞RSS
將此新聞輸入Excel,便能利用Excel儲存新聞資料

我寫了VBA可以幫我完成一些事情
包含:自動更新資料 重新整理格式 縮短網址 Highlight關鍵字

以下程式碼參考,//代表說明

------------------------------------

前置作業,到Google利用自己要的關鍵字搜尋新聞
並且在最下面找到"即時掌握「**」的新聞搜尋結果。"
按下"建立快訊"建立RSS摘要,接著用Excel匯入XML

------------------------------------

Sub 按鈕2_Click()

//按下按鈕2所啟發的巨集

    Worksheets("feeds").Activate
    ActiveWorkbook.XmlMaps("feed_Map").DataBinding.Refresh

//feed_Map是Excel內建的Xml預設名稱
//Refresh代表作更新的動作
 
    Row = Worksheets("feeds").Range("a1048576").End(xlUp).Row
    For first = 3 To Row
    Link = Worksheets("feeds").Cells(first, 4).Value
    Worksheets("feeds").Hyperlinks.add Worksheets("feeds").Cells(first, 4), Address:=(Link), TextToDisplay:=("連結")
    Next

  //我的第四行是連結,這個連結很長不好看,所以建立一個名為"連結"的超連結
  //首先利用End(xlUP).Row,從最底下網上找,會找到有資料的最後一列
  //我的新聞資料是從第三列開始,從第三列到最後一列的第四行都加入超連結
 
    Worksheets("feeds").Range("A:B").Cells.Replace "<b>", ""
    Worksheets("feeds").Range("A:B").Cells.Replace "</b>", ""
    Worksheets("feeds").Range("A:B").Cells.Replace "&#39;", "'"

  //Replace語法是代表取代字元,新聞大多都是從HTML網頁摘取
  //所以很有可能出現一些<b> 之類的HTML元素,看起來很亂就用取代把它刪掉
 
    Count = 0
    For i = 2 To Worksheets("REF").Range("d1048576").End(xlUp).Row
        Name = Worksheets("REF").Cells(i, 4).Value
        For n = 1 To 2
        For m = 3 To Worksheets("feeds").Range("a3").End(xlDown).Row
          If InStr(Worksheets("feeds").Cells(m, n), Name) <> 0 Then
          Worksheets("feeds").Cells(m, n).Font.Color = vbRed
          Count = Count + 1
          End If
        Next
        Next
    Next

  //在REF這個頁面中,存了一排"關鍵字",目的是想要快速過濾一些關鍵字新聞
  //第一個For用來對"每個關鍵字",都要過濾新聞一次
  //第二個For則是因為新聞有標題跟摘要,所以標題跟摘要都要過濾一次
  //第三個For則是用來過濾"每一則新聞"
  //InStr的用途是找到字串中,特定字元的"開始位置",譬如"oooipkk"中"ip"的位置就是從4開始
  //如果InStr不等於0,就代表特定字元存在於該字串,用來判斷是否包含
 
    MsgBox "共有 " & Count & "筆新聞偵測到關鍵字元"

  //有包含一次特定字元,Count就會+1,最後用MsgBox跟使用者說有幾筆資料要注意

-----------------------------------

  當然,也可以在偵測到字元的時候,立馬儲存新聞到相對應的sheets
  但是我當時的想法是在用人眼過濾一次,資訊會比較正確

  以上,參考


熱門文章