Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Vba 使用Outlook阅读RSS项目。如果网页有';未找到页面';_Vba_Outlook - Fatal编程技术网

Vba 使用Outlook阅读RSS项目。如果网页有';未找到页面';

Vba 使用Outlook阅读RSS项目。如果网页有';未找到页面';,vba,outlook,Vba,Outlook,我正在使用MS Outlook阅读一系列关于SO的论坛。我有一段代码,可以在项目中循环并检查主题行中的“[暂停]”或“[关闭]”。这个很好用。我正在尝试稍微修改代码以执行以下操作: #1) look for language that reads "View article..." #2) click this link (need to get innerText) #3) scan the page that opens and check for language that read

我正在使用MS Outlook阅读一系列关于SO的论坛。我有一段代码,可以在项目中循环并检查主题行中的“[暂停]”或“[关闭]”。这个很好用。我正在尝试稍微修改代码以执行以下操作:

#1)  look for language that reads "View article..."
#2)  click this link (need to get innerText)
#3)  scan the page that opens and check for language that reads "Page not found"
如果这是真的,我想删除当前的“myItem”并移动到下一个“myItem”。我知道我下面的代码已关闭,但我需要从“查看文章…”超链接中获取内部文本,单击该超链接,然后扫描以“未找到页面”语言打开的页面,而不是“.”导航“https:”等。我如何才能做到这一点

Sub GetRssItem()
Dim myNameSpace As Outlook.NameSpace
Dim myFolder As Outlook.Folder
Dim subFolder As Outlook.Folder
Dim myItem As Object
Dim IE As InternetExplorer

Set myNameSpace = Application.GetNamespace("MAPI")
Set myFolder = myNameSpace.GetDefaultFolder(olFolderRssFeeds)
For i = 1 To 27
Set subFolder = myFolder.Folders(i)
   Debug.Print subFolder
      For Each myItem In subFolder.Items
        If InStr(myItem.Subject, "[on hold]") > 0 Or _
            InStr(myItem.Subject, "[closed]") > 0 Then
            Debug.Print myItem.Subject
            myItem.Delete
        End If

        If myItem.Body Like "*" & "View article..." & "*" Then
            Set IE = New InternetExplorer
            With IE
            .Visible = True
            .navigate "https://stackoverflow.com/questions/57632973/delete-label-points-and-set-hover-text-and-legend-in-clustering-scatter-plot" 'CHANGE THIS
                While .Busy Or .readyState <> READYSTATE_COMPLETE
                    DoEvents
                Wend
            Set HTMLdoc = .document
            If IE.Body Like "*" & "Page not found" & "*" Then
                myItem.Delete
            End If
            End With
        End If
      Next myItem
Next i
End Sub
子GetRssItem()
将myNameSpace设置为Outlook.NameSpace
将myFolder设置为Outlook.Folder
将子文件夹设置为Outlook.Folder
将myItem设置为对象
Dim IE作为InternetExplorer
设置myNameSpace=Application.GetNamespace(“MAPI”)
设置myFolder=myNameSpace.GetDefaultFolder(olFolderRssFeeds)
对于i=1到27
Set subFolder=myFolder.Folders(i)
调试.打印子文件夹
对于子文件夹中的每个myItem.Items
如果InStr(myItem.Subject,“[暂停]”)大于0或_
InStr(myItem.Subject,“[关闭]”)>0然后
调试.打印myItem.Subject
我的项目。删除
如果结束
如果myItem.Body像“*”和“查看文章…”和“*”那么
Set IE=新的InternetExplorer
与IE
.Visible=True
.导航“https://stackoverflow.com/questions/57632973/delete-label-points-and-set-hover-text-and-legend-in-clustering-scatter-plot""改变这个"
当.Busy或.readyState readyState\u完成时
多芬特
温德
设置HTMLdoc=.document
如果未找到像“*”和“*”这样的IE主体和页面,则
我的项目。删除
如果结束
以
如果结束
下一个我的项目
接下来我
端接头

我想出来了!这就是解决方案

Sub GetRssItem()
Dim myNameSpace As Outlook.NameSpace
Dim myFolder As Outlook.Folder
Dim subFolder As Outlook.Folder
Dim myItem As Object
Dim IE As InternetExplorer

Set myNameSpace = Application.GetNamespace("MAPI")
Set myFolder = myNameSpace.GetDefaultFolder(olFolderRssFeeds)
For i = 1 To 27
Set subFolder = myFolder.Folders(i)
Set IE = New InternetExplorer

   Debug.Print subFolder
      For Each myItem In subFolder.Items
        If InStr(myItem.Subject, "[on hold]") > 0 Or _
            InStr(myItem.Subject, "[closed]") > 0 Then
            Debug.Print myItem.Subject
            myItem.Delete
        End If

        If myItem.Body Like "*" & "View article..." & "*" Then

            StartPos = InStr(myItem.Body, "View article...") + 17
            EndPos = InStrRev(myItem.Body, ">")
            myStr = Mid(myItem.Body, StartPos, EndPos - StartPos)

            With IE
            .Visible = False
            .navigate myStr

            While .Busy Or .readyState <> READYSTATE_COMPLETE
                DoEvents
            Wend
            Set HTMLdoc = IE.Document
            If IE.Document.Body.innerHTML Like "*" & "Page not found" & "*" Then
                myItem.Delete
            End If
            End With
        End If


      Next myItem
Next i

IE.Quit

End Sub
子GetRssItem()
将myNameSpace设置为Outlook.NameSpace
将myFolder设置为Outlook.Folder
将子文件夹设置为Outlook.Folder
将myItem设置为对象
Dim IE作为InternetExplorer
设置myNameSpace=Application.GetNamespace(“MAPI”)
设置myFolder=myNameSpace.GetDefaultFolder(olFolderRssFeeds)
对于i=1到27
Set subFolder=myFolder.Folders(i)
Set IE=新的InternetExplorer
调试.打印子文件夹
对于子文件夹中的每个myItem.Items
如果InStr(myItem.Subject,“[暂停]”)大于0或_
InStr(myItem.Subject,“[关闭]”)>0然后
调试.打印myItem.Subject
我的项目。删除
如果结束
如果myItem.Body像“*”和“查看文章…”和“*”那么
StartPos=InStr(myItem.Body,“查看文章…”)+17
EndPos=InStrRev(myItem.Body,“>”)
myStr=Mid(myItem.Body、StartPos、EndPos-StartPos)
与IE
.Visible=False
.浏览myStr
当.Busy或.readyState readyState\u完成时
多芬特
温德
设置HTMLdoc=IE.Document
如果IE.Document.Body.innerHTML类似于“*”和“未找到页面”&“*”,则
我的项目。删除
如果结束
以
如果结束
下一个我的项目
接下来我
即退出
端接头

如果是RSS,我可能会考虑切换到xmlhttp请求以获得少量请求号码,并检查状态代码。但在请求数量和时间方面,你需要小心,因为临时IP可能会禁止你。有没有理由不使用?你只需要在LoopThank外部创建一个IE实例。谢谢。你可能比我认识的任何人都更了解这方面的内容现在。