簡體   English   中英

將表格從 Outlook 電子郵件復制到 Excel 文件 - VBA

[英]Copying Tables from Outlook Email to Excel File - VBA

我目前正在使用 Outlook 2010 VBA 宏從電子郵件中提取信息並將其放入 Excel 文件中。 這個想法是,每封電子郵件在每次嵌入電子郵件的表格中都有相同的字段(姓名、訂單號、日期等),並將數據放入電子表格中。 為此,我目前使用以下代碼來獲取表格並將其移動到 Excel 中:

'This code is inside a for each loop for each message
Set excelWorksheet2 = excelWorkbook.Worksheets.item(2)
Set excelWorksheet3 = excelWorkbook.Worksheets.item(3)
Set excelWorksheet4 = excelWorkbook.Worksheets.Add(After:=excelWorkbook.Sheets(excelWorkbook.Sheets.count))

Dim mailObj As Outlook.MailItem
Dim doc As Word.Document
Set doc = mailObj.GetInspector.WordEditor

Dim table1, table2, table3 As Object
Set table3 = doc.Tables(4).Range
Set table2 = doc.Tables(3).Range
Set table1 = doc.Tables(2).Range

table1.Copy
excelWorksheet2.Paste
table2.Copy
excelWorksheet4.Paste
table3.Copy
excelWorksheet3.Paste
Set table1 = Nothing
Set table2 = Nothing
Set table3 = Nothing

'I do much more of this to get the data from each table and put it into a master worksheet...
excelWorksheet.Cells(rows, cols + 1).Value = excelWorksheet2.Cells(4, 2).Value 'Contract Number
excelWorksheet.Cells(rows, cols + 2).Value = excelWorksheet2.Cells(4, 4).Value 'Contractor Name 

Set doc = Nothing
Set excelWorksheet2 = Nothing
Set excelWorksheet3 = Nothing
Set excelWorksheet4 = Nothing

我經常收到以下錯誤,但它不會發生在相同的數據上,它有點隨機,似乎只發生在 Outlook/電子郵件端:

  • “請求的集合成員不存在。” (錯誤代碼 5941)在.Range
  • .Copy行中的“對象‘范圍’的方法‘復制’失敗”

有時,如果我單步執行,這兩種錯誤都會發生,如果復制失敗,宏將崩潰。

我試過:

  • 延遲 2 秒
  • 通過更少的電子郵件(當我選擇 > 10 封電子郵件進行處理時,此代碼通常會失敗)
  • 每封電子郵件后清除剪貼板
  • 通過Nothing關閉/釋放對象(不確定這是否是最佳實踐,因為我更像是一個 C/C++/C#/Java 人)

這些似乎都沒有遠程解決這個問題,因為這兩個錯誤經常彈出,但間歇性彈出。 對於調試這個問題的下一步是什么,我真的很茫然,任何幫助將不勝感激!

根據我對 WordEditor 表格問題所做的研究,似乎復制/粘貼操作和搜索 HTML 表格的數量根本不允許可靠的行為。 一種可能的解決方案是將整個電子郵件復制到 Excel 中並以這種方式解析表格(這仍然需要復制/粘貼)。

我為解決這個問題所做的(間接)是將所有電子郵件保存為 HTML 文件(通過 Outlook.Application 在 Excel 中運行: email.SaveAs folderPath + fileName + ".html", olHTML )在一個臨時目錄中並打開 Excel工作簿中的 HTML 文件並以這種方式處理數據。 這更加可靠(雖然增加了開銷),並且允許將大量電子郵件正確導出到 Excel。

如果有人想要我的問題的確切代碼,請給我發消息(hotmail.com 上的 vindansam,它有點長,其中包含一些專有信息)。

WordEditor 似乎不能很好地處理信息,這太糟糕了,也許微軟會在下一個版本的 Office 中加強這一點。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM