Mon problème ressemble beaucoup à la: " Comment Nommez un objet dans une diapositive PowerPoint? "mais juste sur le niveau de la diapositive. P>
Toute aide serait appréciée. P>
6 Réponses :
Vous ne pouvez pas définir manuellement le nom de la diapositive, mais avec un peu de code, c'est simple. Dans VBA, par exemple:
Sub NameThatSlide() ActivePresentation.Slides(1).Name = "Whatever You Like Here" End Sub
Cela modifie efficacement le nom de la glissière dans la fenêtre d'édition de la présentation de la diapositive. Toutefois, dans l'éditeur VBA, les diapositives toujours i> apparaissent avec leurs noms original i>, par exemple, "diaporama1" et "diapositive 32", etc. Il y a des lacunes où les diapositives sont supprimées. Existe-t-il un moyen d'obtenir le nom affiché dans la liste VBaproject "Microsoft PowerPoint Object" pour pouvoir être congruinant avec la propriété Nom de la diapositive (dans PowerPoint 2013)?
Je ne crois pas qu'il y ait. PowerPoint nomme chaque diapositive lors de sa création. Chaque diapositive dispose également d'une propriété .Name, que PPT se distingue vers la même chaîne que le nom de la diapositive initialement. C'est cette propriété .name, pas le nom interne de la diapositive, qui change lorsque nous définissons le nom .name. Il pourrait i> être possible de modifier le nom interne en modifiant la présentation XML. Je suis curieux: quel est le besoin de changer le nom?
Merci pour la réponse, @steve rindsberg. Le «besoin» est pour faciliter la programmation dans VBA. J'ai une "présentation" qui sera un outil de formation pour les étudiants. Il sera entièrement contrôlé par VBA afin que le code VBA contrôle lorsque l'étudiant est autorisé à continuer à la diapositive suivante, etc. Parce que j'ai réorganisé l'ordre des diapositives et effectué un grand nombre de diapositives "test", Confondre fonctionne avec la diapositive dans la vue d'édition où la diapositive a un nom sensible, puis basculant sur la vue VbaProject où la diapositive n'a qu'un chiffre qui ne coïncide pas avec le nom dans la vue d'édition.
Si c'est une question de contrôle de ce qui se passe lorsque l'étudiant clique sur un bouton sur une diapositive, vous pourriez être mieux à utiliser des formes régulières que vous avez attribuées à un paramètre d'action de macro exécuté au lieu des trucs ActiveX. Si vous démarrez la macro off avec quelque chose comme SUB RunMe (SST SHAPE), vous obtiendrez une référence à la forme cliquée dans la SST. osh.parent vous donne alors une référence à la glissière de la forme. Vous pouvez presque toujours le code de telle manière que vous n'avez pas besoin de maintenir différents lots de code pour chaque forme ActiveX. Et c'est plus fiable.
Merci encore, Rindsberg @ Steve. Je devrais probablement prendre vos conseils! :) La chose est, le code est assez compliqué, par exemple, en changeant l'ordre des questions à choix multiples à chaque fois que la présentation est exécuté, ce qui rend le backend facile à Réorganiser les éléments d'écriture dans le code plutôt que dans les formes puisque les différentes formes auront différentes réponses chaque cycle, ayant un code à déterminer et nécessitent des réponses d'enregistrement 1 seconde précision, le code qui utilise du texte à la parole avec le langage de la parole, des diapositives de re-présentation mal répondu, etc. donc, j'aimerais les noms de diapositives pour correspondre , eh bien, la propriété .name slide!
Il n'y a pas de fonctionnalité intégrée dans PowerPoint qui vous permet de modifier le nom d'une diapositive. Comme Steve mentionnait, vous devez le faire en utilisant le code VBA. La diapositive nom em> ne changera jamais en raison d'insertion plus de diapositives et qu'il restera la même même si vous fermez PowerPoint; Le nom de la diapositive définie dans le code VBA est persistant. Voici un certain code que j'ai écrit pour vous permettre de voir facilement le nom de la diapositive actuellement sélectionnée et de vous permettre de le renommer: '------------------------------------------------------------------
' NameSlide()
'
' Renames the current slide so you can refer to this slide in
' VBA by name. This is not used as part of the application;
' it is for maintenance and for use only by developers of
' the PowerPoint presentation.
'
' 1. In Normal view, click on the slide you wish to rename
' 2. ALT+F11 to VB Editor
' 3. F5 to run this subroutine
'------------------------------------------------------------------
Sub NameSlide()
Dim curName As String
curName = Application.ActiveWindow.View.Slide.name
Dim newName As String
retry:
newName = InputBox("Enter the new name for slide '" + curName + "', or press Cancel to keep existing name.", "Rename slide")
If Trim(newName) = "" Then Exit Sub
Dim s As Slide
' check if this slide name already exists
On Error GoTo SlideNotFound
Set s = ActivePresentation.Slides(newName)
On Error GoTo 0
MsgBox "Slide with this name already exists!"
GoTo retry
Exit Sub
SlideNotFound:
On Error GoTo 0
Application.ActiveWindow.View.Slide.name = newName
MsgBox "Slide renamed to '" + newName + "'."
End Sub
Ce script est très utile pour la programmation VBA: il vous permet de renommer une diapositive afin de pouvoir utiliser de manière fiable le nom de la diapositive dans votre code VBA.
Je ne suis pas certain que cela vous permettra de définir la propriété diapositive.name car je ne suis pas un programmeur VBA, mais de toute façon afaik, le moyen le plus simple de nommer des diapositives dans PowerPoint 2010 utilise la vue des contours. p>
Si vous positionnez votre souris la plus éloignée à gauche sur une diapositive créée, vous pouvez glisser vers la droite une sorte de trieur à glissière verticale. En haut de cette vitre, vous verrez deux onglets: Sélectionnez Contour Strong>, vous verrez chaque diapositive numérotée et une touche de gris grise qui vous permet de réorganiser vos diapositives. Si vous cliquez à droite de cela, vous pouvez taper n'importe quel nom que vous aimez, dites Dans le volet Vue principale, la diapositive aura alors Home Strong> Emblazé à travers elle. Vous pouvez ensuite laisser là-bas, soit le dissimuler en modifiant la couleur de la police à l'arrière-plan ou en déplaçant le texte en dehors du cadre de présentation. P>
BTW Vous pouvez utiliser ces noms dans des hyperliens. P>
Bien qu'il puisse y avoir une raison pour le faire, cela ne modifie malheureusement pas la propriété nom de la diapositive code>.
Utilisé la fonction Sous SplastFile () pour créer des diapositives individuelles à partir d'un pont de> 100 diapositives. Tout allait bien!! Mais quelqu'un peut-il me dire quel code dois-je utiliser pour renommer le fichier automatiquement, en supposant que chaque diapositive a un titre dans une zone de texte? Je souhaite que le titre de la diapositive soit le nom de fichier pour la nouvelle diapositive individuelle créée.
Voici le code que j'ai utilisé pour créer des diapositives individuelles (comme fichiers individuels), grâce à celui qui l'a posté en ligne. P>
Sous SplitFile ()
Dim LslidersperFile aussi longtemps
Dim LtotalSlides aussi longtemps
Dim Osourcepres comme présentation
Dim Otargetpres comme présentation
Dim Solder sous forme de chaîne
Dig Sext en tant que chaîne
Dim Sbasename en tant que chaîne
Dim LCounter aussi longtemps
Dim LPRESENTATIONSCount autant long 'Combien de fois allons-nous diviser en
Dim X aussi longtemps
Dim Lwindowstart aussi longtemps
Dim Lwindowend aussi longtemps
Dim SsplitPresName comme chaîne p> Oslide suivant
Sur Erreur Goto Errorhandler P> Infilenum = FreeFILE P> SSPLITRESNAME = SSFERDER & SBASENAME & _
"_" & Cstr (lwindowstart) & "-" & cstr (lwindowend) & "." & sex
Osourcepres.Savecopyas SsplitSeName, PPSAVAESDEFAULT
SET OTARGETPRES = PRESTIONS.OPEN (SSPLITRESNAME , TRUE) P> With otargetPres
For x = .Slides.Count To lWindowEnd + 1 Step -1
.Slides(x).Delete
Next
For x = lWindowStart - 1 To 1 Step -1
.Slides(x).Delete
Next
.Save
.Close
End With
Next ' lpresentationscount
Vous pouvez renommer une diapositive manuellement ou avec VBA. Une fois que vous savez comment, la porte s'ouvre sur des possibilités intéressantes, que je démontrerai avec le code ci-dessous.
Renommer manuellement des diapositives. Cette capacité est cachée dans le volet de propriétés de la rédaction de la VBA, mais il pas em> nécessite codage. P> Si le ruban de développeur n'est pas visible, activez-le: du ruban strong> Développeur strong>, cliquez sur l'élément de menu Appuyez sur les touches Développez " Microsoft PowerPoint Objets Strong>" P> LI>
Cliquez sur n'importe quelle diapositive pour la sélectionner. P> LI>
Appuyez sur la touche Modifier l'élément Le changement de nom de la diapositive peut ne pas apparaître immédiatement dans le volet VBA Project Explorer. Tant que le nom est correct dans le volet Propriétés, le nom a changé avec succès. P> Ce code VBA fera également le tour (Masquer la diapositive numéro 1): P>
Option Explicit
' DontPresentSlide - run macro while on a slide you wish to skip while presenting.
' The slide name will be appended with "NoPresent". You still
' need to run PrepToPresent before presenting to hide slide.
' PresentSlide - "NoPresent" will be removed from the slide. You still
' need to run PrepToPresent before presenting to hide slide.
' PrepToPesentSlides() - Unhide slides and objects you want presented and
' hide slides and objects you do NOT want presented.
' ShowNoPressnt() - show slides and shapes marked "NoPresent"
' HideNoPresent() - hide slides and shapes marked "NoPresent"
' DontPrintSlide - run macro while on a slide you wish to skip while presenting.
' The slide name will be appended with "NoPrint". You still
' need to run PrepToPresent before presenting to hide slide.
' PrintSlide - "NoPrint" will be removed from the slide. You still
' need to run PrepToPresent before presenting to hide slide.
' PrepToPrintSlides() - Unhide slides and objects you want printed and
' hide slides and objects you do NOT want printed.
' ShowNoPrint() - show slides and shapes marked "NoPrint"
' HideNoPrint() - hide slides and shapes marked "NoPrint"
' ShowHideSlides() - Hide or Unhide slides based on slide name.
' ShowHideShapes() - Hide or Unhide shapes based on shapes name.
Public Const cjaHide = False
Public Const cjaShow = True
Public Const cjaToggle = 2
Sub ShowHideSlides(NameContains As String _
, Optional LMR As String = "R" _
, Optional ShowSlide As Integer = False)
' Show or Hide slides based on slide name.
' Arguements:
' NameContains (string):
' slides with this string will be modified.
' LMR (string): enter L, M or R to indicate
' searching the Left, Middle or Right of
' the slide name, respectively.
' ShowSlide (integer):
' Show: True (-1)
' Hide: False (0)
' Toggle: 2
'
' To show or hide slides manually:
' Right-click the slide thumbnail, then click Hide Slide
' To rename slides,
' Use this VBA: ActiveWindow.View.Slide.Name = "NewSlideName"
' Or, edit the (Name) property in the VBA Properties window.
'
Dim sldCurrent As Slide
Dim found As Boolean
found = False
LMR = Trim(UCase(LMR))
If LMR <> "L" And LMR <> "M" Then LMR = "R"
'Loop through each slide in presentation.
For Each sldCurrent In ActivePresentation.Slides
'Match shape name left, right or middle as per LMR arguement.
'ActiveWindow.View.Slide.Name or Slide.SlideNumber
found = False
If LMR = "R" And LCase(right(sldCurrent.Name, Len(NameContains))) = LCase(NameContains) Then
found = True
ElseIf LMR = "L" And LCase(left(sldCurrent.Name, Len(NameContains))) = LCase(NameContains) Then
found = True
ElseIf LMR = "M" And InStr(1, LCase(NameContains), LCase(sldCurrent.Name)) Then
found = True
End If
'If match found, then set shape visibility per ShowShape arguement.
If found Then
If ShowSlide = True Then
ActivePresentation.Slides(sldCurrent.SlideNumber).SlideShowTransition.Hidden = msoFalse
ElseIf ShowSlide = False Then
ActivePresentation.Slides(sldCurrent.SlideNumber).SlideShowTransition.Hidden = msoTrue
Else
ActivePresentation.Slides(sldCurrent.SlideNumber).SlideShowTransition.Hidden = Not ActivePresentation.Slides(sldCurrent.SlideNumber).SlideShowTransition.Hidden
End If
End If
Next 'sldCurrent
End Sub
Sub ShowHideShapes(NameContains As String _
, Optional LMR As String = "R" _
, Optional ShowShape As Integer = False)
' Show or Hide shapes/objects based on object name.
' Arguements:
' NameContains (string):
' shapes with this string will be modified.
' LMR (string): enter L, M or R to indicate
' searching the Left, Middle or Right of
' the slide name, respectively.
' ShowSlide (integer):
' Show: True (-1)
' Hide: False (0)
' Toggle: 2
'
' To show, hide and/or rename objects:
' 1. Turn on Selection Pane via: Home Ribbon >
' Select > Selection Pane.
' 2. Double-click a shape name to rename it.
' 3. Click the eye icon to the far right to show/hide a shape.
Dim shpCurrent As Shape
Dim sldCurrent As Slide
Dim found As Boolean
found = False
LMR = Trim(UCase(LMR))
If LMR <> "L" And LMR <> "M" Then LMR = "R"
'Loop through each slide in presentation.
For Each sldCurrent In ActivePresentation.Slides
With sldCurrent
'Loop through each shape on current slide.
For Each shpCurrent In .Shapes
'Match shape name left, right or middle as per LMR arguement.
found = False
If LMR = "R" And right(shpCurrent.Name, Len(NameContains)) = NameContains Then
found = True
ElseIf LMR = "L" And left(shpCurrent.Name, Len(NameContains)) = NameContains Then
found = True
ElseIf LMR = "M" And InStr(1, NameContains, shpCurrent.Name) Then
found = True
End If
'If match found, then set shape visibility per ShowShape arguement.
If found Then
If ShowShape = True Then
shpCurrent.Visible = True
ElseIf ShowShape = False Then
shpCurrent.Visible = False
Else
shpCurrent.Visible = Not shpCurrent.Visible
End If
End If
Next 'sldCurrent
End With 'sldCurrent
Next 'sldCurrent
End Sub
Sub HideNoPrint()
' Hide slides and shapes you do NOT want printed.
'
' Run this macro to hide all slides and shapes that
' end with the string "NoPrint".
' Usage. Assume you have slides that contain animations that
' make the printed slide difficult or impossible to read.
' Let's further suppose you plan to present certain slides
' but not print them.
' 1. Add the"NoPrint" suffix to any shapes that clutter
' the printed page.
' 2. Add the "NoPrint" suffix to slides you don't want to
' print.
' 3. Run this macro to hide shapes and slides.
' 4. Print the slides.
' 5. Optionally, run the ShowNoPrint() macro in preparation
' for presenting the slides.
ShowHideShapes "NoPrint", "R", False
ShowHideSlides "NoPrint", "R", False
End Sub
Sub ShowNoPrint()
' Unhide slides and shapes that were hidden
' to prevent them from being printed in handouts.
'
ShowHideShapes "NoPrint", "P", True
ShowHideSlides "NoPrint", "P", True
End Sub
Sub HideNoPressent()
' Hide objects you do NOT want to present on screen.
'
' Run this macro to hide all slides and shapes that
' end with the string "NoPresent".
'
' Usage. Assume you have slides that contain supporting material
' that you wish to provide as printed handouts but not show.
' You can manually hide those slides and objects of course. I
' prefer to use these macros.
' 1. Add the"NoPresent" suffix to any shapes that you want
' to print to handouts but not show on-screen.
' 2. Add the "NoPresent" suffix to slides you want to
' print but not display on screen, such as reference slides.
' 3. Run this macro to hide the "NoPresent" shapes and slides.
' 4. Present your slides.
' 5. Optionally, run the ShowNoPresent() macro in preparation
' for printing the slides.
'
ShowHideShapes "NoPressent", "R", False
ShowHideSlides "NoPressent", "R", False
End Sub
Sub ShowNoPresent()
' Unhide objects that were hidden to prevent them from
' being presented on screen.
'
ShowHideShapes "NoPressent", "P", True
ShowHideSlides "NoPressent", "P", True
End Sub
Sub PrepToPrintSlides()
' Unhide objects you want printed and
' hide objects you do NOT want printed.
ShowNoPresent
HideNoPrint
End Sub
Sub PrepToPresentSlides()
' Unhide objects you want presented and
' hide objects you do NOT want presented.
ShowNoPrint
HideNoPresent
End Sub
Sub DontPresentSlide()
Dim RetVal, sldName As String
sldName = Application.ActiveWindow.View.Slide.Name
If InStr(1, sldName, "NoPresent", vbBinaryCompare) = 0 Then
RetVal = RenameSlide(sldName, sldName & "-NoPresent")
End If
HideNoPresent
End Sub
Sub PresentSlide()
Dim RetVal, sldName As String, strStart As String, newName As String
'Remove the NoPresent suffix from the current slide.
'get slide name
sldName = Application.ActiveWindow.View.Slide.Name
'Unhide slide
ActivePresentation.Slides(sldName).SlideShowTransition.Hidden = msoFalse
'remove "-NoPresent" from slide name
Do
strStart = InStr(1, sldName, "-NoPresent")
If InStr(1, sldName, "-NoPresent") Then
newName = left(sldName, strStart - 1) & right(sldName, Len(sldName) - strStart - 9)
RetVal = RenameSlide(sldName, newName)
End If
sldName = Application.ActiveWindow.View.Slide.Name
Loop Until InStr(1, sldName, "-NoPresent") = 0
'remove "NoPresent" from slide name
Do
strStart = InStr(1, sldName, "NoPresent")
If InStr(1, sldName, "NoPresent") Then
newName = left(sldName, strStart - 1) & right(sldName, Len(sldName) - strStart - 8)
RetVal = RenameSlide(sldName, newName)
End If
sldName = Application.ActiveWindow.View.Slide.Name
Loop Until InStr(1, sldName, "NoPresent") = 0
End Sub
Sub DontPrintSlide()
Dim RetVal, sldName As String
sldName = Application.ActiveWindow.View.Slide.Name
If InStr(1, sldName, "NoPrint", vbBinaryCompare) = 0 Then
RetVal = RenameSlide(sldName, sldName & "-NoPrint")
End If
HideNoPrint
End Sub
Sub PrintSlide()
Dim RetVal, sldName As String, strStart As String, newName As String
'Remove the NoPrint suffix from the current slide.
'get slide name
sldName = Application.ActiveWindow.View.Slide.Name
'Unhide slide
ActivePresentation.Slides(sldName).SlideShowTransition.Hidden = msoFalse
'remove "-NoPrint" from slide name
Do
strStart = InStr(1, sldName, "-NoPrint")
If InStr(1, sldName, "-NoPrint") Then
newName = left(sldName, strStart - 1) & right(sldName, Len(sldName) - strStart - 7)
RetVal = RenameSlide(sldName, newName)
End If
sldName = Application.ActiveWindow.View.Slide.Name
Loop Until InStr(1, sldName, "-NoPrint") = 0
'remove "NoPrint" from slide name
Do
strStart = InStr(1, sldName, "NoPrint")
If InStr(1, sldName, "NoPrint") Then
newName = left(sldName, strStart - 1) & right(sldName, Len(sldName) - strStart - 6)
RetVal = RenameSlide(sldName, newName)
End If
sldName = Application.ActiveWindow.View.Slide.Name
Loop Until InStr(1, sldName, "NoPrint") = 0
End Sub
Sub HideAllCovers()
' Run this macro to hide all Covers.
ShowHideShapes "Cover", "L", False
End Sub
Sub ShowAllCovers()
' Run this macro to hide all Covers.
ShowHideShapes "Cover", "L", True
End Sub
Sub HideAllAnswers()
' Run this macro to hide all Covers.
ShowHideShapes "Answer", "L", False
End Sub
Sub ShowAllAnswers()
' Run this macro to hide all Covers.
ShowHideShapes "Answer", "L", True
End Sub
Sub HideAllQuestions()
' Run this macro to hide all Covers.
ShowHideShapes "Question", "L", False
End Sub
Sub ShowAllQuestions()
' Run this macro to hide all Covers.
ShowHideShapes "Question", "L", True
End Sub
Sub ShowAll()
' Run this macro to hide all shapes (Covers and Answers).
ShowAllQuestions
ShowAllAnswers
ShowAllCovers
ShowNoPrint
End Sub
Sub HideAll()
' Run this macro to hide all shapes (Covers and Answers).
HideAllQuestions
HideAllAnswers
HideAllCovers
HideNoPrint
End Sub
Activer l'onglet "Développeur" dans "Fichier -> Options -> Personnaliser le ruban" (Détails: https://www.addintools.com/documents/powerpoint/where-is-developer-tab.html ) p>
Dans l'onglet Développeur, procédez comme suit et voyez l'image ci-dessous (en portugais, désolé) p>