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

Làm cách nào để tự động in tệp đính kèm khi email đến trong Outlook?

Hướng dẫn này trình bày phương pháp kết hợp tập lệnh VBA và quy tắc Outlook để giúp bạn tự động in tệp đính kèm của một số email nhất định khi chúng đến trong Outlook.


Tự động in tệp đính kèm khi có một số email nhất định đến

Giả sử, bạn muốn tự động in các tệp đính kèm của email đến từ một người gửi nhất định. Bạn có thể làm như sau để hoàn thành công việc.

Bước 1: Tạo tập lệnh trong Outlook

Trước tiên, bạn cần tạo một tập lệnh VBA trong Outlook.

1. Khởi chạy Outlook của bạn, nhấn Khác + F11 các phím đồng thời để mở Microsoft Visual Basic cho các ứng dụng cửa sổ.

2. bên trong Microsoft Visual Basic cho các ứng dụng cửa sổ, nhấp đúp vào Project1 > Đối tượng Microsoft Outlook > ĐâyOutlookSession để mở ThisOutlookSession (Mã) cửa sổ, và sau đó sao chép mã sau vào cửa sổ mã này.

Mã VBA 1: Tự động in tệp đính kèm (tất cả các loại tệp đính kèm) khi có email

Sub AttachementAutoPrint(Item As Outlook.MailItem)
'Updated by Extendoffice 20230223
  Dim xFS As FileSystemObject
  Dim xTempFolder As String
  Dim xAtt As Attachment
  Dim xShell As Object
  Dim xFolder As Object, xFolderItem As Object
  Dim xFileName As String
  On Error GoTo xError
  If Item.Attachments.Count = 0 Then Exit Sub
  Set xFS = New FileSystemObject
  xTempFolder = xFS.GetSpecialFolder(TemporaryFolder)
  xTempFolder = xTempFolder & "\ATMP" & Format(Item.ReceivedTime, "yyyymmddhhmmss")
  If Not xFS.FolderExists(xTempFolder) Then
    MkDir (xTempFolder)
  End If
  Set xShell = CreateObject("Shell.Application")
  Set xFolder = xShell.NameSpace(0)
  For Each xAtt In Item.Attachments
    If IsEmbeddedAttachment(xAtt) = False Then
      xFileName = xTempFolder & "\" & xAtt.FileName
      xAtt.SaveAsFile (xFileName)
      Set xFolderItem = xFolder.ParseName(xFileName)
      xFolderItem.InvokeVerbEx ("print")
    End If
  Next xAtt
  Set xFS = Nothing
  Set xFolder = Nothing
  Set xFolderItem = Nothing
  Set xShell = Nothing
xError:
  If Err <> 0 Then
    MsgBox Err.Number & " - " & Err.Description, , "Kutools for Outlook"
    Err.Clear
  End If
Exit Sub
End Sub

Function IsEmbeddedAttachment(Attach As Attachment)
Dim xItem As MailItem
Dim xCid As String
Dim xID As String
Dim xHtml As String
On Error Resume Next
IsEmbeddedAttachment = False
Set xItem = Attach.Parent
If xItem.BodyFormat <> olFormatHTML Then Exit Function
xCid = ""
xCid = Attach.PropertyAccessor.GetProperty("http://schemas.microsoft.com/mapi/proptag/0x3712001F")
If xCid <> "" Then
    xHtml = xItem.HTMLBody
    xID = "cid:" & xCid
    If InStr(xHtml, xID) > 0 Then
        IsEmbeddedAttachment = True
    End If
End If
End Function

LƯU Ý Mã này hỗ trợ in tất cả các loại tệp đính kèm nhận được trong email. Nếu bạn chỉ muốn in loại tệp đính kèm được chỉ định, chẳng hạn như tệp pdf, vui lòng áp dụng mã VBA sau.

Mã VBA 2: Tự động in loại tệp đính kèm được chỉ định khi có email

Sub AttachementAutoPrint(Item As Outlook.MailItem)
'Updated by Extendoffice 20230223
  Dim xFS As FileSystemObject
  Dim xTempFolder As String
  Dim xAtt As Attachment
  Dim xShell As Object
  Dim xFolder As Object, xFolderItem As Object
  Dim xFileType As String, xFileName As String
  On Error GoTo xError
  If Item.Attachments.Count = 0 Then Exit Sub
  Set xFS = New FileSystemObject
  xTempFolder = xFS.GetSpecialFolder(TemporaryFolder)
  xTempFolder = xTempFolder & "\ATMP" & Format(Item.ReceivedTime, "yyyymmddhhmmss")
  If Not xFS.FolderExists(xTempFolder) Then
    MkDir (xTempFolder)
  End If
  Set xShell = CreateObject("Shell.Application")
  Set xFolder = xShell.NameSpace(0)
  For Each xAtt In Item.Attachments
    If IsEmbeddedAttachment(xAtt) = False Then
      xFileName = xAtt.FileName
      xFileType = LCase$(Right$(xFileName, VBA.Len(xFileName) - VBA.InStrRev(xFileName, ".")))
      xFileName = xTempFolder & "\" & xFileName
      Select Case xFileType
        Case "pdf"   'change "pdf" to the file extension you want to print
          xAtt.SaveAsFile (xFileName)
          Set xFolderItem = xFolder.ParseName(xFileName)
          xFolderItem.InvokeVerbEx ("print")
      End Select
    End If
  Next xAtt
  Set xFS = Nothing
  Set xFolder = Nothing
  Set xFolderItem = Nothing
  Set xShell = Nothing
xError:
  If Err <> 0 Then
    MsgBox Err.Number & " - " & Err.Description, , "Kutools for Outlook"
    Err.Clear
  End If
  Exit Sub
End Sub

Function IsEmbeddedAttachment(Attach As Attachment)
Dim xItem As MailItem
Dim xCid As String
Dim xID As String
Dim xHtml As String
On Error Resume Next
IsEmbeddedAttachment = False
Set xItem = Attach.Parent
If xItem.BodyFormat <> olFormatHTML Then Exit Function
xCid = ""
xCid = Attach.PropertyAccessor.GetProperty("http://schemas.microsoft.com/mapi/proptag/0x3712001F")
If xCid <> "" Then
    xHtml = xItem.HTMLBody
    xID = "cid:" & xCid
    If InStr(xHtml, xID) > 0 Then
        IsEmbeddedAttachment = True
    End If
End If
End Function

Chú ý:

1. Trước khi áp dụng mã VBA này để chỉ in tệp pdf trong các email đến, trước tiên bạn cần tải xuống và cài đặt Adobe Acrobat Reader và đặt nó làm trình đọc pdf mặc định trong máy tính của bạn.
2. Trong dòng Trường hợp "pdf", hãy thay đổi "pdf" vào phần mở rộng tệp bạn muốn in.

3. Tiếp tục và nhấp vào CÔNG CỤ > Tài liệu tham khảo. Trong cửa sổ bật lên Tài liệu tham khảo - Project1 hộp thoại, kiểm tra Thời gian chạy tập lệnh của Microsoft và sau đó bấm vào OK .

4. Lưu mã và nhấn Khác + Q chìa khóa để đóng Microsoft Visual Basic cho các ứng dụng cửa sổ.

LƯU Ý Hãy chắc chắn rằng Bật tất cả các macro tùy chọn được bật trong Outlook của bạn. Bạn có thể kiểm tra tùy chọn này bằng cách làm theo các bước được hiển thị bên dưới.

Bước 2: Xây dựng quy tắc để sử dụng tập lệnh

Sau khi thêm tập lệnh VBA trong Outlook, bạn cần tạo quy tắc để sử dụng tập lệnh dựa trên các điều kiện nhất định.

1. Chuyển đến tab Trang chủ, nhấp vào Nội quy > Quản lý Quy tắc & Cảnh báo.

2. bên trong Quy tắc và Cảnh báo hộp thoại, nhấp vào Quy tắc mới để tạo quy tắc.

Lời khuyên: Nếu bạn đã thêm nhiều tài khoản email vào Outlook của mình, vui lòng chỉ định một tài khoản trong Áp dụng các thay đổi cho thư mục này danh sách thả xuống nơi bạn muốn áp dụng quy tắc. Nếu không, nó sẽ được áp dụng cho hộp thư đến của tài khoản email hiện được chọn.

3. Trong lần đầu tiên Trình hướng dẫn quy tắc hộp thoại, chọn Áp dụng quy tắc về thư tôi nhận được trong Bước 1 hộp, và sau đó nhấp vào Tiếp theo.

4. Trong giây Trình hướng dẫn quy tắc hộp thoại, bạn cần:

4.1) Chỉ định một hoặc nhiều điều kiện trong Bước 1 hộp theo nhu cầu của bạn;
Trong trường hợp này, tôi chỉ muốn in các tệp đính kèm trong email đến từ một người gửi được chỉ định. Đây, tôi kiểm tra từ mọi người hoặc nhóm công khai cái hộp.
4.2) Nhấp vào giá trị được gạch chân trong Bước 2 hộp để chỉnh sửa điều kiện;
4.3) Nhấp Tiếp theo. Xem ảnh chụp màn hình:

5. Trong phần ba Trình hướng dẫn quy tắc hộp thoại, bạn cần cấu hình như sau.

5.1) Trong Bước 1: Chọn (các) phần hành động, kiểm tra chạy một tập lệnh cái hộp;
5.2) Trong Bước 2 , hãy nhấp vào văn bản được gạch chân “một tập lệnh”;
5.3) Mở đầu Chọn tập lệnh hộp thoại, bấm vào tên của mã VBA bạn đã thêm ở trên, sau đó bấm ĐỒNG Ý;
5.4) Nhấp vào Sau cái nút. Xem ảnh chụp màn hình:

Lời khuyên: Nếu người Vikingchạy một tập lệnh”Tùy chọn bị thiếu trong Trình hướng dẫn quy tắc, bạn có thể hiển thị nó bằng cách làm theo phương pháp được đề cập trong bài viết này: khôi phục mã lệnh Run A Script bị thiếu trong quy tắc Outlook.

6. Sau đó khác Trình hướng dẫn quy tắc bật lên yêu cầu các trường hợp ngoại lệ. Bạn có thể chọn các ngoại lệ nếu cần, nếu không, hãy nhấp vào Sau nút không có bất kỳ lựa chọn nào。

7. Cuối cùng Trình hướng dẫn quy tắc, bạn cần chỉ định tên cho quy tắc, sau đó nhấp vào Kết thúc .

8. Sau đó, nó trở về Quy tắc và Cảnh báo hộp thoại, bạn có thể thấy quy tắc bạn đã tạo được liệt kê bên trong, nhấp vào OK để hoàn tất toàn bộ cài đặt.

Kể từ bây giờ, khi nhận được email từ người được chỉ định, các tệp đính kèm sẽ được in tự động.


Các bài liên quan

Chỉ in (S) tệp đính kèm từ một email hoặc các email đã chọn trong Outlook
Trong Outlook, bạn có thể in các email, nhưng bạn đã in các tệp đính kèm chỉ từ một email hoặc các email đã chọn trong Outlook chưa? Bài viết này giới thiệu các thủ thuật để giải quyết công việc này.

Chỉ in tiêu đề thư của email trong Outlook
Khi in email trong Outlook, nó sẽ in cả tiêu đề thư và nội dung thư trong email. Tuy nhiên, trong một số trường hợp đặc biệt, bạn có thể chỉ cần in tiêu đề thư với chủ đề, người gửi, người nhận,… Bài viết này sẽ giới thiệu hai giải pháp để thực hiện.

In lịch trong phạm vi ngày được chỉ định / tùy chỉnh trong Outlook
Thông thường, khi in lịch ở dạng xem Tháng trong Outlook, nó sẽ tự động chọn tháng có chứa ngày hiện được chọn. Tuy nhiên, bạn có thể cần in lịch trong một phạm vi ngày tùy chỉnh, chẳng hạn như 3 tháng, nửa năm,… Bài viết này sẽ giới thiệu giải pháp cho bạn.

In một liên hệ bằng hình ảnh trong Outlook
Thông thường, ảnh của liên hệ sẽ không được in ra khi in liên hệ trong Outlook. Nhưng đôi khi, sẽ ấn tượng hơn nếu in một liên hệ với hình ảnh của nó. Bài viết này sẽ giới thiệu một số cách giải quyết để thực hiện nó.

In lựa chọn email trong Outlook
Nếu bạn nhận được một email và nhận thấy rằng có một số nội dung email cần được in ra thay vì in toàn bộ email, bạn sẽ làm gì? Trên thực tế, Outlook có thể giúp bạn thực hiện thao tác này với sự trợ giúp của các trình duyệt internet, chẳng hạn như Firefox và Internet Explorer. Ở đây tôi sẽ lấy các trình duyệt Internet làm ví dụ. Hãy xem các hướng dẫn sau đây.

Các bài viết khác về "in trong Outlook" ...


Kutools cho Outlook - Cung cấp 100 Tính năng Nâng cao cho Outlook và Làm cho Công việc Dễ dàng hơn Nhiều!

  • Auto CC / BCC bởi các quy tắc khi gửi email; Tự động chuyển tiếp Nhiều Email theo tùy chỉnh; Tự động trả lời không có máy chủ trao đổi và các tính năng tự động khác ...
  • Cảnh báo BCC - hiển thị tin nhắn khi bạn cố gắng trả lời tất cả nếu địa chỉ thư của bạn có trong danh sách BCC; Nhắc nhở khi thiếu tệp đính kèmvà các tính năng nhắc nhở khác ...
  • Trả lời (Tất cả) Với Tất cả Tệp đính kèm trong cuộc trò chuyện qua thư; Trả lời nhiều email trong vài giây; Tự động thêm lời chào khi trả lời; Thêm Ngày vào chủ đề ...
  • Công cụ Tệp đính kèm: Quản lý Tất cả Tệp đính kèm trong Tất cả Thư, Tự động tách, Nén tất cả, Đổi tên tất cả, Lưu tất cả ... Báo cáo nhanh, Đếm thư đã chọnhữu ích. Cảm ơn !
  • Email rác mạnh mẽ Theo phong tục; Xóa thư và liên hệ trùng lặphữu ích. Cảm ơn ! Cho phép bạn làm việc thông minh hơn, nhanh hơn và tốt hơn trong Outlook.
shot kutools triển vọng tab kutools 1180x121
shot kutools triển vọng kutools plus tab 1180x121
 
Nhận xét (17)
Chưa có xếp hạng. Hãy là người đầu tiên xếp hạng!
Nhận xét này đã được giảm thiểu bởi người điều hành trên trang web
xin chào

j ai suivi a la lettre votre methode pour printmez automatiquement lesz piece jointess

activez les macros mais il nya pas de macro

donc ca ne fonctionne pas ou il me manque un element

merci de me dire svp
Nhận xét này đã được giảm thiểu bởi người điều hành trên trang web
Chào,
Sau khi bật Bật tất cả các macro trong cửa sổ Trung tâm tin cậy, bạn cần khởi động lại Outlook để kích hoạt mã.
Nhận xét này đã được giảm thiểu bởi người điều hành trên trang web
Khi tôi chạy mô-đun theo cách thủ công, nó sẽ hiển thị một cửa sổ đối thoại của máy in. Có cách nào để in email mà không xuất hiện hộp thoại không?
Nhận xét này đã được giảm thiểu bởi người điều hành trên trang web
Xin chào Logan,
Mã chỉ cần mở phần đính kèm để đọc dữ liệu để in và sau đó nó sẽ tự động đóng phần đính kèm. Cửa sổ hộp thoại máy in không bật lên khi bạn chạy mã. Bạn có phiền cung cấp ảnh chụp màn hình cửa sổ đối thoại của máy in không? Xin lỗi vì sự bất tiện.
Nhận xét này đã được giảm thiểu bởi người điều hành trên trang web
Bonjour moi j'ai un petit soucie lorsque j'ai fait et refait les étapes mais lorsque je créer ma règle je n'Ai pas l'option chạy một kịch bản.
Nhận xét này đã được giảm thiểu bởi người điều hành trên trang web
Xin chào Stéphane,
Nếu người Vikingchạy một tập lệnh”Tùy chọn bị thiếu trong Trình hướng dẫn quy tắc, bạn có thể hiển thị nó bằng cách làm theo phương pháp được đề cập trong bài viết này: khôi phục mã lệnh Run A Script bị thiếu trong quy tắc Outlook.
Nhận xét này đã được giảm thiểu bởi người điều hành trên trang web
Bonjour question pour vous j'ai fait les étapes pour cela mais dans les règle de message de mon outlook je ne voit pas que je peux effisé un script
Nhận xét này đã được giảm thiểu bởi người điều hành trên trang web
Xin chào STEPHANE CADORETTE,
Nếu người Vikingchạy một tập lệnh”Tùy chọn bị thiếu trong Trình hướng dẫn quy tắc, bạn có thể hiển thị nó bằng cách làm theo phương pháp được đề cập trong bài viết này: khôi phục mã lệnh Run A Script bị thiếu trong quy tắc Outlook.
Nhận xét này đã được giảm thiểu bởi người điều hành trên trang web
Xin chào, vui lòng tôi cần trợ giúp, tôi không thể tích hợp tập lệnh chỉ để in pdf.
Tôi đã kích hoạt mọi thứ, tập lệnh đầu tiên để in chung hoạt động hoàn hảo (hoặc gần như: in tệp đính kèm pdf sau khi trình đọc acrobat được in vẫn mở trong nền), nhưng tập lệnh cụ thể cho pdf không hoạt động. Cảm ơn bạn đã đăng các kịch bản và cho bất kỳ sự trợ giúp nào.
Xin chào buổi ngày
Nhận xét này đã được giảm thiểu bởi người điều hành trên trang web
Xin chào Marco041,
Đã xảy ra lỗi với mã và nó đã được cập nhật. Hãy thử một lần.
Chú thích: chúng tôi không có cách nào để ngăn việc mở Acrobat Reader vì chúng tôi cần sử dụng nó để mở tài liệu pdf cho lệnh in tiếp theo.
Cảm ơn phản hôi của bạn.
Sub AttachementAutoPrint(Item As Outlook.MailItem)
'Updated by Extendoffice 20220920
  Dim xFS As FileSystemObject
  Dim xTempFolder As String
  Dim xAtt As Attachment
  Dim xShell As Object
  Dim xFolder As Object, xFolderItem As Object
  Dim xFileType As String, xFileName As String
  On Error GoTo xError
  Set xFS = New FileSystemObject
  xTempFolder = xFS.GetSpecialFolder(TemporaryFolder)
  xTempFolder = xTempFolder & "\ATMP" & Format(Now, "yyyymmddhhmmss")
  MkDir (xTempFolder)
  'Set Item = Application.ActiveExplorer.Selection.Item(1)
  Set xShell = CreateObject("Shell.Application")
  Set xFolder = xShell.NameSpace(0)
  For Each xAtt In Item.Attachments
    xFileName = xAtt.FileName
    xFileType = LCase$(Right$(xFileName, VBA.Len(xFileName) - VBA.InStrRev(xFileName, ".")))
    xFileName = xTempFolder & "\" & xFileName
    xAtt.SaveAsFile (xFileName)
    Select Case xFileType
      Case "pdf"   'change "pdf" to the file extension you want to print
        Set xFolderItem = xFolder.ParseName(xFileName)
        xFolderItem.InvokeVerbEx ("print")
    End Select
  Next xAtt
'xFS.DeleteFolder (xTempFolder)
Set xFS = Nothing
Set xFolder = Nothing
Set xFolderItem = Nothing
Set xShell = Nothing
xError:
  If Err <> 0 Then
    MsgBox Err.Number & " - " & Err.Description, , "Kutools for Outlook"
    Err.Clear
  End If
Exit Sub
End Sub
Nhận xét này đã được giảm thiểu bởi người điều hành trên trang web
Có thể chỉ định máy in sẽ được sử dụng (không phải máy in mặc định của hệ thống) không?
Tôi cần in 2 loại tài liệu trên 2 máy in khác nhau….
Cảm ơn bạn đã giúp đỡ!
Nhận xét này đã được giảm thiểu bởi người điều hành trên trang web
Xin chào Simon,
Cảm ơn bình luận của bạn. Sau khi thử với nhiều phương pháp khác nhau, tôi dường như không thể làm cho điều này hoạt động. Xin lỗi vì sự bất tiện.
Nhận xét này đã được giảm thiểu bởi người điều hành trên trang web
Yêu kịch bản này! Sẽ thế nào nếu tôi nhận được email có nhiều tệp pdf và muốn có một bản sao của mỗi tệp. Hiện tại khi tôi đính kèm 3 bản pdf, nó sẽ in bản cuối cùng, 3 lần và 2 bản còn lại không được in. Cảm ơn vì bất kì sự giúp đỡ!
Nhận xét này đã được giảm thiểu bởi người điều hành trên trang web
Chào va,

Xin lỗi vì sự bất tiện.
Bạn đang áp dụng mã VBA nào? Mã VBA 1 hay mã VBA 2? Ba tệp đính kèm PDF có cùng tên không? Và bạn đang sử dụng phiên bản Outlook nào?
Tôi đã kiểm tra mã và chúng hoạt động tốt trong trường hợp của tôi. Tôi cần biết cụ thể hơn về vấn đề của bạn.
Nhận xét này đã được giảm thiểu bởi người điều hành trên trang web
Xin chào, cảm ơn vì đã xuất bản bài viết này

Tôi đã làm theo hướng dẫn ở trên và đang chạy tập lệnh để in tất cả các tệp đính kèm được gửi.

chúng tôi thường nhận được những bản này theo lô từ 5-8 bản và khi kiểm tra, tôi nhận được 4 trong số 5 bản in với một bản bị lỗi với lỗi 75. Tất cả các tệp PDF có tên khác nhau và nằm trên các email riêng biệt/các tệp đính kèm có thể được mở theo cách thủ công nên tôi cho rằng có một vấn đề khi nó cố sao chép nó vào thư mục tạm thời. Bạn có bất cứ ý tưởng làm thế nào chúng ta có thể giải quyết điều này?
Nhận xét này đã được giảm thiểu bởi người điều hành trên trang web
Cùng một vấn đề ở đây. Sau một vài email nhận được trong một thời gian ngắn, nó có thể in 3-4 pdf, nhưng sau khi lỗi 75 xuất hiện, không có gì in trong cùng một loạt thư.
Nhận xét này đã được giảm thiểu bởi người điều hành trên trang web
Chào Gabriel,
Sau khi thử nghiệm, chúng tôi đã tái tạo sự cố bạn gặp phải. các tập lệnh VBA đã được cập nhật trong bài đăng. Xin vui lòng cung cấp cho họ một thử. Cảm ơn phản hồi của bạn.
Không có bình luận nào được đăng ở đây

Kết nối với chúng tôi

Bản quyền © 2009 - www.extendoffice.com. | Đã đăng ký Bản quyền. cung cấp bởi ExtendOffice. | BẢN ĐỒ CHI NHÁNH
Microsoft và logo Office là các nhãn hiệu hoặc nhãn hiệu đã đăng ký của Microsoft Corporation tại Hoa Kỳ và / hoặc các quốc gia khác.
Được bảo vệ bởi Sectigo SSL