2013-10-22 64 views
7

Tôi đã tạo macro trong Excel sẽ quay một biểu đồ 3D. Tôi đã sao chép biểu đồ vào PowerPoint, thiết lập mã để chạy trong PowerPoint khi trình chiếu được hiển thị. Mã chạy, nhưng tôi không thể làm cho nó thực sự thay đổi những gì được hiển thị trên màn hình. Khi trang trình bày ở chế độ chỉnh sửa, biểu đồ quay. Bất kỳ ý tưởng làm thế nào để có được mã để không chỉ chạy (tôi có thể thấy các số gỡ lỗi hiển thị), nhưng cập nhật màn hình khi ở chế độ trình bày? Mã của tôi là:Xoay biểu đồ 3D trong bản trình bày PowerPoint

Private Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long) 

Public Sub SpinTheChart() 

    RotateX = ActivePresentation.Slides(2).Shapes(2).Chart.ChartArea.Format _ 
        .ThreeD.RotationX 

    Do While ActivePresentation.SlideShowWindow.View.CurrentShowPosition = 2 
     RotateX = RotateX + 7 
     If RotateX > 360 Then RotateX = RotateX - 360 
     ActivePresentation.Slides(2).Shapes(2).Chart.ChartArea.Format _ 
        .ThreeD.RotationX = RotateX 
     DoEvents 
     Sleep 125 
     Debug.Print RotateX 
    Loop 

End Sub 

Sub OnSlideShowPageChange() 
    Dim i As Integer 
    i = ActivePresentation.SlideShowWindow.View.CurrentShowPosition 
    If i = 2 Then SpinTheChart 
End Sub 

CẬP NHẬT: Tôi vẫn đang đấu tranh này. Có vẻ như một số gợi ý cho biết để cập nhật biểu đồ hiện được hiển thị, bạn cần phải sử dụng, bên dưới DoEvents:

SlideShowWindows(1).View.GotoSlide SlideSowWindows(1).View.CurrentShowPosition 

nhưng điều này không hiệu quả. Nó thoát khỏi bất kỳ mã nào đang chạy. Do đó, Do/Loop trong hàm đầu tiên được thoát và nó không đi vào lần lặp thứ hai.

+1

Bạn đã kiểm tra để đảm bảo các đối tượng sử dụng cùng một giao diện giữa Excel và Powerpoint? –

+1

UPDATE của bạn có phải là mã sao chép chính xác từ mã không? Nếu vậy, hãy kiểm tra chính tả trong nửa thứ hai, trong đó 'SlideShowWindows' bị viết sai chính tả. –

+0

Bạn đã hỏi câu hỏi này cách đây bốn tháng và không có câu trả lời: Bạn đã từng giải quyết vấn đề này chưa? –

Trả lời

0

Có vẻ như những thay đổi về thời tiết trên biểu đồ không kích hoạt làm mới SlideShowView. Nhưng những thay đổi về văn bản trong hình dạng sẽ làm điều này. Vì vậy, mã sau quay biểu đồ:

Private Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long) 

Public Sub SpinTheChart() 

Set oSlide = ActivePresentation.Slides("Slide1") 
Set oChart = oSlide.Shapes("Diagramm 4").Chart 
oChart.ChartArea.Format.ThreeD.RotationX = 20 

snRotationX = oChart.ChartArea.Format.ThreeD.RotationX 

Do While ActivePresentation.SlideShowWindow.View.Slide.Name = "Slide1" 

    snRotationX = snRotationX + 7 
    If snRotationX > 360 Then snRotationX = snRotationX - 360 
    oChart.ChartArea.Format.ThreeD.RotationX = snRotationX 

    'oSlide.Shapes("Rechteck 7").TextFrame.TextRange.Text = snRotationX 
    oSlide.Shapes.Title.TextFrame.TextRange.Text = oSlide.Shapes.Title.TextFrame.TextRange.Text 

    DoEvents 
    Sleep 125 

Loop 
End Sub 

Sub OnSlideShowPageChange(ByVal SSW As SlideShowWindow) 
If SSW.View.Slide.Name = "Slide1" _ 
    Then SpinTheChart 
End Sub 

Bạn đã quen với các vấn đề khác với macro trong khi trình bày powerpoint? Chúng rất mong manh trong môi trường như vậy và các hiệu ứng của chúng phải được kiểm tra cẩn thận.

Và OnSlideShowPageChange chỉ hoạt động nếu VBA được kích hoạt trước đó. Cách đơn giản nhất là mở và đóng Trình soạn thảo VBA trước khi bắt đầu trình bày.

Greetings

Axel

+0

Tôi rất muốn biết điều này có hiệu quả hay không. – peege

+0

Làm việc cho tôi với PowerPoint 2007. Tất nhiên tên phải là những cái đúng. Tạo bản trình bày PPT mới với 3 trang trình bày. Trên trang chiếu thứ hai có hình dạng tiêu đề và hình dạng 3D-Sơ đồ. Mở trình soạn thảo VBA. Sao chép mã vào một mô-đun. Thay đổi "Slide1" thành "Slide2". Bước qua 'Public Sub SpinTheChart()' cho đến khi 'Đặt oSlide = ActivePresentation.Slides (" Slide2 ")'. Tìm trong cửa sổ Local Name có tên oSlide-Shapes-Item2. Thay thế tên này trong 'Set oChart = oSlide.Shapes (" Diagramm 4 "). Lưu VBA. Đóng trình soạn thảo VBA. Bây giờ nó sẽ chạy trong chế độ trình bày. –

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