簡體   English   中英

使用Excel VBA在PowerPoint中添加自定義幻燈片布局嗎?

[英]Add a custom slide layout in PowerPoint using Excel VBA?

我創建了具有自定義幻燈片布局的PowerPoint。 我希望能夠使用Excel VBA使用這些自定義布局之一創建新幻燈片,但是我無法弄清楚正確的語法。

這是我目前擁有的代碼:

Sub runPPT()

Application.ScreenUpdating = False

Dim wb As Workbook
Set wb = ThisWorkbook

Dim ws As Worksheet
Set ws = wb.Sheets("SG2")

Dim pptName As String
Dim ppt As Object
Dim myPres As Object
Dim slds As Object
Dim sld As Object

MsgBox ("Please choose PowerPoint to open.")
pptName = openDialog()
Set ppt = CreateObject("PowerPoint.Application")
Set myPres = ppt.Presentations.Open(pptName)

Set slds = myPres.Slides
'This is where I want to add my custom layout
'My layouts all have similar names like "Gate 2 Main" if that helps
Set sld = slds.AddSlides(Slides.Count + 1, ActivePresentation.SlideMaster.CustomLayouts(1))

Application.ScreenUpdating = True
End Sub


Private Function openDialog()
Dim fd As Office.FileDialog
Dim txtFileName As String
Set fd = Application.FileDialog(msoFileDialogFilePicker)
With fd
  .AllowMultiSelect = False
  ' Set the title of the dialog box.
  .Title = "Please select the file."

  ' Clear out the current filters, and add our own.
  .Filters.Clear

  ' Show the dialog box. If the .Show method returns True, the
  ' user picked at least one file. If the .Show method returns
  ' False, the user clicked Cancel.
  If .Show = True Then

    txtFileName = .SelectedItems(1) 'replace txtFileName with your textbox

  End If

End With

openDialog = txtFileName

End Function

通過將代碼更改為以下內容,可以解決我的問題:

Sub runPPT()

   Application.ScreenUpdating = False

   Dim wb As Workbook
   Set wb = ThisWorkbook

   Dim ws As Worksheet
   Set ws = wb.Sheets("SG2")

   Dim pptName As String
   Dim ppt As PowerPoint.Application
   Dim myPres As PowerPoint.Presentation
   Dim slds As PowerPoint.Slides
   Dim sld As PowerPoint.slide

   Dim oLayout As CustomLayout

   MsgBox ("Please choose PowerPoint to open.")
   pptName = openDialog()
   Set ppt = CreateObject("PowerPoint.Application")
   Set myPres = ppt.Presentations.Open(pptName)

   Set slds = myPres.Slides
   Set sld = slds.Add(myPres.Slides.Count + 1, ppLayoutBlank)

   For Each oLayout In myPres.Designs("Gate Main").SlideMaster.CustomLayouts
       If oLayout.Name = "Gate 2 Main" Then
           sld.CustomLayout = oLayout
           Exit For
       End If
   Next

   Application.ScreenUpdating = True

End Sub


Private Function openDialog()

   Dim fd As Office.FileDialog

   Dim txtFileName As String

   Set fd = Application.FileDialog(msoFileDialogFilePicker)

   With fd

     .AllowMultiSelect = False

     ' Set the title of the dialog box.
     .Title = "Please select the file."

     ' Clear out the current filters, and add our own.
     .Filters.Clear

     ' Show the dialog box. If the .Show method returns True, the
     ' user picked at least one file. If the .Show method returns
     ' False, the user clicked Cancel.
     If .Show = True Then

       txtFileName = .SelectedItems(1) 'replace txtFileName with your textbox

     End If

  End With

  openDialog = txtFileName

End Function

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM