Note: The other languages of the website are Google-translated. Back to English

จะส่งออกอีเมลจากหลายโฟลเดอร์ / โฟลเดอร์ย่อยไปยัง Excel ใน Outlook ได้อย่างไร

เมื่อส่งออกโฟลเดอร์ด้วยวิซาร์ดการนำเข้าและส่งออกใน Outlook จะไม่รองรับไฟล์ รวมโฟลเดอร์ย่อย ถ้าคุณส่งออกโฟลเดอร์เป็นไฟล์ CSV อย่างไรก็ตามจะค่อนข้างใช้เวลานานและน่าเบื่อในการส่งออกแต่ละโฟลเดอร์เป็นไฟล์ CSV จากนั้นแปลงเป็นสมุดงาน Excel ด้วยตนเอง บทความนี้จะแนะนำ VBA เพื่อส่งออกหลายโฟลเดอร์และโฟลเดอร์ย่อยไปยังสมุดงาน Excel ได้อย่างสะดวกสบาย

ส่งออกอีเมลหลายฉบับจากหลายโฟลเดอร์ / โฟลเดอร์ย่อยไปยัง Excel ด้วย VBA

แท็บ Office - เปิดใช้งานการแก้ไขและเรียกดูแบบแท็บใน Office และทำให้การทำงานง่ายขึ้นมาก ...
Kutools สำหรับ Outlook - นำ 100 คุณลักษณะขั้นสูงที่มีประสิทธิภาพมาสู่ Microsoft Outlook
  • CC อัตโนมัติ / BCC ตามกฎเมื่อส่งอีเมล ส่งต่ออัตโนมัติ อีเมลหลายฉบับตามกฎ ตอบอัตโนมัติ ไม่มีเซิร์ฟเวอร์แลกเปลี่ยนและคุณสมบัติอัตโนมัติอื่น ๆ ...
  • คำเตือน BCC - แสดงข้อความเมื่อคุณพยายามตอบกลับทั้งหมดหากที่อยู่อีเมลของคุณอยู่ในรายการ BCC เตือนเมื่อไม่มีไฟล์แนบและคุณสมบัติการเตือนอื่น ๆ ...
  • ตอบกลับ (ทั้งหมด) พร้อมไฟล์แนบทั้งหมด ในการสนทนาทางไปรษณีย์ ตอบอีเมลหลายฉบับพร้อมกัน เพิ่มคำทักทายอัตโนมัติ เมื่อตอบกลับ; เพิ่มวันที่และเวลาในหัวเรื่องโดยอัตโนมัติ ...
  • เครื่องมือแนบ: ถอดอัตโนมัติ, บีบอัดทั้งหมด, เปลี่ยนชื่อทั้งหมด, บันทึกอัตโนมัติทั้งหมด ... รายงานด่วน, นับเมลที่เลือก, ลบอีเมลและรายชื่อที่ซ้ำกัน ...
  • คุณสมบัติขั้นสูงมากกว่า 100 รายการจะ แก้ปัญหาส่วนใหญ่ของคุณ ใน Outlook 2021 - 2010 หรือ Office 365 ฟีเจอร์เต็มรูปแบบ ทดลองใช้ฟรี 60 วัน

ลูกศรสีฟ้าฟองขวา ส่งออกอีเมลหลายฉบับจากหลายโฟลเดอร์ / โฟลเดอร์ย่อยไปยัง Excel ด้วย VBA

โปรดทำตามขั้นตอนด้านล่างเพื่อส่งออกอีเมลจากหลายโฟลเดอร์หรือโฟลเดอร์ย่อยไปยังสมุดงาน Excel ด้วย VBA ใน Outlook

1 กด อื่น ๆ + F11 ปุ่มเพื่อเปิดหน้าต่าง Microsoft Visual Basic for Applications

2 คลิก สิ่งที่ใส่เข้าไป > โมดูลจากนั้นวางโค้ด VBA ด้านล่างลงในหน้าต่างโมดูลใหม่

VBA: ส่งออกอีเมลจากหลายโฟลเดอร์และโฟลเดอร์ย่อยไปยัง 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. โปรดปรับรหัส VBA ด้านบนตามที่คุณต้องการ

(1) แทนที่ ปลายทาง_folder_path ในรหัสด้านบนพร้อมกับเส้นทางโฟลเดอร์ของโฟลเดอร์ปลายทางคุณจะบันทึกเวิร์กบุ๊กที่ส่งออกเช่น C: \ Users \ DT168 \ Documents \ TEST.
(2) แทนที่ your_email_accouny \ folder \ subfolder_1 และ your_email_accouny \ folder \ subfolder_2 ในโค้ดด้านบนด้วยเส้นทางโฟลเดอร์ของโฟลเดอร์ย่อยใน Outlook เช่น เคลลี่ @extendoffice.com \ Inbox \ A และ เคลลี่ @extendoffice.com \ Inbox \ B

4 กด F5 หรือคลิกปุ่ม วิ่ง เพื่อเรียกใช้ VBA นี้ แล้วคลิก OK ในกล่องโต้ตอบส่งออกโฟลเดอร์ Outlook ไปยัง Excel ดูภาพหน้าจอ:

และตอนนี้อีเมลจากโฟลเดอร์ย่อยหรือโฟลเดอร์ที่ระบุทั้งหมดในโค้ด VBA ด้านบนจะถูกส่งออกและบันทึกลงในสมุดงาน Excel


ลูกศรสีฟ้าฟองขวาบทความที่เกี่ยวข้อง


Kutools สำหรับ Outlook - นำคุณลักษณะขั้นสูง 100 รายการมาสู่ Outlook และทำให้การทำงานง่ายขึ้นมาก

  • CC อัตโนมัติ / BCC ตามกฎเมื่อส่งอีเมล ส่งต่ออัตโนมัติ อีเมลหลายฉบับโดยกำหนดเอง ตอบอัตโนมัติ ไม่มีเซิร์ฟเวอร์แลกเปลี่ยนและคุณสมบัติอัตโนมัติอื่น ๆ ...
  • คำเตือน BCC - แสดงข้อความเมื่อคุณพยายามตอบกลับทั้งหมด หากที่อยู่อีเมลของคุณอยู่ในรายการ BCC; เตือนเมื่อไม่มีไฟล์แนบและคุณสมบัติการเตือนอื่น ๆ ...
  • ตอบกลับ (ทั้งหมด) พร้อมไฟล์แนบทั้งหมดในการสนทนาทางไปรษณีย์; ตอบกลับอีเมลจำนวนมาก ในไม่กี่วินาที เพิ่มคำทักทายอัตโนมัติ เมื่อตอบกลับ; เพิ่มวันที่ในหัวเรื่อง ...
  • เครื่องมือแนบ: จัดการไฟล์แนบทั้งหมดในอีเมลทั้งหมด ถอดอัตโนมัติ, บีบอัดทั้งหมด, เปลี่ยนชื่อทั้งหมด, บันทึกทั้งหมด ... รายงานด่วน, นับอีเมลที่เลือก...
  • อีเมลขยะที่มีประสิทธิภาพ ตามธรรมเนียม; ลบอีเมลและผู้ติดต่อที่ซ้ำกัน... ช่วยให้คุณทำงานได้อย่างชาญฉลาดขึ้นเร็วขึ้นและดีขึ้นใน Outlook
shot kutools outlook แท็บ kutools 1180x121
shot kutools Outlook kutools plus แท็บ 1180x121
 
จัดเรียงความคิดเห็นโดย
ความคิดเห็น (10)
ยังไม่มีการให้คะแนน เป็นคนแรกที่ให้คะแนน!
ความคิดเห็นนี้ถูกย่อให้เล็กสุดโดยผู้ดำเนินรายการบนเว็บไซต์
ฉันจะทำให้สิ่งนี้เรียกซ้ำโดยอัตโนมัติในโฟลเดอร์ย่อยได้อย่างไร
ความคิดเห็นนี้ถูกย่อให้เล็กสุดโดยผู้ดำเนินรายการบนเว็บไซต์
สวัสดีที่รัก ทุกอย่างทำงานได้ดี ขอบคุณมาก แต่เนื้อหาไม่ได้ถูกส่งออก ฉันจะส่งออกเนื้อหาอีเมลด้วยได้อย่างไร ไฟล์ excel มีเพียง (หัวเรื่อง ได้รับแล้ว และผู้ส่ง) หากคุณสามารถอัปเดตฉันด้วยได้ มันจะแก้ปัญหาใหญ่ได้ ในธุรกิจของฉัน ขอบคุณมากอีกครั้ง
ความคิดเห็นนี้ถูกย่อให้เล็กสุดโดยผู้ดำเนินรายการบนเว็บไซต์
สวัสดี มอนทาเซอร์
สคริปต์ VBA ทำงานโดยยึดตามคุณลักษณะการส่งออกของ Outlook ซึ่งไม่สนับสนุนการส่งออกเนื้อหาข้อความเมื่อส่งออกอีเมลจำนวนมากจากโฟลเดอร์จดหมาย ดังนั้นสคริปต์ VBA นี้จึงไม่สามารถส่งออกเนื้อหาข้อความได้เช่นกัน
ความคิดเห็นนี้ถูกย่อให้เล็กสุดโดยผู้ดำเนินรายการบนเว็บไซต์
ใช้งานได้ดี แต่มีวิธีเพิ่มข้อมูลสำหรับไม่เพียง 4 ฟิลด์ด้านบน แต่ Outlook ที่ส่งออกไปยัง PST ให้ทั้งหมดหรือไม่ หัวเรื่อง จาก: (ชื่อ) จาก: (ที่อยู่) จาก: (ชนิด) ถึง: (ชื่อ) ถึง: (ที่อยู่) ถึง: (ชนิด) cc: (ชื่อ) cc: (ที่อยู่) cc: (ชนิด) สำเนาถึง: ( ชื่อ) BCC: (ที่อยู่) BCC: (ประเภท) ข้อมูลการเรียกเก็บเงิน หมวดหมู่ ความสำคัญ ความไวของไมล์สะสม

ฉันพยายามเพิ่ม "ความสำคัญ" และใช้งานได้ แต่ฉันจะขอบคุณถ้ามีคนสามารถให้รหัสสำหรับฟิลด์อื่น ๆ ขอบคุณ!!
ด้วย excWks
.Cells(1, 1) = "หัวเรื่อง"
.Cells(1, 2) = "ได้รับ"
.Cells(1, 3) = "ผู้ส่ง"
.Cells(1, 4) = "ร่างกาย"
.Cells(1, 5) = "ความสำคัญ"
จบด้วย
intRow = 2
สำหรับแต่ละ olkMsg ใน olkFld.Items
'ส่งออกเฉพาะข้อความ ไม่ใช่ใบเสร็จหรือคำขอนัดหมาย ฯลฯ
ถ้า olkMsg.Class = olMail แล้ว
'เพิ่มแถวสำหรับแต่ละฟิลด์ในข้อความที่คุณต้องการส่งออก
excWks.Cells(intRow, 1) = olkMsg.Subject
excWks.Cells(intRow, 2) = olkMsg.ReceivedTime
excWks.Cells (intRow, 3) = GetSMTPAddress (olkMsg, intVersion)
excWks.Cells(intRow, 4) = olkMsg.Body
excWks.Cells(intRow, 5) = olkMsg.Importance
ความคิดเห็นนี้ถูกย่อให้เล็กสุดโดยผู้ดำเนินรายการบนเว็บไซต์
สวัสดี โปรดตรวจสอบรหัสด้านล่างตามความต้องการของคุณ:
Const MACRO_NAME = "ส่งออกโฟลเดอร์ Outlook ไปยัง Excel"

ย่อยส่งออกหลัก ()

ExportToExcel "destination_folder_path\A.xlsx", "your_email_accounty\folder\subfolder_1"

ExportToExcel "destination_folder_path\B.xlsx", "your_email_accounty\folder\subfolder_2"

MsgBox "ดำเนินการเสร็จสิ้น", vbInformation + vbOKOnly, MACRO_NAME

ย่อยสิ้นสุด

ย่อย ExportToExcel (strFilename As String, strFolderPath As String)

Dim olkMsg เป็นวัตถุ

Dim olkFld เป็นวัตถุ

Dim excApp เป็นวัตถุ

Dim excWkb เป็นวัตถุ

Dim excWks เป็นวัตถุ

หรี่ intRow เป็นจำนวนเต็ม

Dim intVersion เป็นจำนวนเต็ม

ถ้า strFilename <> "" แล้ว

ถ้า strFolderPath <> "" แล้ว

ตั้งค่า olkFld = OpenOutlookFolder(strFolderPath)

ถ้า TypeName(olkFld) <> "Nothing" แล้ว

intVersion = GetOutlookVersion()

ตั้งค่า excApp = CreateObject("Excel.Application")

ตั้งค่า excWkb = excApp.Workbooks.Add()

ตั้งค่า excWks = excWkb.ActiveSheet

'เขียนส่วนหัวของคอลัมน์ Excel

ด้วย excWks

.Cells(1, 1) = "หัวเรื่อง"

.Cells(1, 2) = "ร่างกาย"

.Cells(1, 3) = "ได้รับ"

.Cells(1, 4) = "จาก: (ชื่อ)"

.Cells(1, 5) = "จาก: (ที่อยู่)"

.Cells(1, 6) = "จาก: (ประเภท)"

.Cells(1, 7) = "ถึง: (ชื่อ)"

.Cells(1, 8) = "ถึง: (ที่อยู่)"

.Cells(1, 9) = "ถึง: (ประเภท)"

.Cells(1, 10) = "CC: (ชื่อ)"

.Cells(1, 11) = "CC: (ที่อยู่)"

.Cells(1, 12) = "CC: (ประเภท)"

.Cells(1, 13) = "BCC: (ชื่อ)"

.Cells(1, 14) = "BCC: (ที่อยู่)"

.Cells(1, 15) = "BCC: (ประเภท)"

.Cells(1, 16) = "ข้อมูลการเรียกเก็บเงิน"

.Cells(1, 17) = "หมวดหมู่"

.Cells(1, 18) = "ความสำคัญ"

.Cells(1, 19) = "ระยะทาง"

.Cells(1, 20) = "ความไว"

จบด้วย

intRow = 2

สำหรับแต่ละ olkMsg ใน olkFld.Items

'ส่งออกเฉพาะข้อความ ไม่ใช่ใบเสร็จหรือคำขอนัดหมาย ฯลฯ

ถ้า olkMsg.Class = olMail แล้ว

'เพิ่มแถวสำหรับแต่ละฟิลด์ในข้อความที่คุณต้องการส่งออก

excWks.Cells(intRow, 1) = olkMsg.Subject

excWks.Cells(intRow, 2) = olkMsg.Body

excWks.Cells(intRow, 3) = olkMsg.ReceivedTime

excWks.Cells(intRow, 4) = olkMsg.SenderName

excWks.Cells(intRow, 5) = GetAddress(olkMsg.Sender, intVersion)

excWks.Cells (intRow, 6) = olkMsg.Sender.Type

excWks.Cells(intRow, 7) = GetRecipientsName(olkMsg, 1, 1, intVersion)

excWks.Cells(intRow, 8) = GetRecipientsName(olkMsg, 1, 2, intVersion)

excWks.Cells(intRow, 9) = GetRecipientsName(olkMsg, 1, 3, intVersion)

excWks.Cells(intRow, 10) = GetRecipientsName(olkMsg, 2, 1, intVersion)

excWks.Cells(intRow, 11) = GetRecipientsName(olkMsg, 2, 2, intVersion)

excWks.Cells(intRow, 12) = GetRecipientsName(olkMsg, 2, 3, intVersion)

excWks.Cells(intRow, 13) = GetRecipientsName(olkMsg, 3, 1, intVersion)

excWks.Cells(intRow, 14) = GetRecipientsName(olkMsg, 3, 2, intVersion)

excWks.Cells(intRow, 15) = GetRecipientsName(olkMsg, 3, 3, intVersion)

excWks.Cells (intRow, 16) = olkMsg.BillingInformation

excWks.Cells(intRow, 17) = olkMsg.Categories

excWks.Cells(intRow, 18) = olkMsg.Importance

excWks.Cells(intRow, 19) = olkMsg.Mileage

excWks.Cells(intRow, 20) = olkMsg.ความไว

intRow = intRow + 1

End If

ต่อไป

ตั้งค่า olkMsg = Nothing

excWkb.SaveAs strชื่อไฟล์

excWkb.ปิด

อื่น

MsgBox "ไม่มีโฟลเดอร์ '" & strFolderPath & "' ใน Outlook", vbCritical + vbOKOnly, MACRO_NAME

End If

อื่น

MsgBox "เส้นทางของโฟลเดอร์ว่างเปล่า", vbCritical + vbOKOnly, MACRO_NAME

End If

อื่น

MsgBox "ชื่อไฟล์ว่างเปล่า", vbCritical + vbOKOnly, MACRO_NAME

End If



ตั้งค่า olkMsg = Nothing

ตั้งค่า olkFld = Nothing

ตั้งค่า excWks = Nothing

ตั้งค่า excWkb = Nothing

ตั้งค่า excApp = Nothing

ย่อยสิ้นสุด



ฟังก์ชันสาธารณะ OpenOutlookFolder(strFolderPath As String) เป็น Outlook.MAPIFolder

Dim arrFolders เป็นตัวแปร

Dim varFolder เป็น Variant

Dim bolBeyondRoot เป็นบูลีน

เกี่ยวกับข้อผิดพลาดต่อไป

ถ้า strFolderPath = "" แล้ว

ตั้งค่า OpenOutlookFolder = Nothing

อื่น

ทำในขณะที่เหลือ (strFolderPath, 1) = "\"

strFolderPath = ขวา(strFolderPath, Len(strFolderPath) - 1)

ห่วง

arrFolders = แยก (strFolderPath, "\")

สำหรับแต่ละ varFolder ใน arrFolders

เลือกกรณี bolBeyondRoot

กรณีเท็จ

ตั้งค่า OpenOutlookFolder = Outlook.Session.Folders (varFolder)

bolBeyondRoot = จริง

เคสทรู

ตั้งค่า OpenOutlookFolder = OpenOutlookFolder.Folders (varFolder)

สิ้นสุดการเลือก

ถ้า Err.Number <> 0 แล้ว

ตั้งค่า OpenOutlookFolder = Nothing

ออกสำหรับ

End If

ต่อไป

End If

เมื่อเกิดข้อผิดพลาด GoTo 0

ฟังก์ชั่นเอนด์



ฟังก์ชัน GetOutlookVersion() เป็นจำนวนเต็ม

Dim arrVer เป็นตัวแปร

arrVer = แยก (Outlook.Version, ".")

GetOutlookVersion = arrVer(0)

ฟังก์ชั่นเอนด์



ฟังก์ชัน SMTPEX (รายการเป็นรายการที่อยู่) เป็นสตริง

Dim olkPA เป็น Outlook.PropertyAccessor

เกี่ยวกับข้อผิดพลาดต่อไป

ตั้งค่า olkPA = Entry.PropertyAccessor

SMTPEX = olkPA.GetProperty("http://schema.microsoft.com/mapi/proptag/0x5D01001E")

เมื่อเกิดข้อผิดพลาด GoTo 0

ตั้งค่า olkPA = Nothing

ฟังก์ชั่นเอนด์



ฟังก์ชัน GetAddress (รายการเป็น AddressEntry, intOutlookVersion เป็นจำนวนเต็ม) เป็นสตริง

Dim olkEnt เป็นวัตถุ

เกี่ยวกับข้อผิดพลาดต่อไป

เลือกกรณี intOutlookVersion

กรณี < 14

ถ้า Entry.Type = "EX" แล้ว

GetAddress = SMTPEX (รายการ)

อื่น

GetAddress = รายการที่อยู่

End If

กรณีอื่น

ถ้า Entry.AddressEntryUserType = olExchangeUserAddressEntry แล้ว

ตั้งค่า olkEnt = Entry.GetExchangeUser

GetAddress = olkEnt.PrimarySmtpAddress

อื่น

GetAddress = รายการที่อยู่

End If

สิ้นสุดการเลือก

เมื่อเกิดข้อผิดพลาด GoTo 0

ตั้งค่า olkEnt = Nothing

ฟังก์ชั่นเอนด์



ฟังก์ชัน GetRecipientsName(Item As MailItem, rcpType As Integer, Ret As Integer, intOutlookVersion As Integer) เป็นสตริง

Dim xRcp เป็นผู้รับ

Dim xNames เป็นสตริง

xNames = ""

สำหรับแต่ละ xRcp ใน Item.Recipients

ถ้า xRcp.Type = rcpType แล้ว

ถ้า Ret = 1 แล้ว

ถ้า xNames = "" แล้ว

xNames = xRcp.Name

อื่น

xNames = xNames & ";" & xRcp.Name

End If

ElseIf Ret = 2 แล้ว

ถ้า xNames = "" แล้ว

xNames = GetAddress(xRcp.AddressEntry, intOutlookVersion)

อื่น

xNames = xNames & ";" & GetAddress(xRcp.AddressEntry, intOutlookVersion)

End If

ElseIf Ret = 3 แล้ว

ถ้า xNames = "" แล้ว

xNames = xRcp.AddressEntry.Type

อื่น

xNames = xNames & "; " & xRcp.AddressEntry.Type

End If

End If

ElseIf xRcp.Type = rcpType จากนั้น

ถ้า Ret = 1 แล้ว

ถ้า xNames = "" แล้ว

xNames = xRcp.Name

อื่น

xNames = xNames & ";" & xRcp.Name

End If

ElseIf Ret = 2 แล้ว

ถ้า xNames = "" แล้ว

xNames = GetAddress(xRcp.AddressEntry, intOutlookVersion)

อื่น

xNames = xNames & ";" & GetAddress(xRcp.AddressEntry, intOutlookVersion)

End If

ElseIf Ret = 3 แล้ว

ถ้า xNames = "" แล้ว

xNames = xRcp.AddressEntry.Type

อื่น

xNames = xNames & "; " & xRcp.AddressEntry.Type

End If

End If

ElseIf xRcp.Type = rcpType จากนั้น

ถ้า Ret = 1 แล้ว

ถ้า xNames = "" แล้ว

xNames = xRcp.Name

อื่น

xNames = xNames & ";" & xRcp.Name

End If

ElseIf Ret = 2 แล้ว

ถ้า xNames = "" แล้ว

xNames = GetAddress(xRcp.AddressEntry, intOutlookVersion)

อื่น

xNames = xNames & ";" & GetAddress(xRcp.AddressEntry, intOutlookVersion)

End If

ElseIf Ret = 3 แล้ว

ถ้า xNames = "" แล้ว

xNames = xRcp.AddressEntry.Type

อื่น

xNames = xNames & "; " & xRcp.AddressEntry.Type

End If

End If

End If

ต่อไป

GetRecipientsName = xชื่อ

ฟังก์ชั่นเอนด์




หวังว่านี่จะใช้งานได้สำหรับคุณ
อแมนดา
ความคิดเห็นนี้ถูกย่อให้เล็กสุดโดยผู้ดำเนินรายการบนเว็บไซต์
ในย่อย ExporttoExcel คุณสามารถเพิ่ม body

'เขียนส่วนหัวของคอลัมน์ Excel
ด้วย excWks
.Cells(1, 1) = "หัวเรื่อง"
.Cells(1, 2) = "ได้รับ"
.Cells(1, 3) = "ผู้ส่ง"
.Cells(1, 4) = "ร่างกาย"
จบด้วย
intRow = 2
สำหรับแต่ละ olkMsg ใน olkFld.Items
'ส่งออกเฉพาะข้อความ ไม่ใช่ใบเสร็จหรือคำขอนัดหมาย ฯลฯ
ถ้า olkMsg.Class = olMail แล้ว
'เพิ่มแถวสำหรับแต่ละฟิลด์ในข้อความที่คุณต้องการส่งออก
excWks.Cells(intRow, 1) = olkMsg.Subject
excWks.Cells(intRow, 2) = olkMsg.ReceivedTime
excWks.Cells (intRow, 3) = GetSMTPAddress (olkMsg, intVersion)
excWks.Cells(intRow, 4) = olkMsg.Body
intRow = intRow + 1
ความคิดเห็นนี้ถูกย่อให้เล็กสุดโดยผู้ดำเนินรายการบนเว็บไซต์
สวัสดี หวังว่าใครบางคนสามารถช่วยฉันได้ ฉันแทบไม่มีความรู้เกี่ยวกับ VB แต่ได้จัดการเพื่อให้สคริปต์นี้ทำงานให้ฉันได้

อย่างไรก็ตาม ฉันมีโฟลเดอร์และโฟลเดอร์ย่อยประมาณ 1500 โฟลเดอร์ภายใต้กล่องจดหมายของฉันทั้งหมด และฉันต้องการสคริปต์ง่ายๆ ในการส่งออกที่อยู่อีเมลทั้งหมดที่ฉันได้ส่งไปพร้อมหัวเรื่องและวันที่ในคอลัมน์แยกต่างหากใน Excel

ฉันค้นหามาหลายวันแล้วและลองใช้ไซต์ต่างๆ มากมาย แต่ไม่สามารถรับโค้ดใด ๆ ที่จะใช้งานได้นอกจากไซต์นี้


สิ่งที่ฉันขอเป็นไปได้หรือไม่? ถ้าเป็นเช่นนั้นจะมีใครใจดีและฉลาดพอที่จะช่วยฉันเกี่ยวกับสคริปต์ที่ฉันต้องการหรือไม่
ฉันคิดว่ามันเกี่ยวข้องกับส่วนนี้:


ย่อยส่งออกหลัก ()

ExportToExcel "destination_folder_path\A.xlsx", "your_email_accounty\folder\subfolder_1"

ExportToExcel "destination_folder_path\B.xlsx", "your_email_accounty\folder\subfolder_2"

MsgBox "ดำเนินการเสร็จสิ้น", vbInformation + vbOKOnly, MACRO_NAME

ย่อยสิ้นสุด


ขอบคุณล่วงหน้า
ความคิดเห็นนี้ถูกย่อให้เล็กสุดโดยผู้ดำเนินรายการบนเว็บไซต์
สวัสดี
ฉันเพิ่งรันมาโครนี้ซึ่งทำงานได้ดี
ฉันเข้าใจว่าในนิพจน์
excWks.Cells(intRow, 1) = olkMsg.Subject
excWks.Cells(intRow, 2) = olkMsg.ReceivedTime
excWks.Cells (intRow, 3) = GetSMTPAddress (olkMsg, intVersion)

olkMsg.* และ GetSMTPAddress(olkMsg, intVersion) ดึงข้อมูลออกจาก Outlook

อาร์กิวเมนต์ที่จะใช้เพื่อรับที่อยู่ที่ส่งจดหมายคืออะไร?

เมื่อใช้ตัวช่วยสร้างการส่งออกของ Outlook เป็นไปได้ที่จะส่งออกที่อยู่นี้ ดังนั้นฉันคิดว่าจะสามารถทำได้ผ่านมาโครนี้ (ด้วยการแก้ไขบางอย่าง)
ใครสามารถช่วย?

ความนับถือ
ความคิดเห็นนี้ถูกย่อให้เล็กสุดโดยผู้ดำเนินรายการบนเว็บไซต์
ฉันเรียกใช้มาโครนี้ แต่ยังคงได้รับข้อผิดพลาดในการคอมไพล์:

ผู้ใช้=ไม่ได้กำหนดประเภทที่กำหนด

ออนไลน์ 62 " ฟังก์ชั่นสาธารณะ OpenOutlookFolder(strFolderPath As String) As Outlook.MAPIFolder "

ฉันได้ระบุเส้นทางแล้วดังนี้:

ExportToExcel "C:\Users\kudus\Documents\MailExportTest\f1\A.xlsx", "myname@mydomain.com\Inbox\Black Hat Webcast"
ExportToExcel "C:\Users\\Documekudus\Documents\MailExportTest\f2\B.xlsx", "myname@mydomain.com\Inbox\CPD\Kaplan Training"

ฉันใช้ Outlook 2016 ในกรณีที่จำเป็น
ความคิดเห็นนี้ถูกย่อให้เล็กสุดโดยผู้ดำเนินรายการบนเว็บไซต์
ฉันซ่อมมัน. จากหน้าต่าง Visual Basic ไปที่ Tools Reference - และกล่องสำหรับ "Microsoft Outlook 16.0 Object Library"

มีความคิดเห็นยังไม่มีการโพสต์ที่นี่
แสดงความคิดเห็นของคุณ
โพสต์ในฐานะแขก
×
ให้คะแนนโพสต์นี้:
0   ตัวอักษร
สถานที่แนะนำ

ช่องทางอื่นๆ

ลิขสิทธิ์© 2009 - wwwextendoffice.com | สงวนลิขสิทธิ์. ขับเคลื่อนโดย ExtendOffice. | แผนผังเว็บไซต์
Microsoft และโลโก้ Office เป็นเครื่องหมายการค้าหรือเครื่องหมายการค้าจดทะเบียนของ Microsoft Corporation ในสหรัฐอเมริกาและ / หรือประเทศอื่น ๆ
ได้รับการปกป้องโดย Sectigo SSL