11
votes

PowerPoint: Définir manuellement le nom de la diapositive

contexte: Une diapositive PowerPoint en C # a un diaporama de propriété.Name (contient généralement une valeur de chaîne arbitraire). Dans mon application C #, j'aimerais utiliser cette propriété pour identifier les diapositives (la diapositive est à peu fiable).

question: Comment puis-je définir manuellement la propriété diapositive.name dans l'application PowerPoint?

Mon problème ressemble beaucoup à la: " Comment Nommez un objet dans une diapositive PowerPoint? "mais juste sur le niveau de la diapositive.

Toute aide serait appréciée.


0 commentaires

6 Réponses :


5
votes

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


5 commentaires

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 apparaissent avec leurs noms original , 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 ê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!



14
votes

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


1 commentaires

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.



1
votes

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.

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: diapositives et contour . .

Sélectionnez Contour , 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 home .

Dans le volet Vue principale, la diapositive aura alors Home 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.

BTW Vous pouvez utiliser ces noms dans des hyperliens.


1 commentaires

Bien qu'il puisse y avoir une raison pour le faire, cela ne modifie malheureusement pas la propriété nom de la diapositive .



1
votes

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> xxx pré>

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


0 commentaires

3
votes

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>

  1. Si le ruban de développeur n'est pas visible, activez-le: fichier strong >> strong> Options strong >> Personnaliser le ruban strong >> Vérifiez le . Développeur fort> onglet principal. P> li>

  2. du ruban strong> Développeur strong>, cliquez sur l'élément de menu VISUAL BASIC FORT> pour ouvrir l'éditeur Visual Basic. P> LI>

  3. Appuyez sur les touches Ctrl + R fortes> pour accéder au volet Explorer du projet. P> LI>

  4. Développez " Microsoft PowerPoint Objets Strong>" P> LI>

  5. Cliquez sur n'importe quelle diapositive pour la sélectionner. P> LI>

  6. Appuyez sur la touche F4 forte> pour naviguer dans le volet Propriétés. P> LI>

  7. Modifier l'élément (nom) strong> et appuyez sur Entrée forte> pour appliquer le changement de nom. P> LI> OL>

    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
    


0 commentaires

2
votes

Activer l'onglet "Développeur" dans "Fichier -> Options -> Personnaliser le ruban" (Détails: https://www.addintools.com/documents/powerpoint/where-is-developer-tab.html )

Dans l'onglet Développeur, procédez comme suit et voyez l'image ci-dessous (en portugais, désolé)

  • Entrez l'onglet Développeur
  • Sélectionnez la diapositive cible
  • Si vous n'avez pas de contrôle X actif (boutons, boîtes de texte, etc.) dans la diapositive, ajoutez un bouton factice de l'onglet Developer
  • Sélectionnez ce bouton sur la diapositive et cliquez sur "Propriétés" à l'onglet Développeur
  • En haut de la fenêtre Propriétés, vous pouvez sélectionner une boîte déroulante dans laquelle vous pouvez sélectionner la glissière au lieu du bouton
  • Sélectionnez la diapositive et consultez ses propriétés de programmation, y compris le nom

     Entrez la description de l'image ici


0 commentaires