2016-01-28 3 views
0
Sub Combine_ppt() 

Dim parent As PowerPoint.Application 
Dim child As PowerPoint.Application 
Dim pname, cname As String 

pname = "C:\PPT\ParentFile.ppt" 
On Error Resume Next 
Set parent = CreateObject("PowerPoint.Application") 
parent.Presentations.Open pname 
On Error GoTo 0 
If parent Is Nothing Then 
    MsgBox "Parent File not Found" 
    Exit Sub 
End If 
parent.Visible = True 
fld = "C:\PPT\" 
cname = Dir(fld & "*Child*.ppt") 
Do While cname <> "" 
    Set child = CreateObject("PowerPoint.Application") 
    child.Presentations.Open "C:\PPT\" & cname 
    ccount = child.ActivePresentation.Slides.Count 
    For i = 1 To ccount 
     child.ActivePresentation.Slides(i).copy 
     parent.ActivePresentation.Slides.Paste 
    Next i 
    child.Quit 
    Set child = Nothing 
Loop 
End Sub 

Я пытаюсь скопировать слайды из всех ppt, имеющих слово «ребенок» в их имени файла родительскому ppt. Когда я запускаю код, я вижу, что скопированный слайд вставлен в ту же презентацию вместо родителя, а также код переходит в бесконечный цикл, снова и снова открывая один и тот же дочерний файл и не перемещаясь по другому дочернему файлу в Папка. пожалуйста посоветуй.Скопируйте слайды из нескольких файлов ppt в один файл ppt

ответ

0

вы не зацикливание на все файлы в Дире, потому что вы пропустили вызвать Dir для каждого файла

вам просто нужно добавить одну фразу в конце цикла

cname = Dir(fld & "*Child*.ppt") 
Do While cname <> "" 
    ... 
    cname=Dir() 
Loop 
+0

Спасибо, что но как насчет получения слайда, вставленного в тот же файл, когда я упомянул Child.copy и Parent .paste, но он вставляется только в Ребенка. – Meesha

+0

ваш код выглядит правильно, вы уверены, что опубликовали свой текущий код? –

+0

Я пропустил добавление «ActivePresentation» в parent.ActivePresentation.slides.paste, и он работает, но как-то все еще вставляется в один и тот же файл. Кроме того, Close не работает, поэтому я использую .Quit. – Meesha

 Смежные вопросы

  • Нет связанных вопросов^_^