J'ai un fichier contenant 50 diapositives. J'ai besoin de créer 50 fichiers différents contenant chacun l'une des diapositives. Je suppose que le moyen le plus rapide inclut VBA, mais je ne sais pas comment demander à VBA de créer un nouveau fichier, puis de revenir au maître.
3 Réponses :
En supposant que vous vouliez dire "créer 50 présentations", cela fonctionnera. Créez le dossier de destination avant d'exécuter le code:
Sub ExportSlides()
For X = 1 To ActivePresentation.Slides.Count
ActivePresentation.Slides(X).Export "c:\temp\slide" & X & ".pptx", "PPTX"
Next X
End Sub
J'ai enfin découvert ceci:
Sub ExportSlides()
Dim oTempPres As Presentation
Dim X As Long
For X = 1 To ActivePresentation.Slides.Count
sFileName = "C:\Raw\Slide__" & X & ".pptx"
ActivePresentation.SaveCopyAs sFileName
Set oTempPres = Presentations.Open(sFileName, , , False)
For Y = (X + 1) To oTempPres.Slides.Count
oTempPres.Slides(X + 1).Delete
Next
For Y = 1 To X - 1
oTempPres.Slides(1).Delete
Next
oTempPres.Save
oTempPres.Close
Next X
End Sub
Où l'as tu trouvé?
Ce code que j'avais pour un projet similaire devrait fonctionner pour diviser chaque fichier PPT dans son fichier PPT et l'enregistrer dans le dossier qui contient le fichier PPT d'origine.
Quelques mises en garde:
En fonction des paramètres de sécurité de votre environnement, vous devrez peut-être également définir le .pptm contenant ce VBA en tant que document de confiance avant qu'il ne fonctionne.
Option Explicit
Sub OnPresentationOpen()
UserForm1.Show
End Sub
Public Sub ProcessPowerPoint(pptCalled)
Dim pptMainPowerPt As Presentation
Dim slideCount As Long
Dim i As Long
Dim cleanSlide As Slide
Dim newSaveName As String
Set pptMainPowerPt = Presentations.Open(pptCalled)
slideCount = ActivePresentation.Slides.Count
' Removes all animations from entire document first
For Each cleanSlide In ActivePresentation.Slides
For i = cleanSlide.TimeLine.MainSequence.Count To 1 Step -1
'Remove Each Animation
cleanSlide.TimeLine.MainSequence.Item(i).Delete
Next i
Next cleanSlide
Debug.Print "The number of slides is "; slideCount
Debug.Print "The name that is showing is "; pptCalled
Debug.Print ActivePresentation.Name
newSaveName = Left(pptCalled, InStr(pptCalled, ".") - 1)
Debug.Print "Substring name is "; newSaveName
For i = 1 To slideCount
Dim newPresentation As Presentation
Dim newName As String
Dim currentSlide As Slide
newName = newSaveName + "_Slide_" & i & ".pptx"
Set currentSlide = pptMainPowerPt.Slides.Item(i)
Set newPresentation = Application.Presentations.Add
currentSlide.Copy
newPresentation.Slides.Paste
newPresentation.SaveAs (newName)
newPresentation.Close
Next
pptMainPowerPt.Close
End Sub
p >
boucle sur les diapositives, ajouter une nouvelle présentation à chaque itération, copier la diapositive dans une nouvelle présentation, enregistrer, fermer une nouvelle présentation.