创建Outlook电子邮件时,无论使用何种换行命令,.Body文本都是双倍行距。
我正在通过 VBA 创建一个 Outlook 电子邮件,该电子邮件通过单击 Access 表单按钮运行.对于 .Body,我使用以下串联字符串设置我的“strBody"字符串对象: strBody = "First Line of text here." & vbNewLine & _ vbNewLine & _ "Second Line of text here." & vbNewLine & _ Chr(187) & "Third Line of text here." & vbNewLine & vbTab & _ Chr(187) & "Fourth Line of text here." & vbNewLine & vbTab & _ Chr(187) & "Fifth Line of text here." & vbNewLine & vbTab & vbTab & _ Chr(187) & "Sixth Line of te
286 2022-08-09
编程技术问答社区
如何在收到相同主题的新邮件时删除旧邮件
我在删除具有相同主题行的电子邮件但将新收到的电子邮件保留在 Outlook-vba 上时遇到问题 有人对如何做到这一点有任何想法吗? 解决方案 您可以使用 Dictionary Object 用于存储 Items.Subject,同时您在 Inbox.Items 中使用 Item.ReceivedTime 测量收到的 Item.ReceivedTime VBA 中的字典 是一个集合对象:你可以在其中存储各种东西:数字、文本、日期、数组、范围、变量和对象,字典中的每个项目都有自己的唯一键和使用该键,您可以直接访问该项目(读/写). 现在自动化流程 - 尝试使用 应用程序.Startup 事件 (Outlook) 和 Items_ItemAdd 事件 (Outlook) Items.ItemAdd 事件 在将一个或多个项目添加到指定集合时发生.一次将大量项目添加到文件夹时不会运行此事件. 代码示例 Private WithEvents Items As
214 2022-08-03
编程技术问答社区
每小时统计收件箱中的邮件并保存到文本文件中
我正在尝试在 Outlook 中编写一些 VBA,以每小时计算收件箱文件夹中的电子邮件(未读和已读),并在每次发生时将如下内容转储到文本文件中: 28/02/2018 01:00 - 1,320 我见过各种代码片段,但我不确定如何实现这一点.有人可以帮忙吗? 解决方案 应该很简单- 例子 Option Explicit Public Sub example() Dim Items As Outlook.Items Set Items = Application.Session.GetDefaultFolder( _ olFolderInbox).Items Debug.Print Now() & " - " & Items.Count Dim FSO As New FileSystemObject Dim TS As TextStream
60 2022-08-03
编程技术问答社区
自动打开邮件中的链接的outlook脚本
我在我的电脑上使用 Windows 10,并且大部分时间都在使用 Chrome 浏览器.我正在尝试获取一个脚本,该脚本会自动打开电子邮件中收到的链接.我找到了 vba 脚本,但它们不起作用,我不断收到错误.如果你们中的任何人可以帮助我解决这个问题? 解决方案 您可以使用 MailItem 类的 HTMLBody 属性来查找那里的所有超链接.然后你可以使用下面的方法运行 Chrome 并找到一个链接: Sub LaunchInChrome (url as String) Dim chromePath As String chromePath = """C:\Program Files\Google\Chrome\Application\chrome.exe""" Shell (chromePath & " -url " & url) End Sub
182 2022-08-03
编程技术问答社区
Outlook VBA用替换功能丢失格式,.HTMLBody不起作用
我冒昧地搜索了该站点的 Outlook VBA 堆栈溢出部分,但找不到与此问题相关的任何内容.我有一个我创建的模板.当我打开模板时,格式已经是我想要的,并且签名会在消息末尾自动填充.我创建了一个宏,它会提示输入以下信息,然后将消息中的标签替换为我在输入框中输入的信息. 在使用 Google(很多)之后,我尝试在我的替换功能中使用 myItem.Body.当我这样做时,宏可以工作,但我会丢失所有模板和签名格式.然后我尝试在我的替换函数中使用 myItem.HTMLBody,它不会替换正文中的任何内容,并且签名消失了. 下面的代码...任何指导将不胜感激.(展望 2010) Sub PopulateTemplate() Dim myItem As MailItem, oInspector As Inspector Set oInspector = Application.ActiveWindow Set myItem = oInspector.CurrentItem 'Pro
262 2022-08-03
编程技术问答社区
当Outlook约会被取消时处理ItemChange事件
我创建了一些宏来将我的日历事件从我的工作电子邮件转发到我的个人电子邮件.一个组件是 ItemChange 事件,当我的工作日历上的项目发生变化时,它将更新我的个人日历.我有一个问题,每次我在 Outlook 中取消约会提醒时,它都会触发“itemchange"事件.我正在尝试开发一些东西来防止我的项目更改程序在提醒被解除时运行.有人知道如何处理吗?有谁知道解除提醒时 AppointmentItem 的哪些属性会发生变化? 解决方案 你不能那样做.当您关闭提醒时,会设置几个属性并保存约会.改变就是改变.
138 2022-08-03
编程技术问答社区
Outlook 2016-"运行时错误 '287'。在使用CurrentItem.Saveas或CurrentItem.HTMLBody时,出现 "应用程序定义的或对象定义的错误
我们有一个 Access 数据库在“Office 2010"下运行了好几年,但现在我们必须更改为 Office 365,并且使用以下代码遇到了这个烦人的错误: Dim olAppSaida As Outlook.Application Dim olItemSaida As Outlook.MailItem Set olAppSaida = CreateObject("Outlook.application") Set olItemSaida = olAppSaida.ActiveInspector.CurrentItem If Not TypeName(olItemSaida) = "Nothing" Then olItemSaida.SaveAs "C\TEstes\" & strProcesso & ".Msg", olMSGUnicode End If 已检查对 Outlook XX.X 库的引用,但该行出现错误: "olItemSaida.SaveAs "C\T
174 2022-08-03
编程技术问答社区
我想在一个excel宏中插入excel表的数据表格后插入我的默认签名,以便使用Outlook发送电子邮件
我想从我的 Excel 工作簿的 Sheet1 中插入一个数据表,插入后我需要插入我的签名.我尝试使用 HTMLBody.但它要么在表格显示之前显示签名,要么根本不显示任何签名.我尝试更改 .HTMLBody 的位置,但无济于事.总之必须发送以下格式的邮件: 收件人: 抄送: 密件抄送: 主题: 正文:应包含“Hi Please find below the details" 然后是范围数据的excel表格("A3:F3) 然后是我的签名(这是 Outlook 中的默认签名或可以创建的东西) 然后发送. 以下是我目前拥有的代码.任何人都可以pleaaaassseeeeee HELP MEEEEEE !!!! Sub esendtable() Dim outlook As Object Dim newEmail As Object Dim xInspect As Object Dim pageEditor As Object Set outlook = C
116 2022-08-03
编程技术问答社区
outlook VBA脚本在公共文件夹中迭代邮件时随机出现13号错误
我在执行以下子例程时收到随机运行时错误 13(类型不匹配).这个例程大部分时间都有效.作为参数传入的文件夹在失败时是合法的.从我在调试器中可以看到,对象在运行时缺少一些字段.在调试器中断点后,我可以立即单步执行(重新执行有问题的行)并且没有错误. 我尝试使用“on error goto"进入睡眠状态,然后重试多行,但错误一直存在,直到它在调试器中停止. 我还尝试在循环命令的 For ii 和 For Each 形式之间进行更改. 我也被杀毒暂时禁用了. 我正在遍历大量公用文件夹.我的 Outlook 客户端是在 XP 下运行的 2003,我连接到 Exchange 服务器版本 7654. 谁能告诉我我做错了什么(或者我正在尝试的事情是不可能的)? 下面的代码已根据@dmitry 的建议进行了修改,现在可以使用了. Sub SearchFolders(objFolder As Outlook.MAPIFolder) Dim objFolders
212 2022-08-03
编程技术问答社区
发送 "代表 "时一定要抄送。
我经常代表其他用户发送电子邮件.每次我从/代表该用户发送电子邮件时,我想使用 VBA 自动抄送该用户. 我不熟悉 VBA for Outlook,但我认为您可以编写一个 if 语句,说明“如果从 UserX 发送消息,则抄送 UserX".代码应在代表发送电子邮件时自动运行. 解决方案 SentOnBehalfOfName 很棘手.在项目发送之前,它通常是空的. 在 ThisOutlookSession 中使用此代码,您应该会发现它是空白的. Private Sub Application_ItemSend(ByVal item As Object, Cancel As Boolean) Dim myRecipient As Recipient Debug.Print " item.SentOnBehalfOfName - " & item.SentOnBehalfOfName If item.SentOnBehalfOfName =
126 2022-08-03
编程技术问答社区
如何为许多Outlook子文件夹实现ItemChange?
在 Outlook 的 VBA 模块中,我目前的代码如下: Private WithEvents AAInboxItems As Outlook.Items Private WithEvents AASentItems As Outlook.Items Private WithEvents AADoneItems As Outlook.Items Private Sub AAInboxItems_ItemChange(ByVal Item As Object) 'Do Something End Sub Private Sub AASentItems_ItemChange(ByVal Item As Object) 'Do Something End Sub Private Sub AADoneItems_ItemChange(ByVal Item As Object) 'Do Something End Sub 以上不是完整的代码,只是为了说明原理.这适
68 2022-08-03
编程技术问答社区
搜索已发送的邮件并将多封邮件移到一个文件夹中
我尝试在 SentMail 文件夹中搜索 To address 以结尾的邮件,比如说 .cn 并将其移动到个人文件夹. 代码工作但不会移动所有邮件,因为每次我运行它都会多接收几封邮件. 如果我有 24 封以 .cn 结尾的邮件,则需要 13、6、3、2,所以最后它会找到所有邮件,但不是在同一运行中. 有人有什么想法吗? Sub Search_SentMail() Dim myOlApp As New Outlook.Application Dim MyNameSpace As Outlook.NameSpace Dim MyInbox As Outlook.MAPIFolder Dim myitems As Outlook.Items Dim myItem As Object Set MyNameSpace = myOlApp.GetNamespace("MAPI") Set MyInbox = MyNameSpace.GetDefaultFolder(olFol
148 2022-08-03
编程技术问答社区
如何在MS Outlook中使用VBA的 "总是移动此对话中的信息 "功能?
我正在尝试在 MS Outlook 中实现搜索和移动功能.搜索没问题,它就像魅力一样.但是,我只能找到移动功能将邮件移动到 Outlook 文件夹中. 我手动使用“始终在此对话中移动消息"功能.现在,我想从宏中使用它.有没有办法从 VBA 中使用此功能? 这是当前的实现,但它使用了简单的移动功能: Private Sub btn_Click() Dim currentMail As Object Dim F As Outlook.MAPIFolder Dim Msg$ Set currentMail = Application.ActiveWindow If TypeOf currentMail Is Outlook.Inspector Then Set currentMail = obj.CurrentItem Else Set currentMail = obj.Selection(1) E
124 2022-08-03
编程技术问答社区
在Outlook中运行VBA脚本时出现运行时错误'-2147221241(80040107)
我有一个在 Outlook 中运行的 VBA 脚本,它应该将带有特定主题的传入电子邮件移动到 Outlook 中的子文件夹,然后将这些电子邮件导出到 TXT 文件. 这在大多数情况下都有效,但在导出了几封电子邮件后,消息:“运行时错误 '-2147221241 (80040107)':操作失败."弹出.我调试了它,它突出显示了代码行: RevdDate = Item.ReceivedTime 一旦出现此错误,我可以重新启动 Outlook,它通常会毫无问题地导出剩余的电子邮件.但是,我们需要完全自动化,所以我需要消除这个错误. 以下是全部代码: Option Explicit Private WithEvents Items As Outlook.Items Private Sub Application_Startup() Dim olNs As Outlook.NameSpace Dim Inbox As Outlook.MAPIFol
178 2022-08-03
编程技术问答社区
解析Outlook邮件并导出至Excel VBA
我目前正在编写一个在 Microsoft Outlook 中运行的 VBA 宏脚本,它应该解析电子邮件中的关键信息并将它们存储到 Excel 电子表格中. 现在,我被困在解析和提取我想要的东西的逻辑上. 这是一封电子邮件的简短示例,其中包含需要提取并保存到 Excel 中的信息,以黄色圈出(X 是大写或小写字母,# 是数字) 这是 Excel 布局以及我当前的代码发生了什么,除了标题之外什么都没有弹出! 这是我当前的代码: Sub Extract() On Error Resume Next Dim messageArray(3) As String Set myOlApp = Outlook.Application Dim OlMail As Variant Set mynamespace = myOlApp.GetNamespace("mapi") 'Open the current folder, I want
138 2022-08-03
编程技术问答社区
回复(通过.发送)电子邮件Outlook "运行脚本 "规则没有触发传入邮件的VBA脚本
(由于我来自巴西,有些文字是葡萄牙语,所以如果您需要帮助,请告诉我). 我的 Outlook“此 Outlook 会话"中有 2 个宏,其中 1 个主宏调用了我之前提到的其他 2 个. 主宏做: 宏名:"Salvar_CNAB_Registro" 发现电子邮件的主题并根据所写的内容给出我想要的路径.发现路径后,将电子邮件中的所有附件保存在发现的路径上. Sub Salvar_CNAB_Registro(Email As MailItem) 'Dim strSubject As String Dim objMsg As Outlook.MailItem Dim objSubject As String objSubject = Email.Subject 'Defino qual caminho salvará os registros dos arquivos CNAB dependendo do produto
190 2022-08-03
编程技术问答社区
创建VBA宏以保存电子邮件副本
我使用 Outlook (MS Exchange) 并拥有一个个人和两个组收件箱(我正在使用个人配置文件登录工作,通过该配置文件我也可以访问组收件箱). 当我发送电子邮件时,我在 From 字段中选择了我的个人或两个组电子邮件地址之一.发送电子邮件时,我希望将副本保存在 myIndividualMailbox、groupAMailbox 或 groupBMailbox 的收件箱中,具体取决于我使用的 From 电子邮件地址. 示例:如果我发送电子邮件 From groupA@myCompany.com,我想要保存在 groupAMailbox 收件箱中的电子邮件副本(而不是在我的个人收件箱中). 我知道这不可能通过在 Outlook 中设置规则来实现,但可以通过 VBA 宏来完成.我现在不知道如何编写 VBA 宏,也不知道这是否只是一个简短的脚本或更复杂的脚本.事实上,我从未在 Outlook 中编写过宏,所以我什至不知道如何开始.任何人都可以展示如何做到这一点?
152 2022-08-03
编程技术问答社区
获取Outlook中所有房间的列表
我正在编写一些应用程序,我需要在我的组织内获得所有可用房间.(我们在 Outlook 中打开“添加房间"对话框时获得的相同列表)我假设当我们通过 Outlook 执行此操作时,他针对某些交换服务器工作,问题是有没有办法使用 Outlook 作为我与交换服务器之间的“代理"? 我对exchange一窍不通,对outlook的interop有点了解... 提前感谢您的帮助. 解决方案 我不知道这是否适合你,但是用 OutlookSpy,PR_CONTAINER_FLAGS 属性包含一个未记录的位 0x200.我没有看到为任何其他容器设置相同的位.以下内容对您有用吗? PR_CONTAINER_FLAGS = "http://schemas.microsoft.com/mapi/proptag/0x36000003" set rooms = Nothing set lists = Application.Session.AddressLists for each list
378 2022-08-03
编程技术问答社区
Outlook VB脚本转发文件夹中的电子邮件
我有一个特定的用户,他真的希望能够将任何电子邮件重定向到他们部门中的其他人,这样当那个人回复电子邮件时,它会回到最初发送它的人. 我们不能授予他们以所有人身份发送的权限,因为并非所有用户都是内部用户,所以我正在尝试制作一个 VBScript 以在 Outlook 中运行,它将转发指定文件夹中的所有电子邮件,但更改回复地址以便他们不用每次都手动放入. 我对 VB 脚本还很陌生,所以我可能缺少一些非常基本的东西. 这是我正在尝试的,但它不起作用: Sub SendFolder() Dim olApp As Outlook.Application Dim olNS As Outlook.NameSpace Dim MyFolder As Outlook.MAPIFolder Dim ObjMail As Outlook.MailItem Set olApp = Outlook.Application Set olNS = o
76 2022-08-03
编程技术问答社区
如何在Outlook中打开草稿时自动运行一个宏?(添加密文)
我正在尝试自动实现此工作流程: 当用户在 Outlook 中打开邮件草稿时(生成的 EML 文件) if 主题匹配一个字符串(不可变,事先知道,我无法更改它;类似于 xyžřy,注意非 ASCII 字符): 然后将电子邮件添加到密件抄送字段(不可变、事先已知、有效的电子邮件地址;假设它是 baz@example.com) 我已经知道最后一部分 - 如何添加BCC 到一条消息,我使用 InStr 进行匹配: Sub addbcc() Dim objRecip As Recipient Set oMsg = Application.ActiveInspector.CurrentItem With oMsg If InStr(1, oMsg.Subject, "xyžřy") > 0 Then Set objRecip = oMsg.Recipients.Add("baz@example.com") objRecip.Type
134 2022-08-03
编程技术问答社区