VBATools

Export danych adresowych nadawców do Excela

by on Dec.16, 2011, under Excel, Outlook, Porady

Wiele czynności związanych z wysyłką emailingu marketingowego jest związane z późniejszymi raportami z działalności. Jak połączyć dane w folderach Outlooka z Excelem?

Można użyć darmowego programu CodeTwo Outlook Export i zapisać adresy do pliku, który następnie otworzyć plik Excelem, jednakże czasem nie można nic instalować i jedynym rozwiązaniem jest makro.

Uruchomić go można w developerze VBA (Alt+F11) w sekcji module.

Po artykule dotyczącym export wiadomości do excela, wiemy już jak użyć późnego wiązania – teraz go zastosujemy.

Jeśli nie ma się doświadczenia polecam przeczytać artykuł Instalacja i uruchamianie makr.

Option Explicit
Sub Zapis_maili_przychodzacych_Excel(oMail As MailItem)
'MVP OShon from VBATools.pl
If oMail.Class <> 43 Then Exit Sub 'olMail
Dim XLApp As Object 'Excel.Application
Dim wkb As Object, wks As Object, max_row&
Const sciezka$ = "c:\temp\OLvXL_adresy.xlsx"
Set XLApp = CreateObject("Excel.Application")
 XLApp.Visible = False
 If FileExists(sciezka) = False Then
   XLApp.Workbooks.Add
   XLApp.ActiveWorkbook.SaveAs sciezka
 Else
   XLApp.Workbooks.Open sciezka
 End If

 Set wkb = XLApp.ActiveWorkbook
 Set wks = wkb.Sheets(1)
 With wks
  .Activate
  max_row = .Cells(.Rows.Count, "a").End(xlUp).Row
  If max_row = 1 Then
   .Cells(1, 1).value = "SenderEmailAddress"
   .Cells(1, 2).value = "SenderName"
  End If
  .Cells(max_row + 1, 1).value = oMail.SenderEmailAddress
  .Cells(max_row + 1, 2).value = oMail.SenderName
 End With
 wkb.Close True
 XLApp.Quit
 Set wkb = Nothing
 Set wks = Nothing
 Set XLApp = Nothing
End Sub

Private Function FileExists(FilePath As String) As Boolean
On Error GoTo Blad
 FileExists = Len(Dir(FilePath, vbDirectory Or vbHidden Or vbSystem)) > 0
Exit Function
Blad:
FileExists = False
End Function
)

(c) Shon Oskar – www.VBATools.pl

Wszelkie prawa zastrzeżone. Żadna część ani całość tego artykułu nie może być powielana ani publikowana bez zgody autora.

 

Jak podpinamy jako reguła? Po osadzeniu kodu w module VBA zaznaczamy pocztę przychodząca i akceptujemy komunikat o akceptacji wszystkich przychodzących wiadomości. Reszta wg poniższego ekranu:

OL_Regula_zapis_adresow_do_Excela

(c) Shon Oskar – www.VBATools.pl

Wszelkie prawa zastrzeżone. Żadna część ani całość tego artykułu nie może być powielana ani publikowana bez zgody autora.

:, , , , ,

2 Comments for this entry

  • Roman

    Witam,
    podczas uruchamiania makra wyskakuje błąd: “Variable not defined” i zaznacza xlUp w wierszu:

    max_row = .Cells(.Rows.Count, “a”).End(xlUp).Row

    Pozdrawiam

    • vbatools

      Należy w referencjach dodać kontrolkę Excela, albo zmienić parametr xlup na wartość -4162
      Parametry takie można odszukać w bibliotece developera [F2]

Leave a Reply

Recently Active Members

Profile picture of vbatools
Profile picture of Karol Stilger
Profile picture of Anorak
Profile picture of marcinmachalowski
Profile picture of Joanna Subik
Profile picture of programistaaccess
Profile picture of piotrpawlik
Profile picture of Emil Wasilewski
Profile picture of kicekpicek
Profile picture of coldfusion
Profile picture of Gosia Borzęcka
Profile picture of lukaszch
Profile picture of itadministracja
Profile picture of farbenia
Profile picture of Łukasz Kałużny
Profile picture of kabzinski
Profile picture of rtynski
Profile picture of leszekbetlinski
Profile picture of Iv
Profile picture of Justyna Spychała