4

タイトルはほとんど言っています。

  1. ディレクトリ内のすべてのPowerPointファイルを再帰的に開く必要があります(完了)。
  2. すでに開いているファイルからユーザーフォームとモジュールをコピーする必要があります。
  3. 元のディレクトリにあるすべてのPowerPointファイルをマクロ対応のPowerPointドキュメントとして再保存する必要があります。

ボーナスポイントについては、すべてのファイルに元のファイルと同じマスタースライドがあり、マスターが変更されたときにスライドが更新されるようにするにはどうすればよいですか

これがファイルを開くコードです。できます。

Sub OpenAllFiles()

Dim colFiles As New Collection
Dim vFile As Variant
RecursiveDir colFiles, "C:\Users\Debra\Dropbox\School\Mathematics\Notes", "*.pptx", True
For Each vFile In colFiles    
        Presentations.Open (vFile)
Next vFile
End Sub
4

2 に答える 2

3

尋ねられたあなたの質問(ボーナスの前に)

このコード

  • strDir ie * c:\temp*の下にあるすべてのファイルを開きます
  • モジュールModule1ユーザーフォームUserFormを現在のPPTファイルからエクスポートします
  • これらのファイルをpptmファイルstrDirとして保存します
  • 元のpptxファイルを削除します

コード

Sub OpenAllFiles()
Dim ppPres As Presentation
Dim fName As String
Dim strDir As String
Dim VbComp1
Dim VbComp2
Set VbComp1 = ActivePresentation.VBProject.VBComponents("Module1")
Set VbComp2 = ActivePresentation.VBProject.VBComponents("UserForm1")
strDir = "c:\temp\"
VbComp1.Export strDir & "\mod1.bas"
VbComp2.Export strDir & "\uf1.frm"

fName = Dir(strDir & "\*.pptx")
Do While fName <> vbNullString
Set ppPres = Presentations.Open(strDir & "\" & fName, msoFalse)
With ppPres
.VBProject.VBComponents.Import strDir & "\mod1.bas"
.VBProject.VBComponents.Import strDir & "\uf1.frm"
.SaveAs Replace(ppPres.Name, "pptx", "pptm"), ppSaveAsOpenXMLShowMacroEnabled
.Close
'remove original pptx file
Kill Dir(strDir & "\*.pptx")
fName = Dir
End With
Loop
End Sub
于 2012-08-28T09:15:39.973 に答える
1

Presentationから返されたオブジェクトへの参照を取得するとPresentations.Open、開いているプレゼンテーションを直接操作できます。それ以外の場合は、プレゼンテーションオブジェクトを開いた後にループする必要があります。あなたがオブジェクトを持っているとき、あなたはそのために使われるのをPresentation見ることができます。VBAコードのコピーについては、http://www.cpearson.com/excel/vbe.aspxまたはhttp://www.mrexcel.com/articles/copy-vb ​​a-module.phpのようなものを試すことができます。SlideMasterPresentation

例:

Option Explicit

Sub Test()
    'Declare variables
    Dim oPres As Presentation
    Dim oMaster As Master

    'Get presentation
    Set oPres = Presentations.Open("Gud vilken härlig powerpoint.pptx")

    'Get master
    Set oMaster = oPres.SlideMaster

    'Do something
    Debug.Print oPres.Name
    Debug.Print oMaster.Name

    'Save as macro-ppt
    Call oPres.SaveAs("NEW-FILE-NAME.pptm", ppSaveAsOpenXMLPresentationMacroEnabled)

    'Clean up
    Set oMaster = Nothing
    Set oPres = Nothing

End Sub
于 2012-08-28T07:48:35.550 に答える