欧美性猛交XXXX免费看蜜桃,成人网18免费韩国,亚洲国产成人精品区综合,欧美日韩一区二区三区高清不卡,亚洲综合一区二区精品久久

打開(kāi)APP
userphoto
未登錄

開(kāi)通VIP,暢享免費電子書(shū)等14項超值服

開(kāi)通VIP
150行VBA代碼的outlook rss插件
 評論:界面類(lèi)似feedemon                                   

自己嘗試著(zhù)用vba寫(xiě)了一個(gè)outlook rss插件, 最基本的功能只需150行左右的代碼就可以搞定. 感興趣的朋友可以試試.

經(jīng)常用outlook, 又喜歡rss的人可能知道newsgator. 這個(gè)outlook的rss 插件不是免費的, 最不爽的地方是要用它還得先安裝20+M的dotnet Framework Redistributable Package(之后我的機器就變得很慢, 不知是不是這個(gè)原因).

后來(lái)自己嘗試著(zhù)用vba寫(xiě)了一個(gè)outlook rss插件, 最基本的功能只需150行左右的代碼就可以搞定. 感興趣的朋友可以試試. 這里要聲明編程只是我的業(yè)余愛(ài)好, 所以代碼寫(xiě)比較爛, 不完善的地方肯定很多. 真誠地希望高手們能開(kāi)發(fā)出好用的outlook插件, 給大家免費使用.

我分兩部分介紹: 第一部分是對代碼的說(shuō)明; 第二部分介紹如何使用這些代碼.

第一部分:對代碼的說(shuō)明

這部分代碼實(shí)現一個(gè)基本功能: 更新rss feed.

    一共需要五個(gè)函數, 調用關(guān)系如下:

      BRR_UpdateChannel->BRR_GetAndParseRSSFile->BRR_GetOldRssItemTitleForCheck ->BRR_IsNewRssItem->BRR_NewRssItem

    • BRR_UpdateChannel, 獲取當前outlook folder的"WebViewURL"屬性, 其值就是rss feed, 比如"http://www.klogs.org/index.xml"
    • BRR_GetAndParseRSSFile, 根據rss feed取得相應的rss文件并進(jìn)行解析.
    • BRR_GetOldRssItemTitleForCheck, 獲取上次更新時(shí)保存在當前outlook folder中的rss條目的標題, 把它們放在一個(gè)字符串數組strOldRssItemTitle里,供下面的函數使用.
    • BRR_IsNewRssItem, 判斷從rss feed中讀取的rss條目是否是新的, 如果是, 調用下面的函數
    • BRR_NewRssItem, 在outlook中創(chuàng )立一個(gè)新的rss條目

    全局變量

    ‘字符串數組, 保存舊的rss條目的標題, 以供比較是否有新條目
    Dim strOldRssItemTitle(200) As String
    ‘整型變量, 讀取intCheckNumber條舊rss條目標題到strOldRssItemTitle數組中,
    ‘這個(gè)數應當小于strOldRssItemTitle的容量
    Dim intCheckNumber As Integer
    ‘整型變量,實(shí)際更新了多少條rss條目
    Dim intUpdatedItemNumber As Integer

    第一個(gè)函數BRR_UpdateChannel很簡(jiǎn)單, 就不多說(shuō)什么了.

    Sub BRR_UpdateChannel()
    Dim strRssFeed As String
    strRssFeed = ActiveExplorer.CurrentFolder.WebViewURL
    intUpdatedItemNumber = 0
    If strRssFeed <> "" Then
    BRR_GetAndParseRSSFile strRssFeed
    Else
    ‘MsgBox "Please define rss feed for this channel first."
    End If
    End Sub

    第二個(gè)函數BRR_GetAndParseRSSFile用到了ms的xml解析器(就是下面代碼中的MSXML2對象), 通常裝了較高版本的office(或者裝有微軟aoe系列的游戲)都會(huì )帶有這個(gè)解析器. 在你的機器上搜索一下"Msxml*.dll". 我用的是"C:\Program Files\Common Files\Microsoft Shared\OFFICE11\Msxml5.dll". 在outlook的vba編輯器上, 選擇菜單"Tool/References...", 把這個(gè)dll加為References.

    Sub BRR_GetAndParseRSSFile(url As String)

    ‘msxml解析器用的對象變量
    Dim odoc As MSXML2.DOMDocument
    Dim oRoot As MSXML2.IXMLDOMNode
    Dim oChannel As MSXML2.IXMLDOMNode
    Dim oItem As MSXML2.IXMLDOMNode
    Dim oEntry As MSXML2.IXMLDOMNode
    Dim oAttributes As MSXML2.IXMLDOMNamedNodeMap
    Dim oChildren As MSXML2.IXMLDOMNodeList
    Dim oChild As MSXML2.IXMLDOMNode

    Dim bSuccess As Boolean ‘ 布爾變量, 表示能否成功加載rss feed

    ‘字符串變量, 用于存儲一個(gè)rss條目的標題, 鏈接和條目摘要
    Dim strEntryTitle As String
    Dim strEntryLink As String
    Dim strEntryDescription As String

    On Error GoTo HandleErr
    Set odoc = New MSXML2.DOMDocument

    ‘加載rss feed, 等待完成, 如果不能加載(如網(wǎng)絡(luò )不通或網(wǎng)站關(guān)閉), 則顯示錯誤信息退出.
    odoc.async = False
    odoc.validateOnParse = False
    bSuccess = odoc.Load(url)
    If Not bSuccess Then
    MsgBox "rss feed load error!"
    GoTo ExitHere
    End If

    ‘在解析加載的rss xml文件以前, 先把保存在當前outlook folder中的舊rss條目的標題提取出來(lái)保存
    BRR_GetOldRssItemTitleForCheck

    ‘從這里開(kāi)始對xml文件進(jìn)行解析
    Set oRoot = odoc.documentElement

    ‘這一段代碼處理符合rss0.92~rss2.0協(xié)議的xml文件, 如http://www.blogchina.com/xml/1_rss0.92.xml
    ‘我只關(guān)心三個(gè)最基本的信息,即:條目的標題, 鏈接和摘要. 你可以根據需要處理xml文件中的其它信息
    Set oChannel = oRoot.FirstChild
    ‘Debug.Print MsgBox oChannel.nodeName
    For Each oItem In oChannel.childNodes
    If oItem.nodeName = "item" Then
    For Each oEntry In oItem.childNodes
    Select Case oEntry.nodeName
    Case "title"
    strEntryTitle = oEntry.Text
    Case "link"
    strEntryLink = oEntry.Text
    Case "description"
    strEntryDescription = oEntry.Text
    Case "category" ‘specially for rss 2.0
    strEntryTitle = (oEntry.Text & "::" & strEntryTitle)
    End Select
    Next oEntry

    ‘如果有更新,則調用BRR_NewRssItem在outlook中生成一個(gè)新rss條目
    If BRR_IsNewRssItem(strEntryTitle) Then
    BRR_NewRssItem strEntryTitle, strEntryLink, strEntryDescription
    intUpdatedItemNumber = intUpdatedItemNumber + 1
    End If
    End If
    Next oItem

    ‘下面這一段代碼處理符合rdf 協(xié)議的xml文件, 如http://xchina.linux.net.cn/rss.php
    Set oChildren = oRoot.childNodes
    For Each oChild In oChildren
    If oChild.nodeName = "item" Then
    For Each oEntry In oChild.childNodes
    Select Case oEntry.nodeName
    Case "title"
    strEntryTitle = oEntry.Text
    Case "link"
    strEntryLink = oEntry.Text
    Case "description"
    strEntryDescription = oEntry.Text
    End Select
    Next oEntry
    If BRR_IsNewRssItem(strEntryTitle) Then
    BRR_NewRssItem strEntryTitle, strEntryLink, strEntryDescription
    intUpdatedItemNumber = intUpdatedItemNumber + 1
    End If
    End If
    Next oChild

    ‘如果有其它rss協(xié)議, 如atom, 處理代碼放下面.

    ExitHere:
    Exit Sub
    HandleErr:
    MsgBox "Error " & Err.Number & ": " & Err.description
    Resume ExitHere
    Resume
    End Sub

    第三個(gè)函數BRR_GetOldRssItemTitleForCheck 沒(méi)什么好說(shuō)的. 這段代碼和我實(shí)際用的有所不同, 我把它簡(jiǎn)化了.

    Sub BRR_GetOldRssItemTitleForCheck()
    Dim rssFolder As Outlook.MAPIFolder
    Dim Items As Outlook.Items
    Dim olPostItem As Outlook.PostItem

    Set rssFolder = ActiveExplorer.CurrentFolder
    intCheckNumber = 200 ‘ 最多從當前的outlook文件夾中讀取 200 條old rss items
    If rssFolder.Items.Count < intCheckNumber Then
    intCheckNumber = rssFolder.Items.Count
    End If

    Set Items = ActiveExplorer.CurrentFolder.Items
    Set olPostItem = Items.GetFirst
    For I = 1 To intCheckNumber
    strOldRssItemTitle(I - 1) = olPostItem.Subject
    Set olPostItem = Items.GetNext
    Next I
    End Sub

    第四個(gè)函數BRR_IsNewRssItem 也沒(méi)什么好說(shuō)的.

    Function BRR_IsNewRssItem(title As String)
    BRR_IsNewRssItem = True
    For I = 1 To intCheckNumber
    If title = strOldRssItemTitle(I - 1) Then
    BRR_IsNewRssItem = False
    Exit Function
    End If
    Next I
    End Function

    第五個(gè)函數BRR_NewRssItem. 下面段代碼和我實(shí)際用的也有所不同. 我注釋掉的部分是自制的一個(gè)outlook form, 里面內嵌了一個(gè)瀏覽器, 這樣當我雙擊rss條目時(shí), 它就會(huì )根據條目的鏈接屬性自動(dòng)連接原文. 這里為簡(jiǎn)單起見(jiàn), 使用outlook 自帶的"IPM.Post".

    Sub BRR_NewRssItem(title As String, link As String, description As String)
    Dim olPost As Outlook.PostItem
    Dim rssItemUrl As Outlook.UserProperty

    ‘Set olPost = ActiveExplorer.CurrentFolder.Items.Add("IPM.Post.fmPostWithWebBrowser")
    Set olPost = ActiveExplorer.CurrentFolder.Items.Add("IPM.Post")
    olPost.BodyFormat = olFormatHTML
    olPost.HTMLBody = "Original link:

    " + description + ""
    olPost.Subject = title
    ‘Set rssItemUrl = olPost.UserProperties.Add("rssItemUrl", olText)
    ‘rssItemUrl.Value = link
    olPost.UnRead = True
    olPost.Save
    olPost.Post
    End Sub

第二部分:如何使用

  • 1. 在outlook vba editor中新建一個(gè)模塊, 把這里的完整代碼貼進(jìn)去. 記得把Msxml*.dll (Msxml4.dll或Msxml5.dll都可以)加為reference, 如圖2004.12.24.1所示.


    圖2004.12.24.1

  • 2. 在outlook中新建一個(gè)文件夾, 命名為"RssTest". 右鍵之, 在"Home Page"屬性頁(yè)中的Address欄填入rss feed的地址, 比如"http://www.365key.com/rss/ecoin/", 如圖2004.12.24.2所示.


    圖2004.12.24.2

  • 3. (使"RssTest"為outlook當前文件夾), 運行宏"BRR_UpdateChannel", 等約10~20秒鐘(取決于網(wǎng)絡(luò )連接快慢), 搞定, 如圖2004.12.24.3所示.

本站僅提供存儲服務(wù),所有內容均由用戶(hù)發(fā)布,如發(fā)現有害或侵權內容,請點(diǎn)擊舉報。
打開(kāi)APP,閱讀全文并永久保存 查看更多類(lèi)似文章
猜你喜歡
類(lèi)似文章
VBA中字典的幾種“擼”法..至于怎么“擼”?當然是看著(zhù)以下的內容一起“擼”!(二)
看完這篇,如果你還不懂VBA字典,那我就沒(méi)辦法了
vba 通過(guò)excel控制outlook發(fā)郵件
Desktop Ticker – 在桌面滾動(dòng)顯示 RSS 訂閱源
隨手VBA之批量修改替換
Excel 如何用數組表示某一列數據
更多類(lèi)似文章 >>
生活服務(wù)
分享 收藏 導長(cháng)圖 關(guān)注 下載文章
綁定賬號成功
后續可登錄賬號暢享VIP特權!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服

欧美性猛交XXXX免费看蜜桃,成人网18免费韩国,亚洲国产成人精品区综合,欧美日韩一区二区三区高清不卡,亚洲综合一区二区精品久久