Gửi email tự động trong excel

Liên hệ QC

NguyenVietThinh08

Thành viên chính thức
Tham gia
12/5/20
Bài viết
86
Được thích
4
Xin chào cả nhà, mình lên mạng và có hướng dẫn gửi mail tự động bằng excel thông qua outlook.
Phương pháp rất hay nhưng mình muốn mở rộng tính năng 1 chút nhưng chưa biết cách làm mong các anh em bớt chút thời gian chỉ giáo
Mình muốn nhấn vào nút gửi email thì trong emal gửi đi đính kèm 1 ảnh là phần mình đã tô vuông đó hoặc 1 sheet mới chỉ có dữ liệu phần mình đã đóng khung
Không biết có cao nhân nào làm được không ạ, giúp mình với
 

File đính kèm

  • ảnh.PNG
    ảnh.PNG
    228.1 KB · Đọc: 59
Xin chào cả nhà, mình lên mạng và có hướng dẫn gửi mail tự động bằng excel thông qua outlook.
Phương pháp rất hay nhưng mình muốn mở rộng tính năng 1 chút nhưng chưa biết cách làm mong các anh em bớt chút thời gian chỉ giáo
Mình muốn nhấn vào nút gửi email thì trong emal gửi đi đính kèm 1 ảnh là phần mình đã tô vuông đó hoặc 1 sheet mới chỉ có dữ liệu phần mình đã đóng khung
Không biết có cao nhân nào làm được không ạ, giúp mình với
Bạn đã có code gửi mail kèm file bằng Outlook rồi đúng không?
Vậy bạn dùng code này để tạo cái ảnh vùng mà bạn đã tô vuông đó, có tên là Screenshot.jpg cùng đường dẫn với file chứa code. Đính kèm file ảnh này vào mail
PHP:
Sub Screenshot2JPG()

Dim FPath As String, FName As String
Dim pic_rng As Range
Dim ShTemp As Worksheet
Dim ChTemp As Chart
Dim PicTemp As Picture

    FPath = ThisWorkbook.path & "\"
    FName = "Screenshot.jpg"
    
    Application.ScreenUpdating = False
    Set pic_rng = Worksheets("Main").Range("A1:D7")  'Thay doi vung neu can
    Set ShTemp = Worksheets.Add
    Charts.Add
    ActiveChart.Location Where:=xlLocationAsObject, Name:=ShTemp.Name
    Set ChTemp = ActiveChart
    pic_rng.CopyPicture Appearance:=xlScreen, Format:=xlPicture
    ChTemp.Paste
    Set PicTemp = Selection
    With PicTemp
        .Width = ChTemp.Parent.Width - 1
        .Height = ChTemp.Parent.Height - 1
    End With
    
    ChTemp.Export FileName:=FPath & FName, FilterName:="jpg"
    Application.DisplayAlerts = False
    ShTemp.Delete
    Application.DisplayAlerts = True
    Application.ScreenUpdating = True
    
End Sub
 
Upvote 0
Bạn đã có code gửi mail kèm file bằng Outlook rồi đúng không?
Vậy bạn dùng code này để tạo cái ảnh vùng mà bạn đã tô vuông đó, có tên là Screenshot.jpg cùng đường dẫn với file chứa code. Đính kèm file ảnh này vào mail
PHP:
Sub Screenshot2JPG()

Dim FPath As String, FName As String
Dim pic_rng As Range
Dim ShTemp As Worksheet
Dim ChTemp As Chart
Dim PicTemp As Picture

    FPath = ThisWorkbook.path & "\"
    FName = "Screenshot.jpg"
   
    Application.ScreenUpdating = False
    Set pic_rng = Worksheets("Main").Range("A1:D7")  'Thay doi vung neu can
    Set ShTemp = Worksheets.Add
    Charts.Add
    ActiveChart.Location Where:=xlLocationAsObject, Name:=ShTemp.Name
    Set ChTemp = ActiveChart
    pic_rng.CopyPicture Appearance:=xlScreen, Format:=xlPicture
    ChTemp.Paste
    Set PicTemp = Selection
    With PicTemp
        .Width = ChTemp.Parent.Width - 1
        .Height = ChTemp.Parent.Height - 1
    End With
   
    ChTemp.Export FileName:=FPath & FName, FilterName:="jpg"
    Application.DisplayAlerts = False
    ShTemp.Delete
    Application.DisplayAlerts = True
    Application.ScreenUpdating = True
   
End Sub
Thank bạn nhé, mình cũng mới tập tành VBA, mình sẽ chạy thử code xem sao, có gì xin chỉ giáo, Cảm ơn bạn nhiều
Bài đã được tự động gộp:

Thank bạn nhé, mình cũng mới tập tành VBA, mình sẽ chạy thử code xem sao, có gì xin chỉ giáo, Cảm ơn bạn nhiều
Mình chạy đến đoạn này thì lỗi, bạn có thể chỉ giáo giùm thêm phần này không,
Với mình muốn hỏi thêm nếu muốn đính kèm file ảnh vừa chụp vào thì làm thế nào ạ,
Phần '???????????????????????? trong đoạn code trên là đường link theo mình tìm hiểu, bạn có thể chỉ giáo hoặc hoàn thiện giúp mình được không ạ


Sub gui_thu()
Dim olApp As Outlook.Application
Set olApp = CreateObject("Outlook.Application")

Dim i As Integer


For i = 1 To 3
ThisWorkbook.Sheets(2).Range("D1") = i
Dim olmail As Outlook.MailItem
Set olmail = olApp.CreateItem(olMailItem)

olmail.To = ThisWorkbook.Sheets(2).Range("D3")
olmail.Subject = ThisWorkbook.Sheets(2).Range("h1")
olmail.Body = ThisWorkbook.Sheets(2).Range("H2")
olmail.Attachments.Add '???????????????????????????
olmail.Send
Next

End Sub
 

File đính kèm

  • Capture 2.PNG
    Capture 2.PNG
    283.2 KB · Đọc: 51
Lần chỉnh sửa cuối:
Upvote 0
Xin chào cả nhà, mình lên mạng và có hướng dẫn gửi mail tự động bằng excel thông qua outlook.
Phương pháp rất hay nhưng mình muốn mở rộng tính năng 1 chút nhưng chưa biết cách làm mong các anh em bớt chút thời gian chỉ giáo
Mình muốn nhấn vào nút gửi email thì trong emal gửi đi đính kèm 1 ảnh là phần mình đã tô vuông đó hoặc 1 sheet mới chỉ có dữ liệu phần mình đã đóng khung
Không biết có cao nhân nào làm được không ạ, giúp mình với
Hoặc bạn dùng code này
PHP:
Sub ActionExport()

    ExportRange Range("G174:K191"), ThisWorkbook.path & "\" & "Screenshot.jpg"

End Sub


Sub ExportRange(rng As Range, sPath As String)

    Dim cob, sc

    rng.CopyPicture Appearance:=xlScreen, Format:=xlPicture

    Set cob = rng.Parent.ChartObjects.Add(10, 10, 200, 200)
    'remove any series which may have been auto-added...
    Set sc = cob.Chart.SeriesCollection
    Do While sc.Count > 0
        sc(1).Delete
    Loop

    With cob
        .Height = rng.Height
        .Width = rng.Width
        .Chart.Paste
        .Chart.Export FileName:=sPath, Filtername:="JPG"
        .Delete
    End With

End Sub
Bài đã được tự động gộp:

Thank bạn nhé, mình cũng mới tập tành VBA, mình sẽ chạy thử code xem sao, có gì xin chỉ giáo, Cảm ơn bạn nhiều
Bài đã được tự động gộp:


Mình chạy đến đoạn này thì lỗi, bạn có thể chỉ giáo giùm thêm phần này không,
Với mình muốn hỏi thêm nếu muốn đính kèm file ảnh vừa chụp vào thì làm thế nào ạ,
Phần '???????????????????????? trong đoạn code trên là đường link theo mình tìm hiểu, bạn có thể chỉ giáo hoặc hoàn thiện giúp mình được không ạ


Sub gui_thu()
Dim olApp As Outlook.Application
Set olApp = CreateObject("Outlook.Application")

Dim i As Integer


For i = 1 To 3
ThisWorkbook.Sheets(2).Range("D1") = i
Dim olmail As Outlook.MailItem
Set olmail = olApp.CreateItem(olMailItem)

olmail.To = ThisWorkbook.Sheets(2).Range("D3")
olmail.Subject = ThisWorkbook.Sheets(2).Range("h1")
olmail.Body = ThisWorkbook.Sheets(2).Range("H2")
olmail.Attachments.Add '???????????????????????????
olmail.Send
Next

End Sub
Tôi chạy rồi mới gửi, máy tôi không lỗi chỗ đó. Bạn xem mã lỗi là gì? và trong Tools/References có bị thiếu thư viện gì không?

Với câu hỏi thứ hai: tôi chưa dùng code gửi mail bằng Outlook nhưng đã dùng với Gmail. Code với Gmail chỗ đó là .AddAttachment FPath & "Screenshot.jpg"
 
Lần chỉnh sửa cuối:
Upvote 0
Hoặc bạn dùng code này
PHP:
Sub ActionExport()

    ExportRange Range("G174:K191"), ThisWorkbook.path & "\" & "Screenshot.jpg"

End Sub


Sub ExportRange(rng As Range, sPath As String)

    Dim cob, sc

    rng.CopyPicture Appearance:=xlScreen, Format:=xlPicture

    Set cob = rng.Parent.ChartObjects.Add(10, 10, 200, 200)
    'remove any series which may have been auto-added...
    Set sc = cob.Chart.SeriesCollection
    Do While sc.Count > 0
        sc(1).Delete
    Loop

    With cob
        .Height = rng.Height
        .Width = rng.Width
        .Chart.Paste
        .Chart.Export FileName:=sPath, Filtername:="JPG"
        .Delete
    End With

End Sub
Bài đã được tự động gộp:


Tôi chạy rồi mới gửi, máy tôi không lỗi chỗ đó. Bạn xem mã lỗi là gì? và trong Tools/References có bị thiếu thư viện gì không?

Với câu hỏi thứ hai: tôi chưa dùng code gửi mail bằng Outlook nhưng đã dùng với Gmail. Code với Gmail chỗ đó là .AddAttachment FPath & "Screenshot.jpg"
Vẫn thấy lỗi bạn ạ, mình cũng mới tập tành excel nên nhìn vào cũng quá sức với mình,
 
Upvote 0
Vẫn thấy lỗi bạn ạ, mình cũng mới tập tành excel nên nhìn vào cũng quá sức với mình,
Vẫn thấy lỗi bạn ạ, mình cũng mới tập tành excel nên nhìn vào cũng quá sức với mình,
Bạn chụp cái hộp thoại popup báo lỗi gửi lên đây xem
Bài đã được tự động gộp:

Bạn chụp cái hộp thoại popup báo lỗi gửi lên đây xem
Bạn xem có tích mấy cái thư viện này không (nếu chưa thì kéo xuống tìm tích chọn vào thử): OLE Automation, Microsoft Form 2.0 Object Library và Microsoft Scripting R1593947668001.pnguntime
1593947668001.png
 
Lần chỉnh sửa cuối:
Upvote 0
Hoặc bạn dùng code này
PHP:
Sub ActionExport()

    ExportRange Range("G174:K191"), ThisWorkbook.path & "\" & "Screenshot.jpg"

End Sub


Sub ExportRange(rng As Range, sPath As String)

    Dim cob, sc

    rng.CopyPicture Appearance:=xlScreen, Format:=xlPicture

    Set cob = rng.Parent.ChartObjects.Add(10, 10, 200, 200)
    'remove any series which may have been auto-added...
    Set sc = cob.Chart.SeriesCollection
    Do While sc.Count > 0
        sc(1).Delete
    Loop

    With cob
        .Height = rng.Height
        .Width = rng.Width
        .Chart.Paste
        .Chart.Export FileName:=sPath, Filtername:="JPG"
        .Delete
    End With

End Sub
Bài đã được tự động gộp:


Tôi chạy rồi mới gửi, máy tôi không lỗi chỗ đó. Bạn xem mã lỗi là gì? và trong Tools/References có bị thiếu thư viện gì không?

Với câu hỏi thứ hai: tôi chưa dùng code gửi mail bằng Outlook nhưng đã dùng với Gmail. Code với Gmail chỗ đó là .AddAttachment FPath & "Screenshot.jpg"
Ý tưởng của mình là gửi mail cho nhiều người trong 1 danh sách email có sẵn, với mỗi mail sẽ là đính kèm 1 ảnh chụp, vì mỗi người là l=khác nhau nên ảnh chụp cũng khác nhau
Bài đã được tự động gộp:

Bạn chụp cái hộp thoại popup báo lỗi gửi lên đây xem
Bài đã được tự động gộp:


Bạn xem có tích mấy cái thư viện này không (nếu chưa thì kéo xuống tìm tích chọn vào thử): OLE Automation, Microsoft Form 2.0 Object Library và Microsoft Scripting RView attachment 240511untime
View attachment 240511
Đây ạ, anh em nghiên cứu giúp mình, mình đã lần mò các trang web 2 tuần nay rồi, anh em giúp mình nhé
Bài đã được tự động gộp:

Ý tưởng của mình là gửi mail cho nhiều người trong 1 danh sách email có sẵn, với mỗi mail sẽ là đính kèm 1 ảnh chụp, vì mỗi người là l=khác nhau nên ảnh chụp cũng khác nhau
Bài đã được tự động gộp:


Đây ạ, anh em nghiên cứu giúp mình, mình đã lần mò các trang web 2 tuần nay rồi, anh em giúp mình nhé
mã khóa là 1508 nhé
 

File đính kèm

  • BangLuong - Copy.xlsm
    69.9 KB · Đọc: 25
Upvote 0
Ý tưởng của mình là gửi mail cho nhiều người trong 1 danh sách email có sẵn, với mỗi mail sẽ là đính kèm 1 ảnh chụp, vì mỗi người là l=khác nhau nên ảnh chụp cũng khác nhau
Bài đã được tự động gộp:


Đây ạ, anh em nghiên cứu giúp mình, mình đã lần mò các trang web 2 tuần nay rồi, anh em giúp mình nhé
Để tôi xem rồi trả lời. Tuy nhiên nếu biết không nhiều về VBA thì mệt lắm, không tùy biến được nên cứ mỗi tí mỗi hỏi
 
Upvote 0
Để tôi xem rồi trả lời. Tuy nhiên nếu biết không nhiều về VBA thì mệt lắm, không tùy biến được nên cứ mỗi tí mỗi hỏi
Vâng, có gì giúp mình nhé, mình cũng mới tập tành, mỗi lần ghép công thức rồi chạy thử lại sai thì mệt quá
Thank bạn nhé!
 
Upvote 0
Ý tưởng của mình là gửi mail cho nhiều người trong 1 danh sách email có sẵn, với mỗi mail sẽ là đính kèm 1 ảnh chụp, vì mỗi người là l=khác nhau nên ảnh chụp cũng khác nhau
Bài đã được tự động gộp:


Đây ạ, anh em nghiên cứu giúp mình, mình đã lần mò các trang web 2 tuần nay rồi, anh em giúp mình nhé
Bài đã được tự động gộp:


mã khóa là 1508 nhé
1805 mà bảo là 1508, hehe, bạn tếu thiệt. Tôi nhạy với mấy con số lắm gõ lần thứ 2 là trúng y
 
Upvote 0
Lấy ở bài #5 về làm dùng.

 
Upvote 0
Xem đã có thư viện OLE Automation chưa? Tôi lấy file bạn dùng vẫn OK.
1594005942479.png
 
Upvote 0
Web KT
Back
Top Bottom