OVH Cloud OVH Cloud

Info - Macro Publisher

1 réponse
Avatar
Clément Marcotte
Bonjour,

Pour répondre à une question sur un autre forum, j'ai été amené à écrire une
macro-commande pour Publisher (2002 et 2003, certain, 2007, je ne sais pas).
Il s'agit de prendre une document Word, de l'ouvrir avec Publisher et
d'enregistrer chaque page sous un format d'image, ce que Pub peut, mais pas
Word. Elle est sûrement perfectible, mais là il est tard (ou tôt, presque 1
h 30 du matin) et j'ai un peu envie d'aller au dodo. Telle qu'elle est
écrite, elle ne peut prendre qu'un fichier Word à la fois. Pour les "pages
intérieures", l'image contient 2 pages à la fois.


Sub wordenimages()
'Clément Marcotte
'Amos (Québec) Canada
Dim DialogueOuvrir As FileDialog
Dim i As Integer, j As Integer
Dim fichier As String
Dim ledocument As Object
'Ouvrir la boîte de dialogue
'pour ouvrir le fichier Word.
'Pour sélectionner plus d'un fichier
'à la fois, mettre AllowMultiSelect à true
Set DialogueOuvrir = Application.FileDialog( _
Type:=msoFileDialogOpen)
With DialogueOuvrir
.AllowMultiSelect = False
.Title = "Ouvrir un fichiers Word"
.Filters.Add "Documents Word", "*.doc; *.rtf, 1"
.Show
End With
'Il faut ouvrir une deuxième instance de Publisher
'Pour réussir à ouvrir le document Word
Dim appPub As New Publisher.Application
appPub.Open FileName:=DialogueOuvrir.SelectedItems(1), _
ReadOnly:=True, AddToRecentFiles:=False, _
SaveChanges:=pbPromptToSaveChanges
appPub.ActiveWindow.Visible = True
'Enregistrer les pages au format JPG.
'Pour les pages intérieures, c'est 2 pages dans
'le même fichier (en regard, comme ils disent).
'Je suppose que pour d'autres formats
'supportés par Publisher, il suffit de changer
'l'extension. Pas envie d'essayer.
For j = 1 To appPub.ActiveDocument.Pages.Count
fichier = DialogueOuvrir.SelectedItems(1)
fichier = Right(fichier, Len(fichier) - InStrRev(fichier, "\") - 1)
fichier = Left(fichier, Len(fichier) - 4)
'Ajuster "c:\copie\images" et le nom de fichier
'selon les besoins
appPub.ActiveDocument.Pages(j).SaveAsPicture _
("c:\copie\images\" _
& fichier & "-page " & j & ".jpg")
Next
'Fermer la deuxième instance de Publisher
'répondre oui pour garder le fichier
appPub.Quit
Set appPub = Nothing
MsgBox ("Conversion du fichier, terminée")
End Sub

1 réponse

Avatar
JLG
Bonjour Clément

ça a l'air de marcher sous Publisher 2007 (Beta)


merci pour la macro

--
retirer "toto" de mon adresse E-mail



Clément Marcotte wrote:
Bonjour,

Pour répondre à une question sur un autre forum, j'ai été amené à
écrire une macro-commande pour Publisher (2002 et 2003, certain,
2007, je ne sais pas). Il s'agit de prendre une document Word, de
l'ouvrir avec Publisher et d'enregistrer chaque page sous un format
d'image, ce que Pub peut, mais pas Word. Elle est sûrement
perfectible, mais là il est tard (ou tôt, presque 1 h 30 du matin) et
j'ai un peu envie d'aller au dodo. Telle qu'elle est écrite, elle ne
peut prendre qu'un fichier Word à la fois. Pour les "pages
intérieures", l'image contient 2 pages à la fois.

Sub wordenimages()
'Clément Marcotte
'Amos (Québec) Canada
Dim DialogueOuvrir As FileDialog
Dim i As Integer, j As Integer
Dim fichier As String
Dim ledocument As Object
'Ouvrir la boîte de dialogue
'pour ouvrir le fichier Word.
'Pour sélectionner plus d'un fichier
'à la fois, mettre AllowMultiSelect à true
Set DialogueOuvrir = Application.FileDialog( _
Type:=msoFileDialogOpen)
With DialogueOuvrir
.AllowMultiSelect = False
.Title = "Ouvrir un fichiers Word"
.Filters.Add "Documents Word", "*.doc; *.rtf, 1"
.Show
End With
'Il faut ouvrir une deuxième instance de Publisher
'Pour réussir à ouvrir le document Word
Dim appPub As New Publisher.Application
appPub.Open FileName:=DialogueOuvrir.SelectedItems(1), _
ReadOnly:=True, AddToRecentFiles:úlse, _
SaveChanges:=pbPromptToSaveChanges
appPub.ActiveWindow.Visible = True
'Enregistrer les pages au format JPG.
'Pour les pages intérieures, c'est 2 pages dans
'le même fichier (en regard, comme ils disent).
'Je suppose que pour d'autres formats
'supportés par Publisher, il suffit de changer
'l'extension. Pas envie d'essayer.
For j = 1 To appPub.ActiveDocument.Pages.Count
fichier = DialogueOuvrir.SelectedItems(1)
fichier = Right(fichier, Len(fichier) - InStrRev(fichier, "") - 1)
fichier = Left(fichier, Len(fichier) - 4)
'Ajuster "c:copieimages" et le nom de fichier
'selon les besoins
appPub.ActiveDocument.Pages(j).SaveAsPicture _
("c:copieimages" _
& fichier & "-page " & j & ".jpg")
Next
'Fermer la deuxième instance de Publisher
'répondre oui pour garder le fichier
appPub.Quit
Set appPub = Nothing
MsgBox ("Conversion du fichier, terminée")
End Sub