Gửi email tiếng Việt từ VBA

Liên hệ QC
Tôi tuân thủ nội quy khi đăng bài

khanhqxth

Thành viên mới
Tham gia
13/6/15
Bài viết
9
Được thích
0
Chào mọi người. Mình đang muốn viết đoạn code gửi email chào mừng + một số giấy tờ tới lao động mới mỗi khi có 1 lao động mới được add vào file excel.
Do tính chất công việc nên mình thường xuyên cần gửi nên muốn tạo đoạn code VBA.
Về code để Outlook tự gửi email, lấy fiel attached thì mình làm được nhưng chưa biết làm thế nào để Outook nó gửi được email tiếng Việt, có định dạng ạ.

Nếu lệnh cho nó gửi theo giá trị gán vào các ô trong excel thì email khi gửi ra chỉ là dạng chữ thường, không format được (bôi đậm 1 số từ, căn giữa. lùi lề) cũng như không kèm chữ ký mặc định được.

Vậy mình lên đây hỏi mọi người, mong mọi người gọi ý giải pháp.

Mình cảm ơn.
 
Ví dụ nội dung khi gõ trên Excel:
<font color="#0D3B69"><p style=font-family:arial;font-size:11pt></br><b>Kính gửi các Anh/Chị,</b></strong><br><br>Em gửi anh chị thông tin xuất hóa đơn …....................<br>

1680489731883.png


Khi chạy code và lên email sẽ được như vậy:
1680489406013.png

Mình hay sử dụng cách củ chuối này, bạn tham khảo:
Muốn màu chữ nào thì thay code màu chữ đó, ví dụ mình thích màu xanh dương nhạt thì mã code là #0D3B69, mình để link lấy mã màu bên dưới, bạn tự lấy mã màu bạn muốn.
Font chữ, mình đang xài arial, nếu muốn bạn có thể đổi font khác, tương tự với cỡ chữ, mình đang để cỡ 11, bạn có thể đổi nếu muốn.
Nội dung, nếu muốn xuống hàng thì cứ kẹp </br> muốn ghi cái gì đó tùy bạn </br>
Nếu muốn bôi đen: <b> Muốn ghi cái gì đó tùy bạn </b></strong>

Link bạn có thể lấy mã màu ở đây:

Còn bạn muốn thêm chữ ký thì có thể làm kiểu:

Dim olMail As Outlook.MailItem
Set olMail = olApp.CreateItem(olMailItem)
olMail.Display
Signatures = olMail.HTMLBody
..................
olMail.HTMLBody = ThisWorkbook.Sheets(....).Cells(... , ...) & Signatures
 
Lần chỉnh sửa cuối:
Upvote 0
Ví dụ nội dung khi gõ trên Excel:
<font color="#0D3B69"><p style=font-family:arial;font-size:11pt></br><b>Kính gửi các Anh/Chị,</b></strong><br><br>Em gửi anh chị thông tin xuất hóa đơn …....................<br>

1680489731883.png


Khi chạy code và lên email sẽ được như vậy:
1680489406013.png

Mình hay sử dụng cách củ chuối này, bạn tham khảo:
Muốn màu chữ nào thì thay code màu chữ đó, ví dụ mình thích màu xanh dương nhạt thì mã code là #0D3B69, mình để link lấy mã màu bên dưới, bạn tự lấy mã màu bạn muốn.
Font chữ, mình đang xài arial, nếu muốn bạn có thể đổi font khác, tương tự với cỡ chữ, mình đang để cỡ 11, bạn có thể đổi nếu muốn.
Nội dung, nếu muốn xuống hàng thì cứ kẹp </br> muốn ghi cái gì đó tùy bạn </br>
Nếu muốn bôi đen: <b> Muốn ghi cái gì đó tùy bạn </b></strong>

Link bạn có thể lấy mã màu ở đây:

Còn bạn muốn thêm chữ ký thì có thể làm kiểu:

Dim olMail As Outlook.MailItem
Set olMail = olApp.CreateItem(olMailItem)
olMail.Display
Signatures = olMail.HTMLBody
..................
olMail.HTMLBody = ThisWorkbook.Sheets(....).Cells(... , ...) & Signatures
Cảm ơn bạn, để mình thử.
Có cách nào để mình soạn cái email đó ra file word rồi đưa vào 1 cái tool nào đó, nó biên dịch ra ngôn ngữ để VBA hiểu như kia được không bạn nhỉ. Cái email mình cần gửi nó khá dài, 2 trang A4 liền :(
 
Upvote 0
Cảm ơn bạn, để mình thử.
Có cách nào để mình soạn cái email đó ra file word rồi đưa vào 1 cái tool nào đó, nó biên dịch ra ngôn ngữ để VBA hiểu như kia được không bạn nhỉ. Cái email mình cần gửi nó khá dài, 2 trang A4 liền :(
Mình nghĩ bạn chỉ tốn mấy bước thôi, 1 bạn chọn màu chữ, 2 kiểu chữ, 3 cỡ chữ.
Phần nội dung thì bạn copy - paste vào, thêm thắt mấy cái dấu ngắt dòng <br> thôi, bạn cứ thử xắn tay làm thử, chắc không tốn nhiều thời gian đâu bạn.
 
Upvote 0
Cảm ơn bạn, để mình thử.
Có cách nào để mình soạn cái email đó ra file word rồi đưa vào 1 cái tool nào đó, nó biên dịch ra ngôn ngữ để VBA hiểu như kia được không bạn nhỉ. Cái email mình cần gửi nó khá dài, 2 trang A4 liền :(
Bạn tìm hàm rangetohtml nhé (mình không nhớ chính xác tên lắm). Tức là bạn gõ nội dùng vào excel, format các kiểu, sau đó gọi hàm trên và truyền vùng dữ liệu vào.
 
Upvote 0
Mình nghĩ bạn chỉ tốn mấy bước thôi, 1 bạn chọn màu chữ, 2 kiểu chữ, 3 cỡ chữ.
Phần nội dung thì bạn copy - paste vào, thêm thắt mấy cái dấu ngắt dòng <br> thôi, bạn cứ thử xắn tay làm thử, chắc không tốn nhiều thời gian đâu bạn.
Mình làm và được rồi, cảm ơn bạn. Cơ mà vẫn đang tò mò không biết có hàm nào để get dữ liệu từ excel mà vẫn dữ được format không ta
Bài đã được tự động gộp:

Bạn tìm hàm rangetohtml nhé (mình không nhớ chính xác tên lắm). Tức là bạn gõ nội dùng vào excel, format các kiểu, sau đó gọi hàm trên và truyền vùng dữ liệu vào.
Bạn chỉ mình thêm được không. dưới đây là file code của mình. Mục tiêu
1- Ở sheet 2 là 1 bảng dữ liệu nhân viên. Mỗi khi chạy code sẽ kiểm tra cột G, nếu blank thì sẽ gửi email tới địa chỉ tương ứng ở cột E.
2- Subject sẽ lấy ở ô A1 Sheet1, body lấy range A2:A10 của Sheet 1
3- Attached là fiel theo địa chỉ cố định, file docx có tên tương ứng ở ô A1

Các vấn đề kia đã xử lý được, còn 1 vấn đề là mình muốn giữ là Format của nội dung ở A2:A10 ví dụ in đậm, căn giữa, bôi đậm. Vấn đề này chưa xử lý được, mong bạn xem qua và gợi ý giúp mình.
 

File đính kèm

  • Data2.xlsm
    25.3 KB · Đọc: 4
Lần chỉnh sửa cuối:
Upvote 0
Mình làm và được rồi, cảm ơn bạn. Cơ mà vẫn đang tò mò không biết có hàm nào để get dữ liệu từ excel mà vẫn dữ được format không ta
Bài đã được tự động gộp:


Bạn chỉ mình thêm được không. dưới đây là file code của mình. Mục tiêu
1- Ở sheet 2 là 1 bảng dữ liệu nhân viên. Mỗi khi chạy code sẽ kiểm tra cột G, nếu blank thì sẽ gửi email tới địa chỉ tương ứng ở cột E.
2- Subject sẽ lấy ở ô A1 Sheet1, body lấy range A2:A10 của Sheet 1
3- Attached là fiel theo địa chỉ cố định, file docx có tên tương ứng ở ô A1

Các vấn đề kia đã xử lý được, còn 1 vấn đề là mình muốn giữ là Format của nội dung ở A2:A10 ví dụ in đậm, căn giữa, bôi đậm. Vấn đề này chưa xử lý được, mong bạn xem qua và gợi ý giúp mình.
Bạn chạy thử file xem đúng không nhé.
Tham khảo bài viết này:
 

File đính kèm

  • Data2.xlsm
    28 KB · Đọc: 8
Upvote 0
Hóng với.
mình thì vẫn đang làm mẫu được format trên file word, rồi thêm bước merge mail hoặc "replace" với excel để gửi.
 
Upvote 0
Bạn chạy thử file xem đúng không nhé.
Tham khảo bài viết này:
Cảm ơn bạn, code chạy ngon ạ.
Vẫn có chút khó khăn kiểu cùng 1 ô Excel mà mình muốn 2light vài chữ thì nó không được. Hoặc là 2light cả cell hoặc không. Nhưng như này là ngon rồi.

Còn muốn được chi tiết từng chữ 2light riêng chắc dùng cách của bạn @tieutuvodanh192 là ok.

Cảm ơn các bạn.
 
Upvote 0
Web KT
Back
Top Bottom