Vba 如何使用UserForm编辑草稿?

Vba 如何使用UserForm编辑草稿?,vba,email,outlook,Vba,Email,Outlook,我正在开发一个程序,在文件夹中查找特定的电子邮件,并基于用户表单对该电子邮件执行一些操作 我创建并显示了UserForm,但它没有连接到电子邮件,因此在列表中的下一封电子邮件卸载UserForm之前,我无法将数据从UserForm传递到电子邮件 带有编辑信息的用户表单 没有实现任何代码,因此我将不在这里包含代码 如果我尝试在按下“格式化并发送”的情况下运行脚本,我将无法找到我的循环所在的电子邮件,因为它位于另一个子系统中 在创建UserForm的子函数中是否有访问UserForm值的方法 Su

我正在开发一个程序,在文件夹中查找特定的电子邮件,并基于用户表单对该电子邮件执行一些操作

我创建并显示了UserForm,但它没有连接到电子邮件,因此在列表中的下一封电子邮件卸载UserForm之前,我无法将数据从UserForm传递到电子邮件

带有编辑信息的用户表单

没有实现任何代码,因此我将不在这里包含代码

如果我尝试在按下“格式化并发送”的情况下运行脚本,我将无法找到我的循环所在的电子邮件,因为它位于另一个子系统中

在创建UserForm的子函数中是否有访问UserForm值的方法

Sub nameofSubRedacted()
    Dim myNameSpace As Outlook.NameSpace
    Dim myFolder As Outlook.Folder
 
    Set myNameSpace = Application.GetNamespace("MAPI")
    Set myFolder = FindInFolders(myNameSpace.Folders, "specific folder")

    Dim mail As MailItem
 
    For Each mail In myFolder.Items
        If InStr(mail.Subject, "specific text") Then
            mail.Display
            UserForm_Main.Show
            'this is where the form is filled in, and a selection is made.
        End If
    Next mail
End Sub

您需要更改消息的
MessageClass
属性以匹配自定义表单的属性。

您可以将mailitem作为参数传递

选项显式
subreded()的子名称
将myFolder设置为文件夹
将邮件设为邮件项
Dim replyMail作为邮件项
设置myFolder=Session.GetDefaultFolder(olFolderInbox)
对于myFolder.Items中的每封邮件
如果InStr(mail.subject,“特定文本”),则
邮件显示
UserForm_Main.Show
“这是填写表格并进行选择的地方。
Set replyMail=mail.reply
回复邮件
.HTMLBody=“Hello”&UserForm\u Main.TextBox1.Value和.HTMLBody
.展示
以
MsgBox“首选名称已更新”。&vbCr&vbCr&_
“传递replyMail以进行更多处理。”
更多处理回复邮件
如果结束
下一封邮件
端接头
子项目处理(mailAsParameter作为MailItem)
MsgBox“回复邮件,主题:”&vbCr&vbCr&_
mailAsParameter.subject&vbCr&vbCr&_
“已传递给moreProcessing。”
端接头

关于MessageClass属性的文档不多。我能从中找到什么。我不确定1)由于自定义表单没有MessageClass属性,因此要将属性更改为什么;2)此电子邮件仍将在宏完成后发送。这是否需要在我进行任何调整后将messageClass属性更改回IPM.Note(用于电子邮件)?您可以,但是
IPM.Note.MyForm可以保持原样-Outlook应该能够发送它。