Hoàng Văn Tài
Hoàng Văn Tài
Thảo luận 7 thảo luận
Vỗ tay 0 vỗ tay
Lượt xem 523 lượt xem

là giả sử trong 1 sub mà mình thực hiện (không đồng thời) select 2 range khác

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?

Thảo luận 7 câu trả lời
Lượt xem 523 lượt xem
Vỗ tay vỗ tay
Hoàng Văn Tài 17:10 - Oct 16, 2020

Mình đang không hiểu ý bạn

Vỗ tay vỗ tay
Hoàng Văn Tài 15:10 - Oct 19, 2020

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?

Vỗ tay vỗ tay
Hoàng Văn Tài 17:10 - Oct 19, 2020

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ỗ tay vỗ tay
Hoàng Văn Tài 17:10 - Oct 20, 2020

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

Vỗ tay vỗ tay
Hoàng Văn Tài 17:10 - Oct 20, 2020

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


Vỗ tay vỗ tay
Hoàng Văn Tài 17:10 - Oct 20, 2020

ý 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

Vỗ tay vỗ tay
Hoàng Văn Tài 08:10 - Oct 21, 2020

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

Vỗ tay vỗ tay
Câu hỏi liên quan
@ 2020 - Bản quyền của Công ty cổ phần công nghệ giáo dục Gitiho Việt Nam
Giấy chứng nhận Đăng ký doanh nghiệp số: 0109077145, cấp bởi Sở kế hoạch và đầu tư TP. Hà Nội