Jak wyeksportować wiadomości e-mail z wielu folderów / podfolderów, aby osiągnąć sukces w Outlooku?
Podczas eksportowania folderu za pomocą kreatora importu i eksportu w programie Outlook nie obsługuje on formatu Włączając podfoldery opcja, jeśli eksportujesz folder do pliku CSV. Jednak wyeksportowanie każdego folderu do pliku CSV, a następnie ręczne przekonwertowanie go do skoroszytu programu Excel będzie dość czasochłonne i żmudne. W tym artykule wprowadzimy VBA, aby szybko i łatwo eksportować wiele folderów i podfolderów do skoroszytów programu Excel.
Eksportuj wiele wiadomości e-mail z wielu folderów / podfolderów do programu Excel za pomocą VBA
- Automatyzuj wysyłanie e-maili za pomocą Auto CC / BCC, Auto Forward według zasad; wysłać Automatyczna odpowiedź (Poza biurem) bez konieczności korzystania z serwera wymiany...
- Otrzymuj przypomnienia takie jak Ostrzeżenie BCC podczas odpowiadania wszystkim, gdy jesteś na liście BCC, oraz Przypomnij o braku załączników za zapomniane załączniki...
- Popraw wydajność poczty e-mail dzięki Odpowiedz (wszystkim) z załącznikami, Automatyczne dodawanie pozdrowień lub daty i godziny do podpisu lub tematu, Odpowiedz na wiele e-maili...
- Usprawnij wysyłanie e-maili za pomocą Przypomnij sobie e-maile, Narzędzia załączników (Kompresuj wszystko, automatycznie zapisuj wszystko...), Usuń duplikaty, Szybki raport...
Eksportuj wiele wiadomości e-mail z wielu folderów / podfolderów do programu Excel za pomocą VBA
Wykonaj poniższe kroki, aby wyeksportować wiadomości e-mail z wielu folderów lub podfolderów do skoroszytów programu Excel za pomocą VBA w programie Outlook.
1. naciśnij inny + F11 klawisze, aby otworzyć okno Microsoft Visual Basic for Applications.
2. kliknij wstawka > Moduł, a następnie wklej poniższy kod VBA do nowego okna modułu.
VBA: Eksportuj wiadomości e-mail z wielu folderów i podfolderów do programu Excel
Const MACRO_NAME = "Export Outlook Folders to Excel"
Sub ExportMain()
ExportToExcel "destination_folder_path\A.xlsx", "your_email_accouny\folder\subfolder_1"
ExportToExcel "destination_folder_path\B.xlsx", "your_email_accouny\folder\subfolder_2"
MsgBox "Process complete.", vbInformation + vbOKOnly, MACRO_NAME
End Sub
Sub ExportToExcel(strFilename As String, strFolderPath As String)
Dim olkMsg As Object
Dim olkFld As Object
Dim excApp As Object
Dim excWkb As Object
Dim excWks As Object
Dim intRow As Integer
Dim intVersion As Integer
If strFilename <> "" Then
If strFolderPath <> "" Then
Set olkFld = OpenOutlookFolder(strFolderPath)
If TypeName(olkFld) <> "Nothing" Then
intVersion = GetOutlookVersion()
Set excApp = CreateObject("Excel.Application")
Set excWkb = excApp.Workbooks.Add()
Set excWks = excWkb.ActiveSheet
'Write Excel Column Headers
With excWks
.Cells(1, 1) = "Subject"
.Cells(1, 2) = "Received"
.Cells(1, 3) = "Sender"
End With
intRow = 2
For Each olkMsg In olkFld.Items
'Only export messages, not receipts or appointment requests, etc.
If olkMsg.Class = olMail Then
'Add a row for each field in the message you want to export
excWks.Cells(intRow, 1) = olkMsg.Subject
excWks.Cells(intRow, 2) = olkMsg.ReceivedTime
excWks.Cells(intRow, 3) = GetSMTPAddress(olkMsg, intVersion)
intRow = intRow + 1
End If
Next
Set olkMsg = Nothing
excWkb.SaveAs strFilename
excWkb.Close
Else
MsgBox "The folder '" & strFolderPath & "' does not exist in Outlook.", vbCritical + vbOKOnly, MACRO_NAME
End If
Else
MsgBox "The folder path was empty.", vbCritical + vbOKOnly, MACRO_NAME
End If
Else
MsgBox "The filename was empty.", vbCritical + vbOKOnly, MACRO_NAME
End If
Set olkMsg = Nothing
Set olkFld = Nothing
Set excWks = Nothing
Set excWkb = Nothing
Set excApp = Nothing
End Sub
Public Function OpenOutlookFolder(strFolderPath As String) As Outlook.MAPIFolder
Dim arrFolders As Variant
Dim varFolder As Variant
Dim bolBeyondRoot As Boolean
On Error Resume Next
If strFolderPath = "" Then
Set OpenOutlookFolder = Nothing
Else
Do While Left(strFolderPath, 1) = "\"
strFolderPath = Right(strFolderPath, Len(strFolderPath) - 1)
Loop
arrFolders = Split(strFolderPath, "\")
For Each varFolder In arrFolders
Select Case bolBeyondRoot
Case False
Set OpenOutlookFolder = Outlook.Session.Folders(varFolder)
bolBeyondRoot = True
Case True
Set OpenOutlookFolder = OpenOutlookFolder.Folders(varFolder)
End Select
If Err.Number <> 0 Then
Set OpenOutlookFolder = Nothing
Exit For
End If
Next
End If
On Error GoTo 0
End Function
Function GetSMTPAddress(Item As Outlook.MailItem, intOutlookVersion As Integer) As String
Dim olkSnd As Outlook.AddressEntry
Dim olkEnt As Object
On Error Resume Next
Select Case intOutlookVersion
Case Is < 14
If Item.SenderEmailType = "EX" Then
GetSMTPAddress = SMTPEX(Item)
Else
GetSMTPAddress = Item.SenderEmailAddress
End If
Case Else
Set olkSnd = Item.Sender
If olkSnd.AddressEntryUserType = olExchangeUserAddressEntry Then
Set olkEnt = olkSnd.GetExchangeUser
GetSMTPAddress = olkEnt.PrimarySmtpAddress
Else
GetSMTPAddress = Item.SenderEmailAddress
End If
End Select
On Error GoTo 0
Set olkPrp = Nothing
Set olkSnd = Nothing
Set olkEnt = Nothing
End Function
Function GetOutlookVersion() As Integer
Dim arrVer As Variant
arrVer = Split(Outlook.Version, ".")
GetOutlookVersion = arrVer(0)
End Function
Function SMTPEX(olkMsg As Outlook.MailItem) As String
Dim olkPA As Outlook.propertyAccessor
On Error Resume Next
Set olkPA = olkMsg.propertyAccessor
SMTPEX = olkPA.GetProperty("http://schemas.microsoft.com/mapi/proptag/0x5D01001E")
On Error GoTo 0
Set olkPA = Nothing
End Function
3. Dostosuj powyższy kod VBA według potrzeb.
(1) Wymień ścieżka_folderu_docelowego w powyższym kodzie ze ścieżką do folderu docelowego, w którym zapiszesz wyeksportowane skoroszyty, takie jak C: \ Users \ DT168 \ Documents \ TEST.
(2) Zastąp your_email_accouny \ folder \ subfolder_1 i your_email_accouny \ folder \ subfolder_2 w powyższym kodzie ścieżkami folderów podfolderów w programie Outlook, takimi jak \Skrzynka odbiorcza\A i \Skrzynka odbiorcza\B
4. wciśnij F5 lub kliknij run przycisk, aby uruchomić ten VBA. A następnie kliknij OK w wyskakującym oknie dialogowym Eksportuj foldery programu Outlook do programu Excel. Zobacz zrzut ekranu:
A teraz wiadomości e-mail ze wszystkich określonych podfolderów lub folderów w powyższym kodzie VBA są eksportowane i zapisywane w skoroszytach programu Excel.
Powiązane artykuły
Eksportuj wiadomości e-mail według zakresu dat do pliku Excel lub pliku PST w Outlooku
Wyeksportuj i wydrukuj listę wszystkich folderów i podfolderów w programie Outlook
Najlepsze narzędzia biurowe
Kutools dla programu Outlook - Ponad 100 zaawansowanych funkcji, które usprawnią Twoje perspektywy
🤖 Asystent poczty AI: Natychmiastowe profesjonalne e-maile z magią AI — genialne odpowiedzi jednym kliknięciem, doskonały ton, biegła znajomość wielu języków. Zmień e-mailing bez wysiłku! ...
📧 Automatyzacja poczty e-mail: Poza biurem (dostępne dla POP i IMAP) / Zaplanuj wysyłanie wiadomości e-mail / Automatyczne CC/BCC według reguł podczas wysyłania wiadomości e-mail / Automatyczne przewijanie (Zasady zaawansowane) / Automatyczne dodawanie powitania / Automatycznie dziel wiadomości e-mail od wielu odbiorców na pojedyncze wiadomości ...
📨 Zarządzanie e-mail: Łatwe przywoływanie e-maili / Blokuj oszukańcze wiadomości e-mail według tematów i innych / Usuń zduplikowane wiadomości e-mail / Wiecej opcji / Konsoliduj foldery ...
📁 Załączniki Pro: Zapisz zbiorczo / Odłącz partię / Kompresuj wsadowo / Automatyczne zapisywanie / Automatyczne odłączanie / Automatyczna kompresja ...
🌟 Magia interfejsu: 😊Więcej ładnych i fajnych emotikonów / Zwiększ produktywność programu Outlook dzięki widokom na kartach / Zminimalizuj program Outlook zamiast go zamykać ...
>> Cuda jednym kliknięciem: Odpowiedz wszystkim, dodając przychodzące załączniki / E-maile chroniące przed phishingiem / 🕘Pokaż strefę czasową nadawcy ...
👩🏼🤝👩🏻 Kontakty i kalendarz: Grupowe dodawanie kontaktów z wybranych e-maili / Podziel grupę kontaktów na pojedyncze grupy / Usuń przypomnienia o urodzinach ...
O Cechy 100 Poczekaj na eksplorację! Kliknij tutaj, aby dowiedzieć się więcej.