Kliknite tukaj, da si ogledate profil, kot ga vidijo drugi
 
Domov > Forum > Računalništvo

Outlook v Excel z uporabo VBA

 
 
13.11.2017, 18:23
Zdravo na spletu sem našel kodo, ki avtomatsko prekopira vsebino e-maila v excel.
Z ukazom body se v stolpec F izpiše vsebina sporočila. V ostale se izpisujejo še nekatere ostali podatki.
Jedro sporočila bi rad razdelil tako, da se vsaka vrstica sporočila vpiše v svoj stolpec. Na primer:
Stolpec F prva vrstica jedra sporočila
Stolpec G druga vrstica v jedra sporočila
Stolpec H tretja vrstica v jedra sporočila

Predvidevam, da moram uporabiti funkcijo Split in potem še zanko. Sem popolnoma nov v VBA tako, da če ima kdo kakšen namig bi bil zelo hvaležen.

Primer kode:

Const xlUp As Long = -4162

Sub ExportToExcel(MyMail As MailItem)
Dim strID As String, olNS As Outlook.NameSpace
Dim olMail As Outlook.MailItem
Dim strFileName As String
Dim Words As String

'~~> Excel Variables
Dim oXLApp As Object, oXLwb As Object, oXLws As Object
Dim lRow As Long

strID = MyMail.EntryID
Set olNS = Application.GetNamespace("MAPI")
Set olMail = olNS.GetItemFromID(strID)

'~~> Establish an EXCEL application object
On Error Resume Next
Set oXLApp = GetObject(, "Excel.Application")

'~~> If not found then create new instance
If Err.Number 0 Then
Set oXLApp = CreateObject("Excel.Application")
End If
Err.Clear
On Error GoTo 0

'~~> Show Excel
oXLApp.Visible = True

'~~> Open the relevant file
Set oXLwb = oXLApp.Workbooks.Open("C:\Users\jakap_tf0nzfh\Desktop\Sample.xls")

'~~> Set the relevant output sheet. Change as applicable
Set oXLws = oXLwb.Sheets("Sheet1")

lRow = oXLws.Range("A" & oXLApp.Rows.Count).End(xlUp).Row + 1

'~~> Write to outlook
With oXLws
'
'~~> Code here to output data from email to Excel File
'~~> For example
'
.Range("A" & lRow).Value = olMail.Subject
.Range("B" & lRow).Value = olMail.CreationTime
.Range("C" & lRow).Value = olMail.ReceivedTime
.Range("D" & lRow).Value = olMail.SenderName
.Range("E" & lRow).Value = olMail.SenderEmailAddress
.Range("F" & lRow).Value = olMail.Body
'
End With

'~~> Close and Clean up Excel
oXLwb.Close (True)
oXLApp.Quit
Set oXLws = Nothing
Set oXLwb = Nothing
Set oXLApp = Nothing

Set olMail = Nothing
Set olNS = Nothing
End Sub
 
 
 
15.11.2017, 14:18
Bistvo je v vrstici:
.Range("F" & lRow).Value = olMail.Body

Ta vrstica prepiše sporočilo v F stolpec v Excelu.

Tako da bi to vrstico moral zamenjati z nekaj podobnega:

' prebereš sporočilo v spremenljivko
sporocilo = olMail.Body

'razdeli sporočilo po vrsticah
arr = Split(sporocilo, vbCrLf)

'zadnji stolpec
zadnji_stolpec = "F"

for each x in arr
'dobiš naslednjo črko
zadnji_stolpec = Chr(Asc(zadnji_stolpec) + 1)

'zapišeš vrednost
.Range(zadnji_stolpec & lRow).Value = x
next


Sem pa to napisal na pamet, tako da je velika verjetnost, da iz prve ne bo delalo in bo potreben kakšen manjši popravek.


spremenjeno: podtalje (15.11.2017, 14:20)
 
 
 
20.11.2017, 19:00
Dela iz prve!
Edino med stolpci se vrstica vpisuje v vsaki drugi stolpec kar pa me ne moti.
Hvala ZELO si mi pomagal!
 
 
Prijava in registracija
 
 
 
Zmaga.com ponuja brezplačno in razumljivo učenje računalniških programov, vas na enkraten način spozna z različnimi svetovnimi jeziki, s podrobno obrazloženimi recepti prikaže čare kulinarike in vam prežene strahove pred domačimi opravili.
 
 
Poleg tega lahko prebirate poučne članke, ki so namenjene širjenju naše splošne razgledanosti ter preverite svoje znanje z priljubljenim in enostavnim sistemom za preverjanje znanja. Če med vsebinami, ki se dodajajo vsak dan, ne najdete želenega znanja, je za vaša vprašanja na voljo dobro obiskan forum, kjer lahko tudi aktivno sodelujete. V primeru, da bi radi svoje praktično znanje delili z ostalimi, pa to lahko storite preko preprostega vmesnika za dodajanje vsebin. Zmagajte z znanjem z Zmaga.com!