Thay oi, thầy cho em hỏi em cần xuất nội dung được setup sẵn từ user form khi người dùng điền thông tin và có đính kèm hình ảnh, làm sao để em có thể hiện hình ảnh đó khi gửi qua outlook bằng vba được v ạ? Thầy hỗ trợ giúp em được không ạ?
Em cảm ơn ạ.
Câu hỏi của bạn khá phức tạp.
Việc gửi kèm hình ảnh qua outlook sẽ liên quan tới file đính kèm trong email. Mà đính kèm file phụ thuộc vào đường dẫn và tên file, chứ không phải nội dung hình ảnh.
Do đó trong userform cần xác định được hình ảnh đó nằm trong thư mục nào, tên ảnh là gì. Từ đó bạn dùng lệnh tạo file đính kèm trong outlook dựa trên đường dẫn này.
Da em co the tao file dinh kem duoc. Nhưng được yêu cầu là hiển thị hình ảnh ra bên ngoài email ạ. Tương tự như thao tác insert hình ảnh vào file outlook ạ. Có cách nào để em thực hiện điều này không v ạ.
Bạn tham khảo đoạn code này nhé:
Sub Main() Dim PathName As String
With Application.FileDialog(msoFileDialogFilePicker)
'.InitialFileName = "D:\Temp\" ' <-- Use this line to set a default folder
If .Filters.Count > 0 Then .Filters.Delete
.Filters.Add "Images", "*.gif; *.png; *.jpg; *.jpeg", 1
.AllowMultiSelect = False
If .Show = False Then Exit Sub
PathName = .SelectedItems(1)
End With
Call EmbedPicture(PathName)
End Sub
Sub EmbedPicture(PathName As String)
Dim MyPicture As String
MyPicture = Mid(PathName, InStrRev(PathName, Application.PathSeparator) + 1)
With CreateObject("Outlook.Application").CreateItem(0)
.Attachments.Add PathName
.HTMLBody = "<html><p>This is a picture</p>" & _
"<img src=cid:" & Replace(MyPicture, " ", "%20") & _
"<p>Best Regards,</p>" & _
"<p>" & UCase(Environ("USERNAME")) & "</p></html>"
.Display
End With
End Sub
trong đó sub Main sẽ xác định ảnh mà bạn chọn
sub EmbedPicture là đưa ảnh vào outlook khi tạo email