【发布时间】:2020-06-21 06:48:49
【问题描述】:
我收到一封标准化的电子邮件,其中包含一个表格 (11R x 3C),我只需要其中几个特定单元格的信息。
电子邮件中的表格格式如下。
1 |<Empty> |<Empty> |<Empty> |
2 | <Useless info> |
3 | <Impt Info> |
4 |Name: |NameID |<Empty> |
5 |Email: |EmailID |<Empty> |
6 |Contact: |ContactID|<Empty> |
7 |Comment: |CommentID|<Empty> |
8 | <Useless Info> |
9 | <Useless Info> |
10 | <Useless Info> |
11 | <Useless Info> |
在表格中,我只对<Impt Info>、NameID、EmailID、ContactID 和CommentID 的值感兴趣。
我尝试使用debug.print 作为 Word 表格对象循环遍历表格,但由于某种原因,它会将整个表格视为单个单元格。我是否会错误地分配表对象或只是使用错误的代码?
以下是我尝试使用的代码:
Sub test()
Dim objMail As Outlook.MailItem
Dim objWordDocument As Word.Document
Dim objTable As Word.Table
Dim objExcelApp As Excel.Application
Dim objExcelWorkbook As Excel.Workbook
Dim objExcelWorksheet As Excel.Worksheet
Dim I As Long
Dim SavePath As String
Dim SaveName As String
'Create a new excel workbook
Set objExcelApp = CreateObject("Excel.Application")
Set objExcelWorkbook = objExcelApp.Workbooks.Add
objExcelApp.Visible = True
'Get the table(s) in the selected email
Set objMail = Outlook.Application.ActiveExplorer.Selection.item(1)
Set objWordDocument = objMail.GetInspector.WordEditor
SavePath = "C:\Users\John.Grammaticus\Desktop\Test\"
SaveName = objMail.SenderName & " " & objMail.Subject
Set objTable = objWordDocument.Tables(1)
For Each C In objTable.Range.Cells
Debug.Print C.Range.Text
Next C
objTable.Range.Copy
Set objExcelWorksheet = objExcelWorkbook.Sheets(1)
objExcelWorksheet.Paste
objExcelWorkbook.SaveAs FileName:=SavePath & " " & SaveName
objExcelWorkbook.Close
End Sub
当前代码将值导出到 Excel 中,而我可能只是从 Excel 中进行操作。但是,我想最终将信息直接泵入 Access DB。因此,需要得出特定的值。
【问题讨论】:
-
你试过
InStr Function或Regex吗?