thầy cho e hỏi là: giả sử trong 1 sub mà mình thực hiện (không đồng thời) select 2 range khác nhau thì khi viết tiếp code sẽ sử dụng selection như thế nào ah?
Mình đang không hiểu ý bạn
ví dụ:
Sub ViDu_Selection()
Range("A1:B3").Select
Range("C5:D10").Select
Các câu lệnh phía dưới thì Selection sẽ được hiểu là áp dụng cho range nào ở trên hay là cho đồng thời cả 2 range ah?
Selection.Borders(xlDiagonalUp).LineStyle = xlNone
- Nếu selection áp dụng đồng thời cho cả 2 range, giờ e muốn mỗi range là 1 Selection khác nhau thì hướng làm là thế nào ah?
Chào bạn với vba bạn nên làm thế này
Range("A1:B3").Select
// code định dạng cho vùng từ a1:B3
Range("C5:D10").Select
// code định dạng cho vùng C5:D10
Vâng, thầy cho e hỏi ngoài lề chút ah: Em có 1 bảng dữ liệu lương của nhân viên, và có nội dung email là 1 đoạn text (có tọa độ chỉ là 1 Cell) có chứa các trường thông tin trong bảng dữ liệu. Em muốn dùng vba để thực hiện trộn thư, tất cả đều thực hiện trên excel và vba (không dùng word) thì hướng code vba là như thế nào ah?
Link ảnh chụp ví dụ: https://imgur.com/6llHz9T
Chào bạn bạn làm theo code sau:
Option Explicit
Sub GUIEMIL()
Call Send_Email_With_Gmail("emailgui", "email nhan", "sSubject", "sBody", "file dinh kem")
End Sub
Sub Send_Email_With_Gmail(sMailFrom, sMailTo, sSubject, sBody, Optional sAttachment = Null)
Dim newMail As Object
Dim mailConfiguration As Object
Dim msConfigURL As String
Dim fields As Variant
On Error GoTo errHandle
' Ði?u ch?nh l?i thi?t l?p trong Google
' https://myaccount.google.com/lesssecu...
Set newMail = CreateObject("CDO.Message")
Set mailConfiguration = CreateObject("CDO.Configuration")
mailConfiguration.Load -1
Set fields = mailConfiguration.fields
With newMail
.bodypart.Charset = "utf-8"
.Subject = sSubject
.From = sMailFrom
.To = sMailTo
.CC = ""
.BCC = ""
.TextBody = sBody
.AddAttachment sAttachment
End With
msConfigURL = "http://schemas.microsoft.com/cdo/conf..."
With fields
.Item(msConfigURL & "/smtpusessl") = True
.Item(msConfigURL & "/smtpauthenticate") = 1
.Item(msConfigURL & "/smtpserver") = "smtp.gmail.com"
.Item(msConfigURL & "/smtpserverport") = 465
.Item(msConfigURL & "/sendusing") = 2
.Item(msConfigURL & "/sendusername") = "email" ' <- dia chi email cua ban
.Item(msConfigURL & "/sendpassword") = "matkhau" ' <- mat khau email cua ban
.Update
End With
newMail.Configuration = mailConfiguration
newMail.Send
MsgBox "E-Mail has been sent to " & sMailTo, vbInformation
exit_line:
Set newMail = Nothing
Set mailConfiguration = Nothing
Exit Sub
errHandle:
MsgBox "Error: " & Err.Description, vbInformation
End Sub
Bước 1: đăng nhập vào tài khoản email muốn gửi của bạn:
Truy cập vào trang web: https://myaccount.google.com/lesssecu...
Bật chế độ kém an toàn lên rồi tiến hành gửi email như code trên
ý e là làm sao lấy dữ liệu của từng nhân viên để trộn vào nội dung body của thư ấy, vì mỗi người là thông tin khác nhau, không thể gửi người này xong rồi lại edit nội dung body để gửi người tiếp theo
Chào bạn cái này là mẫu bạn chỉ cần làm vòng lặp lấy từ tên vào body, actach theo vòng lặp là được. code mẫu:
Option Explicit
Sub GUIEMIL()
dim dc as long
dc = sheetname.range("A"&sheetname.rows.count).end(3).row
for i = 1 to dc
Call Send_Email_With_Gmail("emailgui", sheetname.range("B"&i).value, sheetname.range("C"&i).value, sheetname.range("D"&i).value, sheetname.range("E"&i).value)
next i
End Sub
để cho không phải viết vào sheetsname bạn có thể để with... end with