我需要使用vba读取图片中的数据表.我使用Msg.Body来读取正文,但实际上我需要找到第一行作为标题并作为数据字段休息并相应地更新DBMS表.所以可以像在Excel中一样读取表吗?

此示例程序应该有所帮助.我在Excel中重新创建了表格,将其粘贴到Outlook电子邮件中并发送给自己.然后我用这个程序来读取"单元格"值.
Sub GetLines()
Dim msg As Outlook.mailItem
Dim rows As Variant
Dim numberofColumns As Long
Dim numberofRows As Long
Dim headerValues As Variant
Dim headerRow() As String
Dim data() As String
Dim i As Long, j As Long
' get currently selected email
Set msg = ActiveExplorer.Selection.item(1)
' tokenize each line of the email
rows = Split(msg.Body, vbCrLf)
' calculate array size
numberofColumns = Len(rows(0)) - Len(Replace(rows(0), Chr(9), ""))
numberofRows = UBound(rows) + 1
' put header row into array
ReDim headerRow(1 To numberofColumns)
headerValues = Split(rows(0), Chr(9))
For i = 1 To numberofColumns
headerRow(i) = Trim$(headerValues(i - 1))
Next i
' calculate data array size
numberofRows = numberofRows - 1
' put data into array
ReDim data(1 To numberofRows, 1 To numberofColumns)
For i = 1 To numberofRows
For j = 1 To numberofColumns
data(i, j) = Trim$(Split(rows(i), Chr(9))(j - 1))
Next j
Next i
End Sub
Run Code Online (Sandbox Code Playgroud)
首先,我们将电子邮件的每一行标记为一个数组.我们计算数组大小,然后创建一个数组来只保存表的第一行("标题").
然后我们从行计数中减去一个,因为我们将跳过标题行.然后我们循环遍历每一行,将其拆分并循环遍历其值,然后将它们分配给我们的2D数组.
最后,可以迭代变量"headerRow"以检索要用于DBMS的字段值.变量"data"仅包含与每个字段对应的值.因此headerRow(1)和data(n,1)应该对应于表的第一列中的值.
| 归档时间: |
|
| 查看次数: |
12456 次 |
| 最近记录: |