[RESOLU] VBA : Export d'un tableau Excel en HTML (aligné à gauche et non centré)

seb_sams

XLDnaute Nouveau
Bonjour à tous,

En VBA, je copie-colle un tableau Excel dans un email Outlook (en exportant d'abord le tableau en HTML).

J'ai pu faire cela grâce aux auteurs d'un code qui se trouve sur FAQ MS-Excel

Il y a quand même un problème, c'est que dans l'email, le tableau est centré au lieu d'être aligné à gauche.

Je pense qu'il y a un paramètre à régler dans l'instruction :
Code:
.ActiveWorkbook.PublishObjects.Add(4, "C:\Temp\XLRange.htm", rngeSend.Parent.Name, rngeSend.Address, 0, "", "").Publish True

Est-ce que quelqu'un sait comment changer pour avoir un alignement à gauche ?

Merci d'avance pour votre aide,
Sebastien
 
Dernière édition:

seb_sams

XLDnaute Nouveau
Re : VBA : Export d'un tableau Excel en HTML (aligné à gauche et non centré)

Bonsoir,

Après de nouvelles recherches, j'ai finalement trouvé une réponse tout seul (enfin grâce à Zweet sur [XL-2010] envoi mail outlook avec vba excel - Forum des professionnels en informatique).

Alors, ça n'est pas aussi simple que changer un paramètre dans l'instruction PublishObjects.Add mais c'est relativement simple quand on y pense.

Pour ceux que ça intéresse, dans la fonction qui va lire le fichier html, il faut rajouter une ligne pour changer le texte center par left (pour alignement à gauche) ou right (pour alignement à droite).

Code:
sTemp = Replace(sTemp, "align=center x:publishsource=", "align=left x:publishsource=")

J'espère que ça aidera certaines personnes.

Bonne soirée,
 

Benoit84

XLDnaute Nouveau
Bonjour
Merci pour ce post, j'ai pu adapter le code "alignement à gauche"

Un truc de bizarre tout fonctionne avec le code ci-dessous dans une nouveau fichier,
par contre quand j’insère ce code dans un fichier existant, le centrage ne se fait pas
d'où ça peut venir ?
Pouvez-vous m'aider ?
Merci d'avance

voici mon code (adapté des différents auteurs merci à eux) :
__________________________________________________________________________________________
Public Function ReadFile(sFileName) As String

Dim fso As Object, fFile As Object
Dim sTemp As String

Set fso = CreateObject("Scripting.FileSystemObject")
Set fFile = fsOpenTextFile(sFileName, 1, False)
sTemp = fFile.ReadAll
sTemp = Replace(sTemp, "align=center x:publishsource=", "align=left x:publishsource=")


fFile.Close

Set fFile = Nothing
ReadFile = sTemp

End Function
__________________________________________________________________________________________
Sub PrepareOutlookMail(ByVal sFileName As String)

Dim appOutlook As Outlook.Application
Dim oMail As Outlook.MailItem

Set appOutlook = CreateObject("Outlook.Application")
If Not (appOutlook Is Nothing) Then

Set oMail = appOutlook.CreateItem(olMailItem)
oMail.HTMLBody = ReadFile(sFileName)

oMail.Display

Set oMail = Nothing
Set appOutlook = Nothing

End If

End Sub
__________________________________________________________________________________________
Sub SendRangeByMail()

Dim rngeSend As Range

With Application

On Error Resume Next
Set rngeSend = Range("c5:j12")

.ActiveWorkbook.PublishObjects.Add(4, "C:\Users\Public\XLRange.htm", rngeSend.Parent.Name, rngeSend.Address, 0, "", "").Publish True
Call PrepareOutlookMail("C:\Users\Public\XLRange.htm")
Kill "C:\Users\Public\XLRange.htm"

End With '
End Sub
 
Dernière édition:

Statistiques des forums

Discussions
314 653
Messages
2 111 578
Membres
111 205
dernier inscrit
Adrien25