简体   繁体   English

将数据从Outlook 2010导入Excel 2010

[英]Importing Data from Outlook 2010 into Excel 2010

I have form on my website which gets emailed when the customer completes it, then looks like this:- 我在我的网站上有一张表格,当客户完成该表格后会通过电子邮件发送该表格,如下所示:-

You got mail from  Mr Kelley McIntyre.

Here is the form data:
First Name   : Mr XXXXX
Last Name    : XXXXXX
Company Name     : Army
Email Address    : XXXX@hotmail.co.uk
Telephone/Mobile No      : 0123456789
Date of Event    : 14/12/2013
Number of Guests     : 80
Budget   : 6500-7000
Type of Event    : Other
Catering Required    : Yes
Drinks and Entertainment Requirements    : christmas meal, welcome drink, wine at table

British Army Warrant Officers & Sergeants plus wives and partners
How Did You Hear About Us?   : Google

As you can see its fairly simple form, however I need to export this data into Excel every time I get one of these emails, so I can keep a record of all the enquiries we get. 如您所见,它的格式相当简单,但是,每当收到其中一封电子邮件时,我都需要将此数据导出到Excel中,这样我就可以记录我们收到的所有查询。

Can someone help? 有人可以帮忙吗? I know how to do a Macro, but if its VBA, then I'm lost, so its needs to be in idiot format if possible! 我知道如何做一个宏,但是如果它是VBA,那我就迷路了,所以如果可能的话,它必须是白痴格式!

You can start with writing a macro to process an mail item. 您可以从编写宏来处理邮件项目开始。 And setup Outlook Rule to pickup this type of email from Subject/Account then run the macro. 并设置Outlook Rule以从“主题/帐户”中提取此类电子邮件,然后运行宏。 Change sExcelFile, sRecordSheet, iC as you see fit. 根据需要更改sExcelFile,sRecordSheet,iC。 I have made assumptions. 我做了假设。

This Code below is for Outlook, please note you need a running Outlook all the time to have this automation. 下面的代码适用于Outlook,请注意,您需要一直运行Outlook才能实现此自动化。 It should get you started half way. 它应该使您入门一半。 Note you need "Microsoft Excel x.0 Object Library" in your References. 请注意,您的引用中需要“ Microsoft Excel x.0对象库”。

Public Sub Rules_WebSiteFormRecord(oMail As MailItem)

    Const sExcelFile As String = "C:\Test\Record.xlsx"
    Const sRecordSheet As String = "Record" ' Worksheet name

    Dim oExcel As Excel.Application, oWB As Excel.Workbook, oWS As Excel.worksheet
    Dim arrTxt As Variant, oLine As Variant, iR As Long, iC As Long, bWrite As Boolean

    Set oExcel = CreateObject("excel.application")
    Set oWB = oExcel.Workbooks.Open(FileName:=sExcelFile)
    Set oWS = oWB.Worksheets(sRecordSheet)
    ' Make Excel visible for Debug purpose:
    oExcel.Visible = True
    ' Find next row of Last used row in Excel worksheet
    iR = oWS.Cells(Rows.Count, 1).End(xlUp).Row + 1
    ' Process email body and store it into columns of worksheet "sRecordSheet"
    'Debug.Print oMail.Body
    ' Store received time of email in Column A
    oWS.Cells(iR, 1).Value = oMail.ReceivedTime
    ' Split the email body into lines then process each
    arrTxt = Split(oMail.Body, vbCrLf)
    For Each oLine In arrTxt
        bWrite = False
        ' store data according to text in line
        If InStr(1, oLine, "First Name", vbTextCompare) Then
            iC = 2 ' Column of First Name
            bWrite = True
        ElseIf InStr(1, oLine, "Last Name", vbTextCompare) Then
            iC = 3 ' Column of First Name
            bWrite = True
            ' Add the rest of the fields...
        End If
        If bWrite Then
            oWS.Cells(iR, iC).Value = Split(oLine, ":")(1)
            iR = iR + 1
        End If
    Next
    Set oWS = Nothing
    ' Close the workbook with saving changes
    oWB.Close True
    Set oWB = Nothing
    Set oExcel = Nothing
    ' mark it as Read if no error occurred
    If Err.Number = 0 Then
        oMail.UnRead = False
    Else
        MsgBox "ERR(" & Err.Number & ":" & Err.Description & ") while processing " & oMail.Subject
        Err.Clear
    End If
End Sub

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM