Macro export htm avec image du classeur

Fermé
loicoss - 15 mars 2019 à 09:36
cs_Le Pivert Messages postés 7903 Date d'inscription jeudi 13 septembre 2007 Statut Contributeur Dernière intervention 11 mars 2024 - 18 mars 2019 à 13:56
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
A voir également:

1 réponse

cs_Le Pivert Messages postés 7903 Date d'inscription jeudi 13 septembre 2007 Statut Contributeur Dernière intervention 11 mars 2024 728
18 mars 2019 à 11:19
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
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
cs_Le Pivert Messages postés 7903 Date d'inscription jeudi 13 septembre 2007 Statut Contributeur Dernière intervention 11 mars 2024 728
Modifié le 18 mars 2019 à 13:57
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