2016-10-07 5 views
2

Ich habe eine E-Mail in Excel erstellt, die Informationen aus der Datentabelle auffüllt.Exportieren von Daten aus Excel nach Outlook

Zelle A1 bis A4 enthält „Hallo, hoffen, dass Ihr tut gut“ und Nachrichten .... etc ..

A5 bis H10 eine Tabelle mit den Informationen hat und A11 bis A30 hat die E-Mail-Inhalte wie „suchen Weiterleiten für deine Antwort ".

Ich möchte nur die Werte für A1: A4 und A11: A30 kopieren, aber A5: H10 soll als Tabelle erscheinen.

Dieser Code stammt von Ron De Bruin.

Mein Code unten alles Pasten in einem Tabellenformat:

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 

My Rest des Codes:

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

Wo ist der Rest des Codes

Denken Sie daran, Shortcut-Methode ist? – 0m3r

+1

Ich habe aktualisiert, wie Sie angefordert haben. – Pranay

Antwort

2

Work with shortcut range method[]

Die übliche Methode Range("A1").Value = 123 und Verknüpfungsmethode ist [A1] = 123

Beispiel

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 

Denken Sie daran, dass eckige Klammern sind ein Ersatz für den Bereich/Klammerung/Anführungszeichen konstruieren, Die Methode gibt einen echten Bezug auf Der Bereich kann auf beiden Seiten des Gleichheitszeichens verwendet werden. Es kann verwendet werden, um andere Funktionen zu füttern. Und es hat alle Methoden und Eigenschaften eines normalen Bereichs. nie der schnellste

Verwandte Themen