2008年7月24日星期四

Batch: Do something to every file in a folder

This is a very simple-minded approach you can use to run quick 'n dirty macros on every presentation in a folder.

Also see Do something to -- every shape on a slide, every slide in a presentation, every presentation in a folder for more example code.

You need to edit the FolderPath and FileSpec lines in ForEachPresentation below before you use this.
Then edit MyMacro do do whatever you need it to do.
MyMacro will be called for each file in FolderPath that matches FileSpec


Sub ForEachPresentation()
' Run a macro of your choosing on each presentation in a folder

Dim rayFileList() As String
Dim FolderPath As String
Dim FileSpec
Dim strTemp As String
Dim x As Long

' EDIT THESE to suit your situation
FolderPath = "c:\some\folder\" ' Note: MUST end in \
FileSpec = "*.ppt"
' END OF EDITS

' Fill the array with files that meet the spec above
ReDim rayFileList(1 To 1) As String
strTemp = Dir$(FolderPath & FileSpec)
While strTemp <> ""
rayFileList(UBound(rayFileList)) = FolderPath & strTemp
ReDim Preserve rayFileList(1 To UBound(rayFileList) + 1) As String
strTemp = Dir
Wend

' array has one blank element at end - don't process it
' don't do anything if there's less than one element
If UBound(rayFileList) > 1 Then
For x = 1 To UBound(rayFileList) - 1
Call MyMacro(rayFileList(x))
Next x
End If

End Sub

Sub MyMacro(strMyFile As String)
' this gets called once for each file that meets the spec you enter in ForEachPresentation
' strMyFile is set to the file name each time

' Probably at a minimum, you'd want to:
Dim oPresentation As Presentation
Set oPresentation = Presentations.Open(strMyFile)

With oPresentation

' do something

End With

oPresentation.Save
oPresentation.Close

End Sub

See How do I use VBA code in PowerPoint? to learn how to use this example code.

-----Quoted from:http://www.pptfaq.com/FAQ00536.htm
Related links:
Powerpoint & DVD Knowledge Centre

没有评论: