2013-10-17 191 views
1

我試圖創建一些代碼,將電子郵件的正文複製到新的Excel電子表格中。我有這樣的代碼:使用VBA將電子郵件中的表複製到Excel中

Public Sub ExportToExcel1() 

Dim ns As NameSpace 
Dim Inbox As MAPIFolder 
Dim myitem As Outlook.MailItem 
Dim FileName As String 
Dim i As Integer 
Dim objSearchFolder As Outlook.MAPIFolder 
Dim item As Object 
Dim mai As MailItem 

Set ns = GetNamespace("MAPI") 
Set Inbox = ns.GetDefaultFolder(olFolderInbox).Folders("Hold Info") 
Set objSearchFolder = Inbox 

i = 0 
For Each item In Inbox.Items 
    item.Display 
    item.Body.Select 
    Selection.Copy 
    Dim xlApp As Object ' Excel.Application 
    Dim xlWkb As Object ' Excel.Workbook 
    Set xlApp = CreateObject("Excel.Application") ' New Excel.Application 
    Set xlWkb = xlApp.Workbooks.Add 
    xlApp.Visible = True 
    xlApp.Workbooks.Add 
    xlApp.Selection.Paste False, False, False 
Next 

End Sub 

它不斷給我以item.Body.Select一個錯誤,我不知道爲什麼。這可能與事實有關,我試圖複製的電子郵件只是在Oracle中生成的表,但我不知道。

+0

'item.Body'返回一個String值 - 沒有'Copy'方法。您還應該檢查物品的類型以確保它不是其他某種非郵件類型(例如日曆項目)。您想從中複製哪些郵件格式? –

+0

可能重複的[如何閱讀表使用vba粘貼在Outlook郵件正文?](http://stackoverflow.com/questions/8061350/how-to-read-table-pasted-in-outlook-message-body-using -vba) – JimmyPena

回答

0

您可以直接使用剪貼板,而不是嘗試選擇和複製。如果您的項目中有一個用戶窗體,那麼您已經有了這個參考集。如果不是,請設置對Microsoft Forms 2.0對象庫的引用。然後使用DataObject將一些文本放入剪貼板。

Public Sub ExportToExcel1() 

    Dim ns As NameSpace 
    Dim Inbox As MAPIFolder 
    Dim item As Object 
    Dim doClip As MSForms.DataObject 
    Dim xlApp As Object ' Excel.Application 
    Dim xlWkb As Object 

    Set ns = GetNamespace("MAPI") 
    Set Inbox = ns.GetDefaultFolder(olFolderInbox).Folders("Hold Info") 
    Set doClip = New MSForms.DataObject 

    For Each item In Inbox.Items 
     If TypeName(item) = "MailItem" Then 
      doClip.SetText item.Body 
      doClip.PutInClipboard 

      Set xlApp = CreateObject("Excel.Application") ' New Excel.Application 
      xlApp.Visible = True 
      Set xlWkb = xlApp.Workbooks.Add 
      xlWkb.Sheets(1).Range("A1").PasteSpecial "Text" 
     End If 
    Next 

End Sub 

有幾點需要考慮。當您以這種方式使用剪貼板時,您使用的是Windows剪貼板,而不是Office剪貼板。 Windows剪貼板無法識別Office特定的剪貼板格式,因此您在翻譯時會有所失落。

從剪貼板粘貼有一些優點。但是,如果您想完全控制Excel中的數據顯示方式,請將正文讀入字符串,解析所需數據的字符串,然後將特定數據寫入所需的單元格。

相關問題