2012-02-05 37 views
5

Tôi đang làm việc trên một dự án. Trong đó tôi đã tạo một chủ đề tùy chỉnh bao gồm một trang trình bày chính và có thể bố cục. vì vậy về cơ bản tôi muốn áp dụng bố cục cụ thể cho các trang trình bày cụ thể. Vì vậy, có cách nào để làm điều đó bằng cách lập trình. như:Làm thế nào để áp dụng bố trí cụ thể trong powerpoint bằng cách sử dụng vba?

activepresentation.Slides (1) .Layout = "layoutname"

tôi biết mã ở trên là sai nhưng tôi muốn một cái gì đó như thế này để gọi bố trí cụ thể bằng tên của nó. cho thông tin của bạn tên bố cục của tôi là "Tiêu đề không có Logo của khách hàng".

Cảm ơn

Trả lời

4

ActivePresentation.Slides (1) .CustomLayout = ActivePresentation.Designs (1) .SlideMaster.CustomLayouts (x)

trong đó x là chỉ số vào bộ sưu tập bố trí đại diện cho bố trí tùy chỉnh của bạn.

Không giống như hầu hết các bộ sưu tập khác như vậy trong PPT OM, điều này dường như không thể chấp nhận chỉ mục hoặc tên. Nó phải là một chỉ mục.

Nếu bạn cần làm việc với tên, hãy viết một hàm lặp qua bộ sưu tập CustomLayouts cho đến khi tìm thấy tên bạn đang theo dõi và trả về chỉ mục.

+0

hey steve, thực ra tôi đã giải quyết được vấn đề của mình. ya bạn là đúng chức năng là cần thiết cho nó. Và tôi đã viết nó. cám ơn bạn đã góp ý. –

+0

Chăm sóc để chia sẻ chức năng của bạn, @PratikGujarathi? Tôi biết nó khá đơn giản, nhưng nó sẽ giúp người xem tương lai của câu hỏi này một thời gian. – sfarbota

3

Sử dụng đoạn mã sau

Sub ApplyLayoutByIndex() 

    Dim sld As Slide 
    Dim shp As Shape 
    Dim xName As String 
    Set sld = Application.ActiveWindow.View.Slide 
    Dim xIndex As Integer 

    xName = "A final slide" 

    xIndex = getLayoutIndexByName(xName) 

    If xIndex = 0 Then 
    MsgBox "The layout name" & xName & "not found. Check the name of the layout", vbOKOnly 
    Exit Sub 
    End If 

    sld.CustomLayout = ActivePresentation.Designs(1).SlideMaster.CustomLayouts(xIndex) 

    End Sub 

    Function getLayoutIndexByName(xName As String) As Integer 
    ActivePresentation.Designs(1).SlideMaster.CustomLayouts.Item (1) 
    With ActivePresentation.Designs(1).SlideMaster.CustomLayouts 
     For i = 1 To .Count 
      If .Item(i).Name = xName Then 
      getLayoutIndexByName = i 
      Exit Function 
      End If 
     Next 
    End With 

    End Function 

Cảm ơn!

Các vấn đề liên quan