2016-10-07 7 views
2

データテーブルから情報を入力する電子メールをExcelで作成しました。ExcelからOutlookへのデータのエクスポート

A4にセルA1が「こんにちは、あなたはよくやってホープ」が含まれるとメッセージ....など。

H10へのA5は、A30への情報とA11との表は、見ている「のような電子メールの内容を持っていますあなたの返信のために転送する "。

私はA1のための値のみをコピーする:A4とA11:A30が、A5をしたい:H10は、テーブルとして表示されるように。

このコードは、ロン・デ・ブルーインからです。

表形式でペーストすべて以下マイコード:コードの

Sub Mail() 

Dim rng As Range 
Dim OutApp As Object 
Dim OutMail As Object 

Set rng = Nothing 
On Error Resume Next 
Set rng = ActiveSheet.Range("A1:A24").SpecialCells(xlCellTypeVisible) 
On Error GoTo 0 

If rng Is Nothing Then 
    MsgBox "The selection is not a range or the sheet is protected" & _ 
      vbNewLine & "please correct and try again.", vbOKOnly 
    Exit Sub 
End If 

With Application 
    .EnableEvents = False 
    .ScreenUpdating = False 
End With 

Set OutApp = CreateObject("Outlook.Application") 
Set OutMail = OutApp.CreateItem(0) 

On Error Resume Next 
With OutMail 
    .Display 
    .To = "" 
    .CC = "" 
    .BCC = "" 
    .Subject = "" 
    .HTMLBody = RangetoHTML(rng) 
End With 
On Error GoTo 0 

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

Set OutMail = Nothing 
Set OutApp = Nothing 
End Sub 

マイレスト:

Function RangetoHTML(rng As Range) 
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" 

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 

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 

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=") 

TempWB.Close savechanges:=False 

Kill TempFile 

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

? – 0m3r

+1

あなたがリクエストしたとおりに更新しました。 – Pranay

答えて

2

Work with shortcut range method[]

一般的な方法Range("A1").Value = 123ショートカット方法は[A1] = 123

ある例

With OutMail 
    .Display 
    .To = "" 
    .CC = "" 
    .BCC = "" 
    .Subject = "" 
    .HTMLBody = [A1] & "<BR>" & _ 
       [A2] & "<BR>" & _ 
       [A3] & "<BR>" & _ 
       [A4] & RangetoHTML(rng) & _ 
       [A11] & "<BR>" & _ 
       [A12] & "<BR>" & _ 
       [A13] & "<BR>" & _ 
       [A14] & "<BR>" 
       ' And more [range] 
End With 

が角括弧範囲/括弧/引用符を構築するための交換であることを覚えておいて、この方法は、に実際の参照を返します範囲、等号の両側に使用できます。それは他の機能を提供するために使用することができ、それは正常範囲のすべてのメソッドとプロパティを持っています。

はショートカットの方法は決して忘れないでください最速

あなたのコードの残りの部分である
関連する問題