标签: outlook-vba

如何向可能重定向到登录页面的页面发出POST请求

我在Outlook VBA中使用宏来通过POST将文件提交到URL:

Set http = New WinHttp.WinHttpRequest
http.Open "POST", UrlToPostTo, False    'True                                          '
http.setRequestHeader "User-Agent", "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0)"
http.setRequestHeader "Content-Type", "multipart/form-data; "
http.Send data
Run Code Online (Sandbox Code Playgroud)

我的问题是接受请求的页面(在这种情况下,文件上载页面)受到身份验证的保护 - 上面的初始请求将返回登录页面而不是页面本身.

我试图检测登录页面是否出现,如果是,则将用户名和密码作为表单变量发布(我希望这相当于人类在网页浏览器中输入用户名和密码进入页面).

所以步骤是:
*请求URL(包含文件和帖子).
*检查响应是否是登录页面.
*如果是,则在同一个http会话中,将用户名和密码提交给URL.
*如果服务器现在处理原始帖子,那么好,否则我可以再次发布.

代码如下:

' if the login page comes back, send credentials                                     '
If (InStr(http.ResponseText, "j_password") > 0) Then

    Dim loginData As String
    loginData = "j_username=theusername&j_password=thepassword"

    http.Open "POST", UrlToPostTo, False
    http.setRequestHeader "User-Agent", "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0)"
    http.setRequestHeader "Content-Type", "multipart/form-data; "
    http.Send loginData …
Run Code Online (Sandbox Code Playgroud)

post vba winhttp outlook-vba

4
推荐指数
2
解决办法
2万
查看次数

当用户创建新的空白邮件时,触发Outlook 2003宏

我发现当用户收到消息或点击发送按钮时会触发事件,但是当用户创建空白的新电子邮件时,不会触发任何事件.

outlook outlook-vba outlook-2003

4
推荐指数
1
解决办法
530
查看次数

Excel VBA用户表单选择要从中复制的Outlook文件夹

我正在尝试创建一个用户表单,允许用户选择将一组电子邮件复制到Excel电子表格的文件夹.我完成了所有其余的工作(即创建了复制过程),但是目前我必须手动输入此宏的每个新安装的命名空间和文件夹层次结构.以下是我的手动流程

Set ol_App = New Outlook.Application
Set ol_Namespace = ol_App.GetNamespace("MAPI")
' Set ol_Folder = olNamespace.GetDefaultFolder(olFolderInbox)

' reference the folder that the emails are stored in
Set ol_Folder = ol_Namespace.Folders("Their own namespace")
Set ol_Folder = ol_Folder.Folders("Inbox")
Set ol_Folder = ol_Folder.Folders("Required_Folder")
Run Code Online (Sandbox Code Playgroud)

现在这个vba将在少数人之间共享,每个人都有不同的设置.有没有办法我可以用一个列表框在用户表单中设置它,他们所做的只是选择正确的文件夹并单击继续,文件夹选择存储在变量或某种类型中?

先感谢您,

excel vba excel-vba outlook-vba

4
推荐指数
1
解决办法
7713
查看次数

函数始终返回False.为什么?

我为每个邮件项目都有一个VBA脚本,ThisOutlookSession并忽略了代码中与我当前问题无关的部分,我调用了以下函数:

Function WriteBatFile(inVar As String) As Boolean
On Error GoTo err_handle:

    Dim sFile As String
    sFile = "C:\Users\ME\Desktop\myScript.bat"

    Dim fso As Object
    Set fso = CreateObject("Scripting.FileSystemObject")
    Dim oFile As Object
    Set oFile = fso.CreateTextFile(sFile)

    oFile.WriteLine "sleep 2"
    oFile.WriteLine "./myScript.sh " & inVar
    oFile.WriteLine "exit"
    oFile.Close

    Set fso = Nothing
    Set oFile = Nothing

    'MsgBox "Setting True", vbInformation
    WriteBatFile = True

err_handle:
    'MsgBox "Setting false. Code: "
    WriteBatFile = False
    Exit Function
End Function
Run Code Online (Sandbox Code Playgroud)

我调用此函数并测试它是否返回TrueFalse相应: …

vba outlook-vba

4
推荐指数
2
解决办法
356
查看次数

VBA使用OFT模板从Excel发送电子邮件-禁止自动签名

我创建了一个宏,该宏打开了一个Outlook电子邮件模板,供用户发送(从电子表格中提取了一些其他信息)。除了Outlook根据用户设置自动添加签名之外,其他所有操作都进行得很好。尽管我可以很容易地关闭自己的签名,但我并不是唯一可能运行此宏的人。

电子邮件模板中已经包含公司签名,因此也不想添加个人签名。

Google提供了很多有关将签名传递到VBA生成的电子邮件的建议,但是我找不到任何可以将其删除的签名。有任何想法吗?

现有代码:

... snip ...

Set otlApp = CreateObject("Outlook.Application")
Set otlNewMail = otlApp.CreateItemFromTemplate("\\Path\To\MyFile.oft")

With otlNewMail
.Bcc = vEmailsFromSpreadsheet '(set earlier on)
.Display
End With

'otlApp.Quit
Set otlNewMail = Nothing
Set otlApp = Nothing
Set otlAttach = Nothing
Set otlMess = Nothing
Set otlNSpace = Nothing
Run Code Online (Sandbox Code Playgroud)

excel vba outlook-vba

4
推荐指数
2
解决办法
2万
查看次数

如何从Excel应用程序中捕获Outlook事件

我有一个至少有15个人使用和定期更新的工作簿,其中包含客户信息以及H3:H1500列中的电子邮件。使用Worksheet_FollowHyperlink事件,我们可以通过预先编写的Outlook帐户发送电子邮件,这些帐户取决于请求订单的星期几(MF,周六和周日),并且代码可以很好地生成消息。 我的主要问题是跟踪对客户的响应。 每当选择H列中的超链接时,我都尝试有一个记录日期(NOW函数)和Environ(“用户名”)的子项,但是由于我将电子邮件子项设置为.Display(因此人们可以在最后一分钟进行调整,如果需要的话,它仅记录谁选择了超链接(显然,从不实际发送消息时,偶然发生的很多事情)。我在整个论坛中发现了几个线程,其他线程引用了创建Class模块的方法,并实现了一个线程,以查看它是否可以在我的代码中使用,但是通过添加它,整个电子邮件子程序都变得无用了,所以我恢复为旧的形式。由于我对VBA的经验不是很丰富(由于帮助和反复试验,我已经走到了这一步),我意识到我对某些代码的选择似乎很愚蠢,并且如果有更好的方法可以做到这一点,目前主要是这样,我希望可以进行改进。

我当前的电子邮件子地址是:

Private Sub Worksheet_FollowHyperlink(ByVal Target As Hyperlink)
Dim Body1, Body2, Body3 As String
Dim olApp As Outlook.Application
Dim OlMail As Outlook.MailItem

On Error Resume Next
Application.EnableEvents = False

Set olApp = GetObject(,"Outlook.Application")

Do While olApp.Inspectors.Count = 0
DoEvents

Loop

Set olMail = olApp.Inspectors.Item(1).CurrentItem

With olMail

Body1 = "This is my weekday text"
Body2 = "This is my Saturday text"
Body3 = "This is my Sunday text"

.Subject = "Subject"
.Attachemnts.Add "C:\Path"
.CC = Target.Range.Offset(0,4).Text
.BCC …
Run Code Online (Sandbox Code Playgroud)

excel outlook vba excel-vba outlook-vba

4
推荐指数
1
解决办法
1621
查看次数

如何将每个电子邮件从收件箱移动到子文件夹

我似乎在将电子邮件从收件箱移动到收件箱的子文件夹时遇到问题。我一直以为我的代码一直工作到今天。我注意到它只移动了一半的电子邮件。我不需要“全部移动”代码,我有一个目的,但是我只需要移动每封电子邮件,而不是一次移动所有邮件(我需要检查每封电子邮件)。请在下面查看我的代码。myNamespace.Folders.Item(1).Folders.Item(2)是我的主要收件箱。

Sub MoveEachInboxItems()
    Dim myNamespace As Outlook.NameSpace
    Set myNamespace = Application.GetNamespace("MAPI")

    For Each Item In myNamespace.Folders.Item(1).Folders.Item(2).Items
        Dim oMail As Outlook.MailItem: Set oMail = Item
           Item.UnRead = True
           Item.move myNamespace.Folders.Item(1).Folders.Item(2).Folders("Other Emails")
    Next
End Sub
Run Code Online (Sandbox Code Playgroud)

email outlook vba outlook-vba

4
推荐指数
1
解决办法
3万
查看次数

暂停Outlook一段时间

我收到电子邮件后10秒钟尝试运行Outlook代码.

我尝试使用application.wait但看起来你不能用Outlook做到这一点.

如何暂停Outlook一段时间?

outlook vba outlook-vba

4
推荐指数
1
解决办法
6189
查看次数

如何创建脚本以将收件箱中当前活动的电子邮件移动到Outlook 2007中的另一个文件夹

我有时会收到我想保留的电子邮件,但是将它们移动到相应的文件夹中可能会很麻烦.我怎样才能执行一个脚本,将我正在查看的电子邮件(如使用CSv)移动到一个名为"缓冲区"的特定文件夹中?

我正在使用Outlook 2007.

谢谢.


编辑:没有任何标准可以像通过规则那样自动化这个过程.它只是我在盯着它时做出的判断.

outlook vba outlook-vba outlook-2007

3
推荐指数
1
解决办法
8358
查看次数

在当前电子邮件正文中打开.rtf附件并粘贴内容

我们有一个Access数据库,该数据库正在使用该SendObject方法将报告导出为电子邮件的附件。

我需要做的是打开附件,复制文本(使用格式),然后将其粘贴到生成的电子邮件的正文中并删除文件。

我已经获得了剥离附件并打开它的代码,但是我不确定如何复制Word文档中的所有内容并将其粘贴回原始电子邮件中。

任何帮助将不胜感激!如果有更简单的方法,请告诉我。

Sub olAttachmentStrip()
  Dim strFilename As String
  Dim strPath As String
  Dim olItem As Outlook.MailItem
  Dim olAtmt As Outlook.Attachments
  Dim olInspector As Outlook.Inspector
  Dim appWord As Word.Application
  Dim docWord As Word.Document

  strPath = "C:\temp\"

  Set olInspector = Application.ActiveInspector
  If Not TypeName(olInspector) = "Nothing" Then
    If TypeName(olInspector.CurrentItem) = "MailItem" Then
        Set olItem = olInspector.CurrentItem
        Set olAtmt = olItem.Attachments
            olAtmt.Item(1).SaveAsFile strPath & olAtmt.Item(1).DisplayName
            strFilename = strPath & olAtmt.Item(1).DisplayName
            'olAtmt.Item(1).Delete
    Else
    MsgBox "Something went horribly wrong."
    End If …
Run Code Online (Sandbox Code Playgroud)

automation vba access-vba outlook-vba

3
推荐指数
1
解决办法
4164
查看次数