2017-10-24 5 views
0

以下の関数を与え、変数%TABLE_HERE%を、電子メールにも添付されているExcelスプレッドシートの範囲から生成されたテーブルに置き換えたいと思います。Excelレンジが電子メールテンプレートに追加されました

Public Function GenerateEmail(fileName As String, tbleRange As Range) 

    Application.ScreenUpdating = False 

    Dim OutApp As Object 
    Dim OutMail As Object 

    Set OutApp = CreateObject("Outlook.Application") 
    Set OutMail = OutApp.CreateItemFromTemplate(fileName) 

    With OutMail 
     .HTMLbody = Replace(OutMail.HTMLbody, "%TABLE_HERE%", RangetoHTML(tbleRange)) 
     .Attachments.Add (Application.ActiveWorkbook.FullName) 
     .Display 
    End With 

    On Error GoTo 0 

    Set OutMail = Nothing 
    Set OutApp = Nothing 

    With Application 
     .ScreenUpdating = True 
     .EnableEvents = True 
    End With 

End Function 

私は少しの研究を行い、このすべてをあなたのために行い、ここの皆さんと共有したいと願っています!あなたはそれがチャートであなたが望んでいたように動作するように手に入れた

+0

以下の私の答えを参照してください? – braX

+1

私は、それも素晴らしい作品! – Maldred

答えて

1
Function RangetoHTML(rng As Range) 
' Changed by Ron de Bruin 28-Oct-2006 
' Working in Office 2000-2016 
    Dim fso As Object 
    Dim ts As Object 
    Dim TempFile As String 
    Dim TempWB As Workbook 

    TempFile = Environ$("temp") & "\" & Format(Now, "dd-mm-yy h-mm-ss") & ".htm" 

    'Copy the range and create a new workbook to past the data in 
    rng.copy 
    Set TempWB = Workbooks.Add(1) 
    With TempWB.Sheets(1) 
     .cells(1).PasteSpecial Paste:=8 
     .cells(1).PasteSpecial xlPasteValues, , False, False 
     .cells(1).PasteSpecial xlPasteFormats, , False, False 
     .cells(1).Select 
     Application.CutCopyMode = False 
     On Error Resume Next 
     .DrawingObjects.Visible = True 
     .DrawingObjects.Delete 
     On Error GoTo 0 
    End With 

    'Publish the sheet to a htm file 
    With TempWB.PublishObjects.Add(_ 
     SourceType:=xlSourceRange, _ 
     fileName:=TempFile, _ 
     Sheet:=TempWB.Sheets(1).Name, _ 
     Source:=TempWB.Sheets(1).UsedRange.Address, _ 
     HtmlType:=xlHtmlStatic) 
     .Publish (True) 
    End With 

    'Read all data from the htm file into RangetoHTML 
    Set fso = CreateObject("Scripting.FileSystemObject") 
    Set ts = fso.GetFile(TempFile).OpenAsTextStream(1, -2) 
    RangetoHTML = ts.readall 
    ts.Close 
    RangetoHTML = Replace(RangetoHTML, "align=center x:publishsource=", _ 
          "align=left x:publishsource=") 

    'Close TempWB 
    TempWB.Close savechanges:=False 

    'Delete the htm file we used in this function 
    Kill TempFile 

    Set ts = Nothing 
    Set fso = Nothing 
    Set TempWB = Nothing 
End Function 

Website I got it from here...

+0

私は何年もの間、その正確な関数を使ってきました。私はチャートでそれを試したことはありません。 – braX

関連する問題