2017-07-18 3 views
0

Ich verwende derzeit Windows 7 und Office 2010. Ich habe ein älteres Makro, das Erstellen und Senden einer E-Mail in Outlook. Es verwendete eine Funktion (unten), um den Text der E-Mail zu erstellen. Es funktionierte, aber ich habe ein Problem, es in Office 2010 zu funktionieren. Das Makro kopiert Informationen aus einer Datendatei und fügt sie in einem anderen Arbeitsblatt in dem Makro ein. Beim Erstellen der E-Mail werden die Daten in ein neues Wörterbuch kopiert. Anschließend ruft sie diese Funktion auf, um den Text der E-Mail zu erstellen. Wenn das Makro die folgende Zeile erreicht (ERROR HAPPENS HERE), tritt es aus der Funktion aus und fährt mit dem Erstellen und Senden der E-Mail fort, aber in der E-Mail befindet sich keine Nachricht. Irgendwelche Vorschläge, was mit dieser Codezeile falsch ist, würden sehr geschätzt werden. Danke für die Hilfe ........Outlook-Funktion funktioniert nicht mehr

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" 
' TempFile = "C:\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(_  ' error happens here 
     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

Bitte ignorieren Sie diese Frage, als ich herausgefunden habe, was falsch war. Sobald die Variablen keine Daten mehr enthielten, war das Feld leer. Sobald ich sichergestellt hatte, dass die Variable Daten enthielt, lief der Code wie erwartet. – Shaves

Antwort

0

Bitte ignorieren Sie diese Frage, als ich herausgefunden habe, was falsch war. Sobald die Variablen keine Daten mehr enthielten, war das Feld leer. Sobald ich sichergestellt hatte, dass die Variable Daten enthielt, lief der Code wie erwartet.