Hi all.
After using this a little, I've made a few adjustments.
- Added a few comments in the start of the script to tell clearly how to use it.
- Commented out the 'On Error Resume Next', as it might hide a failure (I'd rather know when this is not working and debug WHY or WHERE it's not working).
- Added (commented out) a MsgBox indicating the slide # so you can tell where something failed (use only if debugging).
- Added an additional verification forcing a custom error in case the source and target presentations' slide count do not match. If for a reason you know those will not match, you may need to comment it out.
Code:
Sub switchNotes()
' Target and Source files should be open
' oSource and oTarget should be filled with filename (no path)
' use with 'call switchNotes()'
' 'On Error Resume Next' commented out to spot failed process
' MsgBox used for debug purposes when needed
Dim oTarget As Presentation
Dim oSource As Presentation
Dim i As Integer
'On Error Resume Next
Set oSource = Presentations("mySource.pptx")
Set oTarget = Presentations("myTarget.pptx")
If oSource.Slides.Count <> oTarget.Slides.Count Then Err.Raise -10000000
For i = 1 To oSource.Slides.Count
'MsgBox ("diapo " & i)
oSource.Slides(i).NotesPage.Shapes(2).TextFrame.TextRange.Copy
oTarget.Slides(i).NotesPage.Shapes(2).TextFrame.TextRange.Paste
Next i
End Sub
Finally, as a suggestion, I added this code to an empty presentation (needed to create a module for it) and call it from the immediate window, after I opened the other files and updated the source and target filenames). This way I keep my PPTX files clean and don't need to make them macro-enabled.
Hope it helps