J'utilise actuellement Windows 7 et Office 2010. J'ai une ancienne macro qui créait et envoyait un courrier électronique dans Outlook. Il utilisait une fonction (ci-dessous) pour créer le corps de l'e-mail. Cela avait fonctionné mais j'ai un problème pour le faire fonctionner dans Office 2010. La macro copie des informations d'un fichier de données et les colle dans une autre feuille de calcul dans la macro. Comme il va créer l'e-mail, il copie les données dans un nouveau livre. Il appelle ensuite cette fonction pour créer le corps de l'e-mail. Lorsque la macro arrive sur la ligne ci-dessous (ERROR HAPPENS ICI), elle sort de la fonction et continue de créer et d'envoyer l'e-mail, mais il n'y a aucun corps dans l'e-mail. Toute suggestion sur ce qui ne va pas avec cette ligne de code serait grandement appréciée. Merci pour l'aide ........La fonction Outlook ne fonctionne plus
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
Veuillez ne pas tenir compte de cette question car j'ai compris ce qui n'allait pas. Une fois que les variables n'avaient aucune donnée, le champ était vide. Une fois que j'ai vérifié que la variable contenait des données, le code s'est déroulé comme prévu. – Shaves