IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

VBA PowerPoint Discussion :

Enregistrement de toutes les images dans un dossier


Sujet :

VBA PowerPoint

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Février 2008
    Messages
    110
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 110
    Points : 46
    Points
    46
    Par défaut Enregistrement de toutes les images dans un dossier
    Bonjour,
    Je souhaiterai exporter dans un dossier à définir toutes les images contenues dans une présentation PPT; l'exportation devant se faire dans le format natif de chaque image.
    Avez vous une idée dans la manière de prendre ce sujet ? Est ce faisable ?

    NB: bien entendu autrement qu'en cliquant sur chaque image et en faisant un 'enregistrer sous...'
    Cdlt
    Merci

  2. #2
    Invité
    Invité(e)
    Par défaut
    Bonjour

    Il y a ce complément qui pourra t'aider : Réaliser un complément PowerPoint pour extraire les images d'une présentation

    Mais je ne pense pas que tu puisses récupérer le format d'origine.

    Philippe

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Février 2008
    Messages
    110
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 110
    Points : 46
    Points
    46
    Par défaut réponse export images natives
    Merci pour cette orientation.

    Tout d'abord, mon objectif était de trouver les images les plus lourdes. J'ai réussi dans un premier temps à exporter chaque diapo dans des fichier reconstitués .wmf. Et ça me donne une excellente idée de là où sont les problèmes de taille d'image. Voici le code:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Sub Extract_diapo()
    ActivePresentation.SaveAs FileName:="C:\Images_present", FileFormat:=ppSaveAsMetaFile, EmbedTrueTypeFonts:=msoFalse
    End Sub
    dans un second temps, je viens d'utiliser ton code qui fonctionne très bien mais qui m'impose un format de sortie des images. Je souhaiterai conserver l'origine de création de chaque image et donc le poids de chaque image par son fichier d'export. Dans ton code ci-dessous, il faudrait certainement que je ramène la ligne "pptFormat" dans la boucle "For each oShape" mais je ne m'en sors pas... HELP...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    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
    Enfin, j'ai quand même un souci avec le résultat. Avec le code ci-dessous (fait à mon humble petit niveau), je compte les images de mon doc. Je les ai passé en revue une à une via la ligne de commande MsgBox. Mon compteur arrive à 116 images. Avec l'export ci-dessus, j'exporte 105 images... Problème.
    1 - J'ai recherché dans l'aide les définitions des divers "Type" sans les trouver. Quelqu'un peut-il m'aider ? Mon code n'est pas très canonique mais il est clair que mon document à 116 images.
    2 - Je n'ai pas fait le jeu des 7 erreurs sur ma centaines d'images. Mais avez-vous des idées ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    Sub Macro1()
    compteur = 0
    For I = 1 To ActivePresentation.Slides.Count
        ActivePresentation.Slides(I).Select
        For J = 1 To ActivePresentation.Slides(I).Shapes.Count
     
            ActivePresentation.Slides(I).Shapes(J).Select
     
    'je supprime de mon compteur tous les types remontés qui ne sont pas des images
    If ActivePresentation.Slides(I).Shapes(J).Type = 1 Then GoTo xx
    If ActivePresentation.Slides(I).Shapes(J).Type = 14 Then GoTo xx
    If ActivePresentation.Slides(I).Shapes(J).Type = 17 Then GoTo xx
    If ActivePresentation.Slides(I).Shapes(J).Type = 9 Then GoTo xx
    If ActivePresentation.Slides(I).Shapes(J).Type = 5 Then GoTo xx
    If ActivePresentation.Slides(I).Shapes(J).Type = 19 Then GoTo xx
     
    ' les Types 6, 11 et 13" sont des images...
    'If ActivePresentation.Slides(I).Shapes(J).Type = 6 Then GoTo xx
    'If ActivePresentation.Slides(I).Shapes(J).Type = 13 Then GoTo xx
    'If ActivePresentation.Slides(I).Shapes(J).Type = 11 Then GoTo xx
     
    MsgBox ActivePresentation.Slides(I).Shapes(J).Type
    compteur = compteur + 1
    xx:
        Next J
    Next I
    MsgBox compteur
    End Sub
    Merci encore. Cordialement.

Discussions similaires

  1. Réponses: 5
    Dernier message: 29/10/2010, 23h14
  2. Réponses: 2
    Dernier message: 23/12/2009, 12h05
  3. Réponses: 9
    Dernier message: 18/02/2008, 11h25
  4. Enregistrer les Email dans un dossier de explorateur
    Par Vbapprentis dans le forum VBA Outlook
    Réponses: 11
    Dernier message: 25/09/2007, 11h59
  5. imprimer toutes les images d'un dossier
    Par chat84 dans le forum Access
    Réponses: 1
    Dernier message: 19/05/2006, 14h45

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo