2017-07-18 4 views
0

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

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

Répondre

0

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.