2010-05-27 104 views
5

Tôi cần thay đổi sơ đồ bố cục của trang trình bày bằng C# (Add-In Express 2009 cho Office và .NET được sử dụng). Nếu bố cục mới là một bố cục được xác định trước thì mọi thứ đều ổn, nhưng không phải nếu tôi cần đặt bố cục tùy chỉnh làm bố cục mới (không cần tạo lại trang trình bày). Thật không may, tôi không tìm thấy bất kỳ thông tin nào về cách thực hiện, tài liệu tham khảo mô hình đối tượng PowerPoint cũng không trả lời tôi. Chỉ có khả năng tạo trang trình bày mới sử dụng bố cục tùy chỉnh.Làm cách nào để thay đổi bố cục trang trình bày trong PowerPoint?

Tôi đã thực hiện thử nghiệm và đảm bảo rằng đối tượng Slide vẫn giữ nguyên trong khi tôi đã thay đổi bố cục cả bố cục được xác định trước và tùy chỉnh. Tôi không muốn tạo trang trình bày mới khi tôi chỉ cần chuyển bố cục.

Có thể nào không? Xin hãy giúp tôi tìm cách để làm điều đó.

Trả lời

4

Cách duy nhất nó sẽ hoạt động là nếu bố cục tùy chỉnh của bạn thực sự được sử dụng trong boong trước. Sau đó, bạn chỉ cần thực hiện bố cục đó và áp dụng nó cho trang trình bày mà bạn muốn. Bạn có thể lập trình tạo một trang trình bày mới với bố cục tùy chỉnh của mình, sử dụng bố cục đó để áp dụng cho trang trình bày khác và sau đó xóa trang trình bày mới mà bạn đã tạo. Dưới đây là code để áp dụng cách bố trí tùy chỉnh (lưu ý rằng ap.Slides(2) của tôi là một Layout Tuỳ chỉnh)

Sub ChangeLayout() 
    Dim ap As Presentation 
    Set ap = ActivePresentation 
    Dim slide1 As Slide 
    Set slide1 = ap.Slides(1) 
    Dim customLayout As PpSlideLayout 
    customLayout = ap.Slides(2).Layout 
    slide1.Layout = ly 
End Sub 
+0

Cảm ơn bạn rất nhiều! Nó hoạt động !! –

2

Bạn có thể làm điều đó, nhưng nó thực sự không khuyến khích. Ngoài ra, tạo một trang trình bày mới theo cách này và áp dụng bố cục dễ bị lỗi. Trong đoạn mã sau, bạn có thể xem cách truy xuất bố cục theo tên từ chính ....

private PowerPoint.CustomLayout DpGetCustomLayout(
     PowerPoint.Presentation ppPresentation, string myLayout) 
{ 
    // 
    // Given a custom layout name, find the layout in the master slide and return it 
    // Return null if not found 
    // 
    PowerPoint.CustomLayout ppCustomLayout = null; 

    for (int i = 0; i < ppPresentation.SlideMaster.CustomLayouts.Count; i++) 
    { 
     if (ppPresentation.SlideMaster.CustomLayouts[i + 1].Name == myLayout) 
      ppCustomLayout = ppPresentation.SlideMaster.CustomLayouts[i + 1]; 
    } 
     return ppCustomLayout; 
} 

sau đó bạn có thể gán nó cho trang trình bày như bạn đã thấy ở trên. Tuy nhiên, nếu bố cục không tương thích, thì kết quả có thể không thể đoán trước được. Tôi cho rằng các trang trình bày ít nhất là tương đối giống nhau. Bạn nên cố gắng tạo trang trình bày mới và sao chép nội dung để tránh làm con tin thay đổi trong chủ đề hoặc mẫu bên dưới.

Xem code descriptions để biết thêm về điều này.

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