1. Avant propos ▲
Ce document a pour but de vous montrer comment, avec Visual Basic for Application, concevoir un complémment PowerPoint pour extraire les images d'une présentation (PPS ou PPT).
Il est en effet probable que vous souhaitiez récupérer par un autre mode qu'à la main, toutes les images d'une présentation en une seule opération.
Grâce à ce tutoriel, vous serez à même de développer un complément dédié à cela.
En effet, dans ce tutoriel, je vous ai montré comment concevoir un complément PowerPoint pour générer un diaporama à partir d'un dossier contenant des images.
Cette fois, c'est l'opération inverse dont il s'agit et en sortie, des images stockées aux formatx BMP - JPG - GIF - PNG ou WMF dans le dossier de la présentation...
Attention !
L'utilisation de ce tutoriel permet d'extraire des images de différentes présentations.
Je vous précise ici que cela doit rester dans le cadre d'un usage personnel et que l'exploitation d'images issues de présentations dont vous n'êtes pas propriétaire vous oblige à prendre connaissance des droits de copyright © à leur égard.
1-1. Remerciements ▲
Je tiens à remercier tout particulièrement toutes celles et ceux qui ont participé à la relecture de ce document en y incluant leurs remarques.
1-2. Contact ▲
Pour tout renseignement complémentaire, veuillez me contacter directement (Argyronet) par MP.
2. Présentation du projet▲
Le projet n'est au départ qu'une simple nouvelle présentation vierge et dépourvue de toute diapositive.
Le principe de réalisation consiste à attaquer directement le code VBA depuis l'interface de développement Visaul Basic Editor (VBE).
Le projet se compose de deux Modules et d'un objet UserForm.
Chargement du projet
Lorsque vous lancez PowerPoint en vue de créer ou d'ouvrir une présentation quelconque, rien ne se passe avant que vous interveniez sur les différents menus ou boutons issus des éventuelles boîtes de dialogue affichées...
Dans ce tutoriel sera exploité le menu Outils pour appeler l'extracteur d'images. Rien ne vous empêche d'en choisir un autre.
Vous pouvez également réaliser votre propre menu ou bien de faire en sorte que cette rubrique soit située dans un menu flottant.
2-1. Utilisation▲
Sélection de la présentation
Lorsque vous avez cliqué sur cette rubrique du menu Outils, le projet affiche une fenêtre (le UserForm) dans lequel se trouve les différents contrôles permettant :
- de sélectionner la présentation
- de définir le dossier d'extraction
- de définir le format d'extraction des images
Il ne vous reste plus alors :
- qu'à sélectionner une présentation aux formats *.pps ou *.ppt,
- qu'à définir le format de sortie,
- puis qu'à cliquer sur le bouton d'extraction pour démarrer le processus.
Formats de fichiers pour l'exportation
Ce projet vous permet d'extraire les images de la présentation sélectionnée et de les enregistrer dans le dossier cible aux formats suivants :
- BMP
- GIF
- JPG
- PNG
- WMF
Ces formats étant définis par des constantes intrinsèques dans PowerPoint, il est aisé de les exploiter...
Sélection de la présentation
Pour sélectionner la présentation contenant des images, j'ai choisi d'utiliser l'API GetOpenFileName() que vous connaissez certainement déjà et qui a pour rôle d'afficher cette boîte de dialogue, invitant l'utilisateur à sélectionner la présentation souhaitée...
Il n'y a pas d'événements particuliers en ce qui concerne la sélection du fichier.
Le fait d'annuler ne provoque pas d'erreur puisque la propriété Enabled des contrôles suivant dépend de la non nullité du nom de la présentation choisie...
Vous pouvez mettre en place d'autres routines liées ; celle que je vous propose reste la plus simple.
2-2. Démarrage de l'extraction▲
L'extraction des images débute aussitôt que vous cliquez sur le bouton "Extraire les images de la présentation"...
Une fois la procédure achevée, un message vous informe que les images sont maintenant extraites ou non :
Message d'extraction avec succès
Les images extraites sont stockées dans le dossier de la présentation...
Message d'extraction en échec
S'il n'y a aucune image, ce message s'affiche...
2-3. Chargement et déchargement du complément▲
Objectif du tutoriel
L'objectif de ce tutoriel est de vous montrer le coté pratique d'un complément dont le seul rôle est d'extraire les images d'une présentation...
Il reste - en quelques points - fidèle à la même méthodologie de développement que dans mon précédent tutoriel qui générait un diaporama minute...
Au sein du code VBA de ce nouveau projet, vous verrez alors :
- Comment créer un complément
- Comment charger et décharger ce complément
- Comment insérer un élément de menu dans un menu existant qui se supprime lorsque le complément est déchargé.
- Comment exploiter l'API GetOpenFileName filtrée sur plusieurs fichiers...
Pour charger le complément, une fois que vous l'avez développé bien entendu et que vous l'avez compilé, vous pouvez le charger ou le décharger depuis le menu Outils/Macros complémentaires...
Cette boîte de dialogue apparaît, vide si aucun complément n'a déjà été chargé ;
là, il vous faut cliquer sur Nouvelle (sous-entendu nouvelle macro complémentaire) pour qu'apparaisse la boîte de dialogue permettant de sélectionner le ou les compléments concernés.
Notez ici que le chemin par défaut des compléments créés est définit comme suit :
C:\Documents and Settings\Argyronet\Application Data\Microsoft\Macros complémentaires
où, ici, l'utilisateur en cours est Argyronet (c'est encore moi !!! )
Il vous apparatient de faire en sorte que ce dernier soit stocké dans un dossier accessible à tous les utilisateurs si toutefois vous souhaitez faire en sorte que ce complément soit disponible, quelle que soit la session chargée.
Dans ce cas précis ci-avant, seul Argyronet peut utiliser ce complément.
Une fois que vous avez cliqué sur OK, le message d'alerte d'activation des macros se fait suivre et vous invite à choisir si vous voulez ou non activer les macros de ce complément.
Ce message n'apparaît pas du tout si le niveau de sécurité est défini à Bas (non recommandé) et charge le complément ou si votre projet est signé numériquement.
Donc, réglez la sécurité sur Moyen de manière à ce que ce message s'affiche systématiquement.
Vous cliquez alors sur Activer les macros derrière quoi, le menu Outils se voit greffé d'une nouvelle commande comme cela est stipulé ici...
La fenêtre de la liste des compléments reste affichée :
- Le complément que vous avez sélectionné se voit alors précédé d'une croix pour signifier qu'il est chargé.
- La croix disparaît lorsqu'il est déchargé.
Cliquez alors sur Fermer et choisissez Extraire les images depuis le menu Outils.
La procédure CloseAddinsPopup() ferme par API la fenêtre des compléments dès que la fenêtre d'alerte des macros se ferme.
3. Code VBA du projet▲
Le code VBA du projet nécessite un certain degré de connaissance en matière de développement.
Il est vrai qu'il n'est pas commenté (Je commente très peu mon code en général) du fait que la lisibilité associée au nom des objets et procédures soit suffisament explicite pour un développeur habitué au VB ou au VBA.
3-1. Le module de gestion des fichiers▲
Ce module contient l'ensemble des API's nécessaires au projet associé aux fonctions qui s'occupent de fournir le nom du dossier des images et celles permettant la construction de la chaîne contenant les fichiers.
- d'appels de sélection de la présentation,
- de la fermeture de la boîte de dialogue des macros complémentaires,
Option
Explicit
Private
Const
WM_CLOSE =
&
H10
Private
Const
ADDIN_POPUP_CLASSNAME As
String
=
"#32770"
Private
Const
ADDIN_POPUP_TITLE As
String
=
"Macros complémentaires"
Private
Const
OFN_FILEMUSTEXIST =
&
H1000
Private
Const
OFN_HIDEREADONLY =
&
H4
Private
Const
OFN_EXPLORER As
Long
=
&
H80000
Private
Type
OPENFILENAME
lStructSize As
Long
hwndOwner As
Long
hInstance As
Long
lpstrFilter As
String
lpstrCustomFilter As
String
nMaxCustFilter As
Long
nFilterIndex As
Long
lpstrFile As
String
nMaxFile As
Long
lpstrFileTitle As
String
nMaxFileTitle As
Long
lpstrInitialDir As
String
lpstrTitle As
String
flags As
Long
nFileOffset As
Integer
nFileExtension As
Integer
lpstrDefExt As
String
lCustData As
Long
lpfnHook As
Long
lpTemplateName As
String
End
Type
Private
Declare
Function
SetForegroundWindow Lib
"user32"
(
ByVal
hwnd As
Long
) As
Long
Private
Declare
Function
FindWindow Lib
"user32"
Alias "FindWindowA"
_
(
ByVal
lpClassName As
String
, ByVal
lpWindowName As
String
) As
Long
Private
Declare
Function
PostMessage Lib
"user32"
Alias "PostMessageA"
_
(
ByVal
hwnd As
Long
, ByVal
wMsg As
Long
, ByVal
wParam As
Long
, lParam As
Any) As
Long
Private
Declare
Function
GetOpenFileName Lib
"comdlg32.dll"
Alias "GetOpenFileNameA"
_
(
pOpenfilename As
OPENFILENAME) As
Long
Public
Function
GetPresentation
(
ByRef
TargetFolder As
String
) As
String
Dim
OFName As
OPENFILENAME
Dim
strFilesName As
String
With
OFName
.lStructSize
=
Len
(
OFName)
.hwndOwner
=
0
.hInstance
=
0
.lpstrFilter
=
"Présentations PowerPoint (*.ppt, *.pps)"
+
vbNullChar
+
"*.ppt; *.pps"
+
vbNullChar
.lpstrFile
=
Space
$(
254
)
.nMaxFile
=
255
.lpstrFileTitle
=
Space
$(
254
)
.nMaxFileTitle
=
255
.lpstrInitialDir
=
vbNullString
.lpstrTitle
=
"Ouvrir une présentation Power Point"
.flags
=
OFN_HIDEREADONLY Or
OFN_EXPLORER Or
OFN_FILEMUSTEXIST
End
With
strFilesName =
IIf
(
GetOpenFileName
(
OFName), Trim
$(
OFName.lpstrFile
), vbNullString
)
If
Len
(
strFilesName) Then
TargetFolder =
Left
(
strFilesName, InStrRev
(
strFilesName, "\"
, -
1
, 1
))
strFilesName =
StripNullChar
(
Mid
(
strFilesName, InStrRev
(
strFilesName, "\"
, -
1
, 1
) +
1
))
Else
strFilesName =
vbNullString
TargetFolder =
vbNullString
End
If
GetPresentation =
strFilesName
End
Function
Private
Function
StripNullChar
(
ByVal
Buffer As
String
) As
String
Dim
intPosition As
Integer
intPosition =
InStr
(
Buffer, vbNullChar
)
If
intPosition >
0
Then
StripNullChar =
Left
(
Buffer, intPosition -
1
)
Else
StripNullChar =
Buffer
End
If
End
Function
Public
Function
AddDirSep
(
strPathName As
String
)
If
Right
(
Trim
(
strPathName), Len
(
"\"
)) <>
"\"
And
_
Right
(
Trim
(
strPathName), Len
(
"\"
)) <>
"\"
Then
strPathName =
RTrim
$(
strPathName) &
"\"
End
If
AddDirSep =
strPathName
End
Function
Public
Sub
CloseAddinsPopup
(
)
Dim
lngHWnd As
Long
lngHWnd =
FindWindow
(
ADDIN_POPUP_CLASSNAME, ADDIN_POPUP_TITLE)
Call
SetForegroundWindow
(
lngHWnd)
If
lngHWnd Then
PostMessage lngHWnd, WM_CLOSE, 0
&
, 0
&
End
If
End
Sub
- La fonction GetPresentation() : exploite GetOpenFileName() afin de sélectionner une présentation.
- La procédure StripNullChar() : supprime les caractères vbNullChar "Chr(0)" d'une chaîne passée en paramètre.
- La fonction AddDirSep() : ajoute le séparateur de fichier.
- La procédure CloseAddinsPopup() : ferme la boîte de dialogue "Macros complémentaires" dès que la fenêtre d'alerte des macros se ferme.
3-2. Le module de démarrage▲
C'est le module qui contient l'ensemble du code qui gère l'ouverture du complément...
- l'appel de la procédure Auto_Open
- l'appel de la procédure Auto_Close
- l'accès à l'affichage du UserForm
Option
Explicit
Const
MENU_NAME As
String
=
"Tools"
Const
MENU_NAME_FR As
String
=
"Outils"
Const
ACTION_TO_DO As
String
=
"ShowExtractorForm"
Const
TOOL_TIP_TEXT As
String
=
"Extraire les images de la présentation"
Const
ICON_CAPTION As
String
=
"Extraire les images"
Const
ICON_DESCRIPTION As
String
=
"Extraire les images d'une présentation PPS ou PPT"
Const
ICON_TAG As
String
=
"TAG_ExtractImage"
Sub
Auto_Open
(
)
Dim
oControl As
CommandBarControl
Dim
oCBMenu As
CommandBars
Dim
blnFound As
Boolean
On
Error
Resume
Next
Set
oCBMenu =
Application.CommandBars
For
Each
oControl In
oCBMenu
(
MENU_NAME).Controls
If
oControl.Tag
=
ICON_TAG Then
blnFound =
True
Exit
For
End
If
Next
oControl
If
blnFound =
False
Then
On
Error
Resume
Next
Set
oControl =
CommandBars
(
MENU_NAME).Controls.Add
(
msoControlButton)
With
oControl
.BeginGroup
=
msoTrue
.FaceId
=
1362
.OnAction
=
ACTION_TO_DO
.TooltipText
=
TOOL_TIP_TEXT
.Caption
=
ICON_CAPTION
.DescriptionText
=
ICON_DESCRIPTION
.Visible
=
msoTrue
.Style
=
msoButtonCaption
.Tag
=
ICON_TAG
End
With
End
If
Set
oControl =
Nothing
On
Error
GoTo
0
DoEvents
CloseAddinsPopup
End
Sub
Sub
Auto_Close
(
)
Dim
oControl As
CommandBarControl
Dim
oCBMenu As
CommandBars
On
Error
Resume
Next
Set
oCBMenu =
Application.CommandBars
For
Each
oControl In
oCBMenu
(
MENU_NAME).Controls
If
oControl.Tag
=
ICON_TAG Then
oControl.Delete
End
If
Next
oControl
Set
oCBMenu =
Nothing
End
Sub
Sub
ShowExtractorForm
(
)
frmMain.Show
vbModal
End
Sub
- La procédure Auto_Open() : permet d'installer le menu.
- La procédure Auto_Close() : permet de supprimer le menu.
- La procédure ShowExtractorForm() : permet l'affichage du UserForm.
3-3. Le formulaire UserForm▲
Pour concevoir le UserForm, insérer un nouvel objet UserForm dans votre projet et insérez-y :
- Un contrôle Image contenant une image représentative (ici, c'est du fait maison avec un éditeur d'images)
- Trois contrôles Label nommés
- lblPresentation (Nom de la présentation),
- lblTargetFolder (Image à enregistrer dans)
- lblExtension (Format de sortie)
respectivement pour chaque Textbox et le ComboBox. - Deux contrôles Textbox nommés
- txtPresentation (Fichier présentation)
- txtTargetFolder (Dossier de stockage). - Un contrôle ComboBox nommé cmbFormats (Extension des images)
- Deux contrôles CommandButton nommés
- cmdExtract et
- cmdCancel dûment intitulés comme dans l'illustration ci-après
J'ai logé les contrôles Textboxes et Labels dans un cadre pour faire plus esthétique et posé un séparateur entre ce dernier et les boutons pour les mêmes raisons.
Vous nommerez cet objet UserForm frmMain.
- Il y a quelques propriétés à définir ici :
- le titre qui est ici "PPS Pictures Extractor"
- la propriété Enabled à False pour les contrôles cmbFormats et cmdExtract
- la propriété Locked à True pour les contrôles txtPresentation et txtTargetFolder
- Vous les disposez de telle sorte à ce que vous obteniez quelque chose ressemblant à l'illustration ci-dessous.
Son module de classe contient l'ensemble du code qui gère notamment :
- l'affichage de la fenêtre de sélection de la présentation,
- l'insertion du nom et du chemin de la présentation dans les contrôles appropriés,
- la sélection du format de sortie,
- l'opération d'extraction des images.
Option
Explicit
Const
PPT_EXTENSION As
String
=
"ppt"
Const
PPS_EXTENSION As
String
=
"pps"
Private
Const
IMGFORMAT_GIF As
String
=
"GIF"
Private
Const
IMGFORMAT_JPG As
String
=
"JPG"
Private
Const
IMGFORMAT_PNG As
String
=
"PNG"
Private
Const
IMGFORMAT_BMP As
String
=
"BMP"
Private
Const
IMGFORMAT_WMF As
String
=
"WMF"
Private
Sub
UserForm_Initialize
(
)
With
cmbFormats
.AddItem
IMGFORMAT_BMP
.AddItem
IMGFORMAT_GIF
.AddItem
IMGFORMAT_JPG
.AddItem
IMGFORMAT_PNG
.AddItem
IMGFORMAT_WMF
End
With
End
Sub
Private
Sub
cmbFormats_Change
(
)
cmdExtract.Enabled
=
(
Len
(
cmbFormats.Text
) >
0
)
End
Sub
Private
Sub
cmdCancel_Click
(
)
Unload Me
End
End
Sub
Private
Sub
cmdSelectPresentation_Click
(
)
Dim
strPresentation As
String
Dim
strDirectory As
String
strPresentation =
GetPresentation
(
strDirectory)
txtPresentation.Text
=
strPresentation
txtTargetFolder.Text
=
strDirectory
cmbFormats.Enabled
=
(
Len
(
txtPresentation.Text
) >
0
)
End
Sub
Private
Sub
cmdExtract_Click
(
)
Dim
strMessage As
String
Dim
intPictureCount As
Integer
Dim
strPresentationPathFile As
String
strPresentationPathFile =
txtTargetFolder.Text
&
txtPresentation.Text
If
IsAValidPresentation
(
txtPresentation.Text
) Then
Presentations.Open
strPresentationPathFile, msoCTrue, msoFalse, msoTrue
intPictureCount =
ExtractPictureFromSlides
(
Application.Version
, txtTargetFolder.Text
, cmbFormats.Text
)
If
intPictureCount Then
strMessage =
Trim
(
Str
(
intPictureCount)) &
_
IIf
(
intPictureCount =
1
, " image extraite"
, " images extraites"
) &
_
" de la présentation ["
&
txtPresentation.Text
&
"]..."
MsgBox
"L´extraction est maintenant terminée..."
&
vbCrLf
&
vbCrLf
&
strMessage, vbInformation
, "Fin"
Else
MsgBox
"Il n´y a aucune image à extraire dans cette présentation..."
, vbInformation
, "Extraction échouée"
End
If
Unload Me
ActivePresentation.Close
Else
MsgBox
"Le fichier sélectionné n´est pas une présentation valide !"
, 48
, "Présentation invalide"
End
If
End
Sub
Private
Function
ExtractPictureFromSlides
(
ByVal
Version As
String
, ByVal
TargetFolder As
String
, _
ByVal
OutputFormat As
String
) As
Integer
Const
IMAGE_NAME As
String
=
"Image"
Dim
oPresentation As
Presentation
Dim
oSrcSlide As
Slide
Dim
oShapeRange As
ShapeRange
Dim
oShape As
Shape
Dim
oTrgSlide As
Slide
Dim
oTempShape As
Shape
Dim
I As
Integer
Dim
strExtension As
String
Dim
pptFormat As
Integer
pptFormat =
GetIntFormat
(
OutputFormat, strExtension)
I =
0
For
Each
oSrcSlide In
ActivePresentation.Slides
For
Each
oShape In
oSrcSlide.Shapes
Select
Case
oShape.Type
Case
msoPicture, msoEmbeddedOLEObject ', msoLinkedOLEObject, msoLinkedPicture
oShape.Export
TargetFolder &
IMAGE_NAME &
Format
(
I +
1
, "000"
) _
&
strExtension, pptFormat
I =
I +
1
End
Select
Next
oShape
Next
oSrcSlide
ExtractPictureFromSlides =
I
End
Function
Private
Function
GetIntFormat
(
ByVal
OutputFormat, ByRef
Extension) As
Integer
Dim
intPPShpFormat As
Integer
Select
Case
OutputFormat
Case
IMGFORMAT_BMP
intPPShpFormat =
ppShapeFormatBMP
Case
IMGFORMAT_JPG
intPPShpFormat =
ppShapeFormatJPG
Case
IMGFORMAT_PNG
intPPShpFormat =
ppShapeFormatPNG
Case
IMGFORMAT_GIF
intPPShpFormat =
ppShapeFormatGIF
Case
IMGFORMAT_WMF
intPPShpFormat =
ppShapeFormatWMF
End
Select
Extension =
"."
&
LCase
(
OutputFormat)
GetIntFormat =
intPPShpFormat
End
Function
Private
Function
IsAValidPresentation
(
ByVal
ppFile As
String
) As
Boolean
Dim
strExtension As
String
strExtension =
LCase
(
Mid
(
ppFile, InStrRev
(
ppFile, "."
, -
1
, vbBinaryCompare) +
1
))
Select
Case
strExtension
Case
PPT_EXTENSION, PPS_EXTENSION
IsAValidPresentation =
True
Case
Else
IsAValidPresentation =
False
End
Select
End
Function
- L'événement UserForm_Initialize : Rempli le ComboBox avec les 5 extensions de formats de fichiers par la méthode AddItem.
- L'événement cmbFormats_Change : Active le bouton cmdExtract.
- L'événement cmdCancel_Click : Décharge le formulaire et met fin au programme.
- L'événement cmdSelectPresentation_Click : Appelle GetPresentation() afin d'alimenter les TextBoxes puis donne la main au ComboBox.
- L'événement cmdExtract_Click : Permet après vérifications de lancer la procédure d'extraction.
- La procédure ExtractPictureFromSlides : Procédure d'extraction à proprement parler des images.
- La fonction GetIntFormat : Fonction retournant le format selon l'élément choisi dans le ComboBox.
- La fonction IsAValidPresentation : Petite fonction toute simple qui contrôle l'extension de la présentation.
On peut masquer la présentation ouverte en stipulant msoFalse plutôt que msoTrue dans l'appel de l'ouverture de la présentation
via Presentations.Open() au paramètre WithWindow.
Pour ce faire, vous modifierez la ligne contenant :
Presentations.Open(...) par Set oPresentation = Presentations.Open(...)
puis vous ajouterez le paramètre ByVal oPresentation As Presentation à la procédure ExtractPictureFromSlides
Vous n'ometterez alors pas de supprimer la déclaration Dim oPresentation As Presentation dans ExtractPictureFromSlides
et de la déclarer à la place dans cmdExtract_Click ; enfin, n'oubliez pas non plus de libérer l'objet avec Nothing.
Private
Sub
cmdExtract_Click
(
)
Dim
strMessage As
String
Dim
intPictureCount As
Integer
Dim
strPresentationPathFile As
String
Dim
oPresentation As
Presentation
strPresentationPathFile =
txtTargetFolder.Text
&
txtPresentation.Text
If
IsAValidPresentation
(
txtPresentation.Text
) Then
Set
oPresentation =
Presentations.Open
(
strPresentationPathFile, msoTrue, msoFalse, msoFalse)
intPictureCount =
ExtractPictureFromSlides
(
oPresentation, Application.Version
, txtTargetFolder.Text
, cmbFormats.Text
)
'[...]
ActivePresentation.Close
Set
oPresentation =
Nothing
'[...]
End
Sub
Private
Function
ExtractPictureFromSlides
(
ByVal
oPresentation As
Presentation, ByVal
Version As
String
, _
ByVal
TargetFolder As
String
, ByVal
OutputFormat As
String
) As
Integer
'[...]
For
Each
oSrcSlide In
oPresentation.Slides
'[...]
Next
oSrcSlide
'[...]
End
Sub
4. Comment cela fonctionne t-il ?▲
1 - Le principe est relativement simple :
Le chargement de l'application entraîne l'exécution de la procédure Auto_Open() qui installe le menu approprié dans le menu Outils.
Lorsque l'utilisateur charge le complément depuis la liste des macros complémentaires (à faire une seule et unique fois) le même phénomène se produit.
2 - Déroulement :
Lorsque l'utilisateur clique sur le menu pour extraire des images d'une présentation, le programme affiche le UserForm afin que la sélection de la présentation soit possible.
Il doit alors choisir la présentation à partir du bouton Parcourir représenté par 3 petits points.
3 - Sélection de la présentation :
Le programme ensuite appelle l'ouverture de la boîte de dialogue des fichiers par le biais de la fonction GetOpenFileName() sur le dernier dossier déjà sélectionné dès la seconde utilisation.
Le paramètre TargetFolder reçoit le chemin alors que la fonction retourne le nom du fichier après avoir décomposé la chaîne complète.
4 - Extraction des images :
Une boucle s'établit donc avec l'exploitation de deux boucles For/Next imbriquées qui pour l'une compte les diapositives et l'autre, les objets ShapeRange susceptibles de contenir une image :
Pour chacun de ces objets, un examen du type correspondant à msoPicture ou msoEmbeddedOLEObject permet de considérer que cela représente une image conforme...
La procédure d'export s'effectue alors avec un compteur de 1 à n et à l'aide de la constante IMAGE_NAME puis compose un nom de fichier du type Image000.jpg incrémenté de 1 à n jusqu'au dernier slide de la présentation.
4 - Visualisation :
Lorsque la cycle a terminé le parcours de toutes les diapositives, un message apparaît pour informer l'utilisateur du nombre d'images extraites si la présentation en contenait.
La présentation sélectionnée est alors fermée...
5. Création du complément▲
La dernière étape consiste à générer le complément.
5-1. Sauvegarde du projet▲
- Commencez par enregistrer votre projet au format Présentation PowerPoint (PPT) sous un nom explicite
de manière à garder une source modifiable ; - Une fois cela fait, testez votre projet en appuyant sur F5 dans la procédure Auto_Open();
5-2. Les tests▲
- Réduisez l'éditeur VBE;
- Sélectionnez dans le menu Insertion la rubrique Extraire les images: la procédure doit s'exécuter aussitôt ;
- Sélectionnez une présentation contenant des images ;
- C'est tout...
5-3. La génération du complément▲
Une fois que vos tests sont concluants, enregistrez votre projet au format Macro complémentaire PowerPoint (PPA).
C'est terminé.
6. Conclusion ▲
Ce tutoriel va vous permettre de connaître l'étendue de quelques possibiltés intéressantes réalisables avec PowerPoint.
Il est évident que cette application n'est pas vouée à être exploitée en tant que telle comme les autres applications Office mais, il peut être intéressant de connaître et mettre en place ce genre de processus pour par exemple, extraire les images et si les droits de copyright vous le permettent, les retoucher ou les exploiter pour une autre utilisation.
Les possibiltés sont relativement vastes compte tenu du fait que ce sont les idées qui vous permettront d'exploiter ce tutoriel.
Si vous rencontrez des difficultés ou si j'ai omis de préciser quelque chose qui reste obscur, n'hésitez pas à m'en faire part.