Outlook'ta excel'e birden çok klasörden / alt klasörden e-postalar nasıl dışa aktarılır?
Outlook'ta Alma ve Verme sihirbazıyla bir klasörü dışa aktarırken, Alt klasörler dahil Klasörü CSV dosyasına dışa aktarırsanız seçenek. Ancak, her klasörü CSV dosyasına aktarmak ve ardından manuel olarak Excel çalışma kitabına dönüştürmek oldukça zaman alıcı ve yorucu olacaktır. Burada, bu makale, birden çok klasörü ve alt klasörü Excel çalışma kitaplarına kolaylıkla dışa aktarmak için bir VBA tanıtacaktır.
VBA ile birden çok klasörden / alt klasörden birden çok e-postayı Excel'e aktarın
- Otomatik CC / BCC e-posta gönderirken kurallara göre; Otomatik İleri Kurallara göre Birden Fazla E-posta; Otomatik cevap değişim sunucusu olmadan ve daha fazla otomatik özellik ...
- BCC Uyarısı - posta adresiniz BCC listesindeyse tümünü yanıtlamaya çalıştığınızda mesajı gösterin; Eksik Olduğunda Hatırlatve daha fazlası özellikleri hatırlat ...
- Tüm Eklerle Yanıtla (Hepsi) posta görüşmesinde; Birçok E-postayı aynı anda yanıtlayın; Otomatik Karşılama Ekleme cevap verdiğinde; Konuya Otomatik Tarih ve Saat Ekle ...
- Ek Araçları: Otomatik Ayır, Tümünü Sıkıştır, Tümünü Yeniden Adlandır, Tümünü Otomatik Kaydet ... Hızlı rapor, Seçilen Postaları Say, Yinelenen Postaları ve Kişileri Kaldır ...
- 100'den fazla gelişmiş özellik problemlerinin çoğunu çöz Outlook 2021 - 2010 veya Office 365'te. Tam özellikler 60 günlük ücretsiz deneme.
VBA ile birden çok klasörden / alt klasörden birden çok e-postayı Excel'e aktarın
Outlook'ta VBA ile birden çok klasör veya alt klasördeki e-postaları Excel çalışma kitaplarına aktarmak için lütfen aşağıdaki adımları izleyin.
1. Basın Ara Toplam + F11 Microsoft Visual Basic for Applications penceresini açmak için tuşlar.
2. tık Ekle > modülve ardından yeni Modül penceresine VBA kodunun altına yapıştırın.
VBA: E-postaları birden çok klasör ve alt klasörden Excel'e aktarın
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. Lütfen yukarıdaki VBA kodunu ihtiyaç duyduğunuz şekilde ayarlayın.
(1) Değiştirin hedef_klasör_yolu hedef klasörün klasör yolu ile yukarıdaki kodda, dışa aktarılan çalışma kitaplarını, örneğin C: \ Kullanıcılar \ DT168 \ Belgeler \ TEST.
(2) Yukarıdaki kodda e-posta_accouny \ klasörünüz \ altklasör_1 ve e-posta_accouny \ klasörünüz \ altklasör_2 yerine Outlook'taki alt klasörlerin klasör yollarını, örneğin: Kelly @extendoffice.com \ Gelen Kutusu \ A ve Kelly @extendoffice.com \ Gelen Kutusu \ B
4. Tuşuna basın. F5 anahtarı veya tıklayın koşmak Bu VBA'yı çalıştırmak için düğmesine basın. Ve sonra tıklayın OK Outlook Klasörlerini Excel'e Aktar iletişim kutusunda açılır. Ekran görüntüsüne bakın:
Ve şimdi yukarıdaki VBA kodunda belirtilen tüm alt klasörlerden veya klasörlerden gelen e-postalar dışa aktarılır ve Excel çalışma kitaplarına kaydedilir.
İlgili Makaleler
E-postaları tarih aralığına göre Excel dosyasına veya Outlook'ta PST dosyasına aktarın
Outlook'taki tüm klasörlerin ve alt klasörlerin listesini dışa aktarın ve yazdırın
Outlook için Kutools - Outlook'a 100 Gelişmiş Özellik Getirir ve Çalışmayı Çok Daha Kolay Hale Getirir!
- Otomatik CC / BCC e-posta gönderirken kurallara göre; Otomatik İleri Özel olarak birden çok E-posta; Otomatik cevap değişim sunucusu olmadan ve daha fazla otomatik özellik ...
- BCC Uyarısı - tümünü yanıtlamaya çalıştığınızda mesaj göster posta adresiniz BCC listesindeyse; Eksik Olduğunda Hatırlatve daha fazlası özellikleri hatırlat ...
- Posta görüşmesindeki Tüm Eklerle Yanıtla (Tümü); Birçok E-postayı Yanıtla saniyeler içinde; Otomatik Karşılama Ekleme cevap verdiğinde; Konuya Tarih Ekle ...
- Ek Araçları: Tüm Postalardaki Tüm Ekleri Yönetin, Otomatik Ayır, Tümünü Sıkıştır, Tümünü Yeniden Adlandır, Tümünü Kaydet ... Hızlı Rapor, Seçili Postaları Say...
- Güçlü Önemsiz E-postalar özel olarak; Yinelenen Postaları ve Kişileri Kaldır... Outlook'ta daha akıllı, daha hızlı ve daha iyi yapmanızı sağlar.











