Xin giúp đỡ về việc sử dụng code tự động gửi mail outlook từ excel trên 1 sheet khác

Liên hệ QC

dongkaka88

Thành viên mới
Tham gia
6/5/17
Bài viết
8
Được thích
1
Giới tính
Nam
Hiện mình có code tự động gửi mail outlook từ excel như dưới, như chỉ hoạt động với đúng Sheet 1. Tức là button SendOutlook ở sheet 1 thì mới hoạt động được. Mình muốn di chuyển button SendOutlook sang sheet 2, nhưng nó bị lỗi, không hoạt động được.
Các bạn cho xin cao kiến giúp mình với.


Mã:
Sub SendOutlook()
Dim OutApp, OutMail As Object
Dim EmpName, Subj, MesgBefore, MesgAfter, Attach, Email, Link, PicFilename As String
Dim PicRng As Range
Dim LastRow, PicWidth, PicHeight As Long
Dim PicChart As Chart
On Error Resume Next
With Sheet1

        Set PicRng = .Range("A1:E24")
        EmpName = .Range("H6").Value 'Ten ban ve
        Link = .Range("H12").Value 'Link ban ve
        Email = .Range("H13").Value 'Dia chi Email nguoi nhan
        Subj = .Range("H6").Value 'Chu de thu
        MesgBefore = .Range("H8").Value 'Noi dung truoc thu
        MesgAfter = .Range("H11").Value 'Noi dung sau thu
        MesgBefore = Replace(Replace(Replace(MesgBefore, "#EmpName#", EmpName), "#Link#", Link), Chr(10), "<br>")
        MesgAfter = Replace(Replace(Replace(MesgAfter, "#EmpName#", EmpName), "#Link#", Link), Chr(10), "<br>")
        PicFilename = ThisWorkbook.Path & "\AnhCvPhbv.jpg" 'Ten file anh
            On Error Resume Next
            If Dir(PicFilename) > 0 Then Kill (PicFilename)  'Delete any picture that has the same name in the same location first
            On Error GoTo 0
            On Error Resume Next
            PicRng.CopyPicture xlScreen, xlBitmap 'Create a bitmap image of the report range and copy the picture
            On Error GoTo 0
            'Create a new Temporary Chart
            With ActiveSheet.ChartObjects.Add(Left:=PicRng.Left, Top:=PicRng.Top, Width:=PicRng.Width, Height:=PicRng.Height)
                .Name = "AnhCvPhbv"
                .Activate
                PicWidth = PicRng.Width
                PicHeight = PicRng.Height
            End With
            
                  ActiveChart.Paste 'Past the Picture in the pie chart
                  ActiveSheet.ChartObjects("AnhCvPhbv").Chart.Export ThisWorkbook.Path & "\AnhCvPhbv.jpg"
                  .Shapes("AnhCvPhbv").Delete 'Delete Picture

        Set OutApp = CreateObject("Outlook.Application")
        Set OutMail = OutApp.CreateItem(0)
        With OutMail
            If Email = Empty Then
            MsgBox "Chua cap nhat dia chi email"
                Exit Sub
            Else
            .To = Email
            On Error Resume Next
             .Attachments.Add PicFilename, 1, 0
             On Error GoTo 0
            .Subject = Subj
            .HTMLBody = .HTMLBody & MesgBefore & "<br>" _
                & "<img src='cid:AnhCvPhbv.jpg'" & "width='" & PicWidth & "' height='" & PicHeight & "'><br>" _
                & "<br>" & MesgAfter & "</font></span>"
            '.HTMLBody = .HTMLBody & MesgBefore & "<br><br>" _
                & RangetoHTML(Sheet1.Range("D14:H37")) & "<br>" _
                & "<br>" & MesgAfter & "</font></span>"
            .Send 'Change to .Send to Send emails without displaying them first
            End If
        End With
        On Error GoTo 0
        Set OutMail = Nothing
    End With
End Sub
 
Bạn thử thay
With Sheet1 thành With Sheet2
xem sao
 
mình có code ...

Mã:
Sub SendOutlook()
Dim OutApp, OutMail As Object
Dim EmpName, Subj, MesgBefore, MesgAfter, Attach, Email, Link, PicFilename As String
Dim PicRng As Range
Dim LastRow, PicWidth, PicHeight As Long

Mình chép ở đâu phải hông? Kiểu khai báo biến kia đâu có đúng sách giáo khoa. @@
 
Xin lỗi anh chị em quen kiểu viết tắt nhắn tin zalo
 
Web KT

Bài viết mới nhất

Back
Top Bottom