ฉันได้ทำโพรซีเดอร์ VBAเพื่อสร้างข้อความ Outlookแล้ว ผลลัพธ์จะเหมือนกัน แต่ Outlook และ Excel จะไม่ถูกบล็อกเมื่อคุณต้องการส่ง Active Workbook คุณสามารถใส่ปุ่มบนแถบเครื่องมือด่วนและเรียกขั้นตอนนี้จากโมดูลโหลดโดยอัตโนมัติจากXLSTART
Sub SendActiveWorkbook()
'Create Outlook Message and add Active Workbook file to it
Dim temp_file_full_name As String
Dim folder As String
Dim base As String 'File name without extension
Dim ext As String
'Create temp copy of ActiveWorkbook
With ActiveWorkbook
folder = Environ$("temp") & "\"
'Workbook name
base = .Name
'If workbook did not saved on disk, it does not have extension
If InStr(base, ".") > 0 Then
ext = Split(base, ".")(UBound(Split(base, ".")))
base = left(base, Len(base) - Len(ext) - 1)
Else
Select Case .FileFormat
Case xlExcel8: ext = "xls"
Case xlOpenXMLWorkbook: ext = "xlsx"
Case xlOpenXMLWorkbookMacroEnabled: ext = "xlsm"
Case xlExcel12: ext = "xlsb"
Case Else: ext = "xlsx"
End Select
End If
temp_file_full_name = folder & base & "." & ext
.SaveCopyAs temp_file_full_name
End With
'Create Outlook message with attachment of temp file and display it
With CreateObject("Outlook.Application").CreateItem(0)
.Subject = base
.Attachments.Add temp_file_full_name
.Display
End With
'Delete temp file. We don't need it anymore
Kill temp_file_full_name
End Sub