2017-05-30 2 views
1

J'essaie d'écrire un code batch find and replace pour les diapositives Power Point dans VBA mais j'obtiens l'erreur suivante: Compile Error Method or data member not found. Le débogueur met en surbrillance Formes dans PP.Shapes sur la ligne 13


Je n'ai pas beaucoup d'expérience avec VBA. J'ai rassemblé des idées de:
* Getting Started with VBA in PowerPoint 2010 (Office Dev Center)
* Power Point VBA-Find & Replace (YouTube)
* "Simple Macro importer des diapositives à partir d'un fichier" @ (VBA express Forum)Erreur lors de la recherche par lots et remplacement du code VBA pour les diapositives Power Point

Sub BatchFindReplace() 
Dim shp As Shape 
Dim strFileName As String 
Dim strFolderName As String 
Dim PP As Presentation 
'Directory 
strFolderName = "C:\Users\Emma\Desktop\temp1" 
strFileName = Dir(strFolderName & "\*.ppt*") 
Do While Len(strFileName) > 0 
Set PP = Presentations.Open(strFolderName & "\" & strFileName) 

'Find and Replace Code 
For Each shp In PP.Shapes 
If shp.HasTextFrame Then 
    If shp.TextFrame.HasText Then 
     shp.TextFrame.TextRange.Text = Replace(shp.TextFrame.TextRange.Text, "W", "kkk") 
    End If 
End If 
Next 

PP.Close 
strFileName = Dir 
Loop 
End Sub 
+0

La balise 'VBA' couvrira toutes les applications MS-Office. Vous n'avez pas à les étiqueter tous :) –

+0

Oh ok je vois :). –

Répondre

1

La propriété .Shapes est pas membre de Presentation mais Slide

'~~> Open the relevant powerpoint file 
Set PP = Presentations.Open(strFolderName & "\" & strFileName) 

'~~> Change this to the relevant slide which has the shape 
Set PPSlide = PP.Slides(1) 

For Each shp In PPSlide.Shapes 
    Debug.Print shp.Name 
Next shp 

Si vous voulez travailler avec toutes les formes dans toutes les diapositives, vous devrez boucle à travers des diapositives.

+1

Avec votre solution, j'ai maintenant un code vba de travail :): [link] (https://pastebin.com/7BTm6jE6) @ Siddharth Rout –