XL 2016 VBA - Range to HTML incluant les objets de la feuille (boutons, images, ...)

Dudu2

XLDnaute Barbatruc
Bonjour,

Je n'ai rien trouvé qui fonctionne pour convertir un Range en HTML qui inclurait tout ce qu'il y a dans le Range en question.

J'ai bien récupéré la fonction de Ron de Bruin omni-présente sur le Web qui fonctionne uniquement pour les valeurs de cellules et leurs formats, sauf pour les tableaux structurés qui ne sont pas en exclusivité dans le Range qui perdent alors leurs formats (qui n'en sont pas vraiment !).
 

Pièces jointes

  • Classeur1.xlsm
    261.1 KB · Affichages: 11

patricktoulon

XLDnaute Barbatruc
ah!!.. ok je change

le code userform
VB:
Private Sub CommandButton1_Click()
    Dim Cod64$, ImG As Object, cc, chemin$
    chemin = ThisWorkbook.Path & "\Penguins.jpg"
    With WebBrowser1
        .Navigate "about:blank"
        Do While .ReadyState < 4: DoEvents: Loop
        Set ImG = .Document.body.appendchild(.Document.createElement("img"))
        .Document.body.appendchild (.Document.createElement("br"))
        Do While .Busy: DoEvents: Loop
        With ImG

            .src = "data:image/" & "jpg" & ";base64," & Base64EncodeFile(chemin)

            cc = Split(ImG.outerhtml, "base64,")(1)
            t1 = "les 100 premiers caratères DU SRC DE L'IMAGE" & vbCrLf & Left(cc, 100)
            t1 = t1 & vbCrLf & "*****************************************************************"
            t1 = t1 & vbCrLf & "les 100 derniers caratères " & vbCrLf & Right(cc, 100)





            t2 = "les 100 premiers caratères retournés par la fonction " & vbCrLf & Left(Base64EncodeFile(chemin), 100)
            t2 = t2 & vbCrLf & "*****************************************************************"
            t2 = t2 & vbCrLf & "les 100 derniers caratères " & vbCrLf & Right(Base64EncodeFile(chemin), 100)

            .Height = 100
            .Style.Border = "1pt solid red"

        End With
        Set div = .Document.body.appendchild(.Document.createElement("div"))
        With div.Style: .overflow = "scroll": .WordWrap = "break-word": .Position = "absolute": .Width = 290: .Height = 100: .Left = 210: .Top = 10: End With
        div.innerhtml = Base64EncodeFile(chemin)

        x = .Document.body.innerhtml
        .Document.write x
    End With
End Sub
 

Dudu2

XLDnaute Barbatruc
1660672991417.png
 

Dudu2

XLDnaute Barbatruc
Bon, j'ai compris, je vais conserver ce Inline en Base64 comme une option de représentation du HTML.
Et pour ce
1660673184494.png
d'Outlook, je vais créer une option pour remplacer les src= par les cid=.
Mais bon pas ce soir parce que j'ai les neurones en compote.
Bonne soirée
 

patricktoulon

XLDnaute Barbatruc
ben c'est ce que je t'ai dis en page 2 le base64 c'est pour un fichierhtml en lecture mais pour le mail il faut oublier
cela dis dans les versions antérieures de outlook on pouvait récupérer le mime
peut être est ce toujours possible faudra que je fasse des recherches
je vais voir pour le streamer

pourrais tu me faire ton dernier exemple mais pas dans le dossier temps plutot sur le bureau j'ai essayé mais ca me sort que le fichier html le dossier je sais pas ou il va
 

Dudu2

XLDnaute Barbatruc
Le dossier images il va au même endroit que le fichier .htm.
D'ailleurs je ne le gère pas, c'est automatique.

Sinon j'ai essayé avec les CID. Ca semblait simple mais ça ne marche pas ! Et là je suis à cours d'idées.
 

patricktoulon

XLDnaute Barbatruc
re
je vais chercher j'avais donné un exemple avec plusieurs image
il faut a tout pris que le CSS soit inline sinon ça ne peut pas marcher
tu te prends tro la tete a essayer avec la methode publier c'est imbuvable a normaliser pour outlook et autres app mail

du coup de mon coté avec le webbrowser j'ai encore trouvé une astuce
à savoir:
exporter les drawingobjects en png avec transparence et translucidité conservées

ça fait des années que je cherchait ça
du coup maintenant j'ai tout
mon range to html by userform
et le code html obtenu est largement plus propre et intelligible pour celui qui a un minimum de base en code html

et maintenant mon shape to pngfile avec userform

demo.gif


je l'adore ce webbrowser je vais voir si il peut me faire la cuisine aussi ;)
 

Dudu2

XLDnaute Barbatruc
En fait cette daube d'Outlook, non seulement ne sais pas traiter le Base64 inline que tout les afficheurs d'HTML savent gérer, mais en plus il cafouille sur d'autres subtilités du HTML que les autres savent aussi gérer. C'est vraiment de la grosse daube MS !

Outlook:
1660747975047.png

Thunderbird:
1660748026344.png
 

Discussions similaires

Statistiques des forums

Discussions
312 610
Messages
2 090 217
Membres
104 452
dernier inscrit
hamzamounir