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
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