Macro export htm avec image du classeur

loicoss -  
cs_Le Pivert Messages postés 8437 Statut Contributeur -
Bonjour,

J'ai une macro pour exporter un fichier excel en .htm (avec report de valeurs de cellule)
Ce code fonctionne très bien.
Je souhaiterai intégrer dans ce code une image contenu dans l'onglet image qui d'après l'enregistreur de macro se nommerait : ActiveSheet.Shapes.Range(Array("Picture 1")).Select

voici donc mon code modifié pour intégrer cette image dans mon fichier htm :

Sub macro_html()
Open ThisWorkbook.Path & "\fichier_html.htm" For Output As #1
Print #1, Chr$(13) & "<html><body>"
Print #1, Chr$(13) & "<table>"
Print #1, Chr$(13) & "<tr>"
Print #1, Chr$(13) & "<td>"
Print #1, Chr$(13) & "<img src='" & Sheets("Image").Shapes.Range(Array("Picture 1")) & "' alt='IMAGE'/>"
Print #1, Chr$(13) & "</td>"
Print #1, Chr$(13) & "<td>"
Print #1, Chr$(13) & "</td>"
Print #1, Chr$(13) & "<td>"
Print #1, Chr$(13) & "" & Sheets("html").Range("B4") & " " & Sheets("html").Range("C4") & ""
Print #1, Chr$(13) & "</td>"
Print #1, Chr$(13) & "</tr>"
Print #1, Chr$(13) & "</table>"
Print #1, Chr$(13) & "</body></html>"
Close #1
ActiveWorkbook.FollowHyperlink Address:=ThisWorkbook.Path & "\fichier_html.htm", NewWindow:=True
End Sub

Le probème c'est qu'il me retourne une erreur sur la ligne <img src='" & Sheets("Image").Shapes.Range(Array("Picture 1")) & "' alt='IMAGE'/>

Je pense me tromper dans l’écriture de cette ligne.

Pourriez m'apporter une aide ?

Pour rappel sans cette ligne mon fichier est bien exporté avec les autres valeurs.

En vous remerciant par avance.

Bonne journée.

Configuration: Windows / Firefox 60.0

1 réponse

  1. cs_Le Pivert Messages postés 8437 Statut Contributeur 730
     
    Bonjour,

    Pour enregistrer une image en html:

     'adapter l'emplacement de l'image A1:B6
    With ActiveWorkbook.PublishObjects.Add(SourceType:=xlSourceRange, _
        Filename:=ThisWorkbook.Path & "\fichier_html.htm", Sheet:="Image", Source:="$A$1:$B$6", _
        HtmlType:=xlHtmlStatic, DivID:="Monimage")
            .Publish (True)
            .AutoRepublish = False
    End With


    Voilà
    0
    1. loicoss
       
      Bonjour et merci pour ta réponse.

      La macro que tu viens de me fournir peut-elle être mêlée à la mienne ?
      L'idée serait que je puisse importer ma mise en forme les autres cellules et l'image dans le même fichier htm.

      Merci d'avance
      0
    2. cs_Le Pivert Messages postés 8437 Statut Contributeur 730
       
      Non, mais tu peux mettre le texte de tes cellules B4 C4 comme ceci:

      'adapter l'emplacement de l'image A1:B6 texte en C1 et D1 a adapter
       Sheets("Image").Range("C1") = Sheets("html").Range("B4")
       Sheets("Image").Range("D1") = Sheets("html").Range("C4")
      With ActiveWorkbook.PublishObjects.Add(SourceType:=xlSourceRange, _
          Filename:=ThisWorkbook.Path & "\fichier_html.htm", Sheet:="Image", Source:="$A$1:$D$6", _
          HtmlType:=xlHtmlStatic, DivID:="Monimage")
              .Publish (True)
              .AutoRepublish = False
      End With


      pour plus de détail voir ici:

      https://docs.microsoft.com/fr-fr/office/vba/api/excel.publishobjects.add

      @+
      0