2016-09-01 2 views
2

Пожалуйста, кто-то может заполнить этот код, и это сведёт меня с ума. Я очищаю данные от электронных писем в доступе. На данном этапе я могу только скрести верхнюю строку в доступеДанные VBA из электронной почты

Я просто не могу показаться, чтобы получить массив Loop работать, чтобы упасть на следующую строку, и так далее, пока EOF

Email тело выглядит это, (может быть 700 строк)
(я бы ожидать, что ниже, чтобы поймать 4 строки и добавить в базу данных.)

N,F,AWB,932,50960003,5,MARKBR1,20160820,9300 
N,F,AWB,175,04391936,4,MARKBR1,20160824,0004 
N,M,AWB,195,04990293,4,JEFFBR1,20160824,0004 
N,F,AWB,245,04415213,4,ALLANBR1,20160824,0004 

код следующим образом (заранее спасибо)

Option Compare Database 

Sub getEmails() 

Dim olApp As Outlook.Application 
Dim olNamespace As Outlook.NameSpace 
Dim k 
Dim j 
Dim x 
Dim xXx 
Dim olFolder As Outlook.MAPIFolder 
Dim lngCol As Long 
Dim olItem As Object 
Dim whichAccount As String 
Dim objNS As Outlook.NameSpace 
Dim BodyTxt As String 
Dim BodyRow As String 
Dim db As dao.Database 
Dim rst As dao.Recordset 
Dim strData As String 

Set olApp = New Outlook.Application 
Set olNamespace = olApp.GetNamespace("MAPI") 
Set objNS = olApp.GetNamespace("MAPI") 
Set olFolder = objNS.GetDefaultFolder(olFolderInbox).Folders("MarkDrafts") 
Set rst = CurrentDb.OpenRecordset("SELECT * FROM email WHERE 1=0", dbOpenDynaset) 

'table is called Email, field is called emaildata 
For Each msg In olFolder.Items 
Debug.Print msg.Body 
BodyTxt = msg.Body 

ArrayVariable = Split(BodyTxt, vbCrLf) 

'loop ArrayVariable <<< this bit don’t work so it doesn’t drop to the next line 

rst.AddNew 
rst!EmailData = ArrayVariable(x) 
rst.Update 

'loop 

Next 

rst.Close 

Set olApp = Nothing 
Set Inbox = Nothing 
Set InboxItems = Nothing 
Set Mailobject = Nothing 
Set TempRst = Nothing 

End Sub 

ответ

3

Я не знаю, пытаетесь ли вы использовать псевдокод, потому что это не код цикла.

Вы не приращение й на всех

Subsitute

'loop ArrayVariable <<< this bit don’t work so it doesn’t drop to the next line 

rst.AddNew 
rst!EmailData = ArrayVariable(x) 
rst.Update 

'loop 

С этой актуальной петлей

For x = lBound(ArrayVariable) to uBound(ArrayVariable) 

    rst.AddNew 
    rst!EmailData = ArrayVariable(x) 
    rst.Update 

Next x 
+0

Благодаря Митч, я попробую это. Нужно ли мне что-либо делать, чтобы сказать «стоп», когда заканчивается электронная почта? –

+0

Нет - это то, что делает UBound - останавливается на последнем элементе массива. – dbmitch

+0

Отличный материал, я дам вам знать, как я нахожусь. Еще раз спасибо –

Смежные вопросы