Tag: outlook

vba复制电子邮件正文为表格

嗨,我有以下代码成功循环通过我的文件夹,并拉我想要的电子邮件,并复制到Excel中的正文(表格格式)。 然而,当我粘贴它时,整个身体将被粘贴在单元格A1,当它应该填充范围A1:K92,就像我手动复制和粘贴它。 有没有什么办法可以使用vba将其粘贴到正确的范围内? 谢谢! Sub GetFXEmail() Dim olApp As Outlook.Application Dim olNs As Namespace Dim Fldr As MAPIFolder Dim olMi As Variant Dim i As Integer Set olApp = New Outlook.Application Set olNs = olApp.GetNamespace("MAPI") Set Fldr = olNs.GetDefaultFolder(olFolderInbox) Set Fldr = Fldr.Folders("MyFolder") Set inboxItems = Fldr.Items pnldate = Format((Date – 1), "mm/dd/yyyy") Set inboxItems […]

打开文件从Outlook到Excel并保存为不同的格式,具体取决于发件人

我使用堆栈溢出很多,但这是我的第一篇文章。 我知道VBA就足够危险了。 我最初为Outlook编写了这段代码 – 它的最初目的是重命名任何附件文件并将其保存在特定的目录中(我仍然需要发送给我的文件的一个人的function,如email@email.com)。 现在我有多个人发送文件,需要修改脚本以确定文件的发件人是谁(我知道一个发件人总是将附件作为Excel XLSX文件发送,但我需要它作为CSV)打开XLSX文件在Excel中并将其保存为纯CSV。 很明显,我的方法不起作用,我找不到任何类似于我想要堆栈溢出的情况。 有人愿意帮我解决这个问题吗? 非常感谢大家的帮助! 这是我现在的,但我的If语句似乎没有工作… Public Sub saveAttachtoDisk(itm As Outlook.MailItem) Dim objAtt As Outlook.Attachment Dim saveFolder As String Dim saveFolder2 As String Dim dateFormat dateFormat = Format(Now, "yyyy-mm-dd H-mm") saveFolder = "c:temp1" saveFolder2 = "c:\temp2" ' CASE 1 If objAtt.SenderName = "Sender's First & Last Name" Then For Each […]

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

我有一个工作簿,至less有15个人在H3:H1500列中定期使用和更新包含客户信息的电子邮件。 通过使用Worksheet_FollowHyperlink事件,我们可以通过预先写好的Outlook帐户发送电子邮件,并且依赖于一周中哪一天需要订购(MF,星期六和星期天),而且代码可以很好地生成消息。 我的主要问题是跟踪对客户的回应。 我试过有一个loggingdate(NOW函数)和Environ(“用户名”)的列,只要列H中的超链接被选中,但是因为我把电子邮件子集设置为.Display(所以人们可以做任何最后一分钟的调整如果需要的话),它只logging谁select了超链接(当消息从未实际发送时,显然发生了很多意外事件)。 我在这个论坛上发现了几个线程,其他人也参考创build了一个Class模块,并且实现了一个用于查看它是否可以在我的代码中工作的线程,但是通过添加它,整个电子邮件子文件变得无用,所以我恢复了原来的状态旧的forms。 由于我在VBA方面并不是非常有经验(我得到了很多帮助和试错),所以我意识到我的一些代码select可能看起来很愚蠢,如果有更好的方法可以做到这一点,它 – 我只知道,这张纸大多是现在的作品,我希望它可以改善,如果可能的话。 我目前的电子邮件是: 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 = […]

如何从Outlook通讯簿中获取基于Excel中的值(VBA)

我有以下代码的作品(我发现它在论坛上): Public Sub GetUsers() Dim myolApp As Outlook.Application Dim myNameSpace As Namespace Dim myAddrList As AddressList Dim myAddrEntries As addressEntry Dim AliasName As String Dim i As Integer, r As Integer Dim EndRow As Integer, n As Integer Dim myStr As String, c As Range Dim myPhone As String 'Dim propertyAccessor As Outlook.propertyAccessor 'This only […]

使用VB / VBAsearchOutlook邮件并将特定数据提取到Excel工作表中

首先,我是一个VB新手,从头开始工作,但过去编辑过一些代码。 我能find的最接近的问题是这个问题,但并不像我希望的那么具体。 所以我使用Outlook / Excel 2007,每天收到一封包含固定格式数据的电子邮件。 我希望做的是build立一个macros/脚本,将search我的Outlook收件箱,然后基于正确的邮件主题,将查看邮件的正文,并提取到Excel工作表中的某些部分。 我认为VB可能是根据我的知识做到这一点的最好方法,但我不太确定从哪里开始。 任何帮助的代码或其他类似的例子的一般结构将不胜感激。 只是想开始,希望能够自己解决未来的练习。 谢谢! 所以非常感谢您的帮助! 我主要得到这个工作,当我得到一个新的消息,我只是无法让它自动更新。 我有一个规则设置,将相关的电子邮件移动到他们自己的文件夹,我能够build立一个公共的macros,我可以运行,拉出所有的数据(每个电子邮件),并将其转储到.csv文件。 我试图将这个macros调整到上面发布的例子中,当我收到一条新消息时它会自动运行,但是我还没有成功。 电子邮件的parsing不应该改变(并且肯定在手动运行的macros中有效),所以这很好,只是让自动更新macros运行在一个新的消息上。 我错过了什么吗? 这是我得到的,这是基本上与上面的例子除了新的文件夹(是一个类模块)相同: Public WithEvents myOlItems As Outlook.Items Public Sub Application_Startup() ' Reference the items in the Inbox. Because myOlItems is declared ' "WithEvents" the ItemAdd event will fire below. Set myOlItems = Outlook.Session.GetDefaultFolder(olFolderInbox).Folders("FolderX").Items End Sub Private Sub myOlItems_ItemAdd(ByVal Item […]

Excel VBAsearch邮件的Outlook

我正在开发一个项目,里面有一个Account ID的列表,我正在做的是创build一个与Outlook接口的macros,在特定条件下search我的收件箱中的任何电子邮件,然后返回“ Y“或”N“,如果find,发送邮件的人和发送的时间。 以下是我正在使用的代码; 我需要macros来search电子邮件正文而不是主题行。 当我将[主体]replace为[主体]时,macros运行没有错误,但没有返回邮件(我放置了几个testing邮件来捕捉它)。 我正在运行Excel和Outlook 2007,并且已经引用了VBA中的MS 12.0 Excel和Outlook库。 Sub Work_with_Outlook() Set outlookApp = CreateObject("Outlook.Application") Dim olNs As Outlook.Namespace Dim Fldr As Outlook.MAPIFolder Dim olMail As Variant Dim sir() As String Set outlookApp = New Outlook.Application Set olNs = outlookApp.GetNamespace("MAPI") Set Fldr = olNs.GetDefaultFolder(olFolderInbox) Set myTasks = Fldr.Items Set olMail = myTasks.Find("[Subject] = ""123456""") […]

如何在VBA中进行后期绑定?

我有这个小function,实现了通过VBA创build电子邮件, 它从另一个与Excel文件一起工作的函数获取数据。 我遇到的问题是,我通过Excel 2016做了所有这一切,当我的一些同事尝试使用它时,出现缺less引用的错误(Outlook Library 16.0)。 所以我查了一下互联网的解决scheme,我发现的很多,但是最好是Late Binding。 我已经阅读了所有关于它,但我似乎并不真正了解发生了什么,以及如何使它在下面的代码中工作。 Sub EscalateCase(what_address As String, subject_line As String, email_body As String) Dim olApp As Outlook.Application Set olApp = CreateObject("Outlook.Application") Dim olMail As Outlook.MailItem Set olMail = olApp.CreateItem(olMailItem) olMail.To = what_address olMail.Subject = subject_line olMail.BodyFormat = olFormatHTML olMail.HTMLBody = email_body olMail.Send End Sub 因此,也许你可以用这个例子来帮助我,看看这个我的实际案例。

使用Outlook模板和设置variables从Excel 2007 VBA发送电子邮件

我有一个数据列表,让我们说客户端信息(姓名,电子邮件,欠金额等),存储在一个Excel工作表。 我的目标是在Excel中单击一个button,并在Outlook模板中向每个客户发送他们的信息。 创build一个邮件对象 将邮件对象设置为模板文件 设置,然后用关于当前客户端的数据填充模板 – 大多停留在这里,不知道如何指定模板中的variables,然后在VBA中与它们关联 保存到草稿供以后审查/发送 例如。 亲爱的<clientname> =亲爱的约翰·史密斯 我的代码到目前为止: Dim myOlApp As Outlook.Application Dim MyItem As Outlook.MailItem Set myOlApp = CreateObject("Outlook.Application") Set MyItem = myOlApp.CreateItemFromTemplate("C:\egTemplate.oft") With MyItem .To = Worksheets("Clients").Range(1, 2) .Subject = "Monthly bill" 'Refer to and fill in variable items in template .Save End With Set MyItem = Nothing Set […]

如何在Excel中使用VBA代表其他日历发送会议请求?

我是第二次发布这个请求,因为尽pipe我已经收到了JimmyPena的回复,但是这个解决scheme并没有起作用,我似乎也不能对发生的事情添加我的意见。 VBA代码在Excel电子表格中不是Outlook。 我正试图在Excel 2007中编写一些VB代码,这些代码将自动从Outlook 2007日历发送会议邀请到Excel电子表格中列出的收件人列表,在电子表格中指定的date。 这很有用,因为我可以通过点击一个button向不同date的不同人发送数百个会议请求。 使用以下代码从我自己的用户帐户发送时,我可以做到这一点: ' Create the Outlook session Set myoutlook = CreateObject("Outlook.Application") ' Create the AppointmentItem Set myapt = myoutlook.CreateItem(olAppointmentItem) ' Set the appointment properties With myapt .Subject = " Assessment Centre " .Location = "conference room A" .Start = Cells(5, 24 + j) & " 17:00:00 PM" .Duration = 120 […]

在某些计算机上,Excel VBA中的空白“收件人”字段为空

我们有一个Excel电子表格,用于为潜在客户创build报价。 通过使用VBA,它生成PDF并通过电子邮件将其发送给客户。 它将客户的电子邮件地址从用户填写客户详细信息的主表单元格中取出。 几个星期前,即使在主表单上填写了客户的电子邮件地址,也不会填写Outlook的“收件人”字段。 当我们改变这个电子表格中的任何东西,包括代码时,我们把它保存为一个新的“修订”(保留所有以前的修订)。回到以前的修订,我现在发现它们都没有工作。 这很奇怪,因为他们之前确实如此。 我正在使用Office 2016(虽然我刚刚升级,但是这个问题是最近的)。运行Office 2013的计算机也无法正常工作。 但是,运行Office 2007的计算机却能正常工作。 现在有什么想法,为什么这是一个问题,为什么它只是某些版本的Office的问题? 这是代码片段: Private Sub send_as_pdf_Click() On Error GoTo ErrMsg Dim strPath As String, strFName As String Dim OutApp As Object, OutMail As Object strPath = Environ$("temp") & "\" strFName = Sheets("Quotation").Name & " " & Range("G18") & ".pdf" Sheets("Quotation").ExportAsFixedFormat Type:=xlTypePDF, Filename:= _ strPath & […]