2013-10-22 13 views
7

3Dチャートを回転させるマクロをExcelで作成しました。チャートをPowerPointにコピーし、スライドが表示されたらPowerPointで実行するようにコードを設定しました。コードは実行されますが、画面に表示されている内容を実際に変更することはできません。スライドが編集モードになると、グラフが回転します。任意のアイデアをどのように(私はデバッグ番号が表示されることがわかりますが表示されます)を実行するだけでなく、コードを取得するプレゼンテーションモードでは、画面を更新する?私のコードは:PowerPointプレゼンテーションの3Dチャートの回転

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 

更新日: 私はまだこれと戦っています。

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

が、これは動作しません:DoEvents関数の下に、いくつかのアーティスト同士のコラボレーションは、現在表示されているグラフを更新するために言って、あなたが使用する必要があるようです。実行中のコードはすべて終了します。したがって、最初の関数のDo/Loopは終了し、2番目の反復には進まない。

+1

を使用すると、オブジェクトはExcelとPowerPointの間で同じインターフェイスを使用していることを確認するためにチェックしましたか? –

+1

あなたのUPDATEはコードから正確にコピーされていますか?その場合、 'SlideShowWindows'のスペルが間違っている後半のスペルを確認してください。 –

+0

4か月前にこの質問をしましたが、答えはありません:この問題を解決しましたか? –

答えて

0

グラフの変更がSlideShowViewの更新をトリガーしないようです。しかし、図形のテキストを変更するとこれが行われます。したがって、次のコードは、チャートをスピン:

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 

PowerPointプレゼンテーション中にマクロで他の問題に精通していますか?このような環境では非常に脆く、その影響を注意深くテストする必要があります。

OnSlideShowPageChangeは、以前にVBAがアクティブ化された場合にのみ機能します。最も簡単な方法は、プレゼンテーションを開始する前にVBAエディタを開いて閉じることです。チャートが編集モードで回転する場合は、なぜあなたは

挨拶

アクセル

+0

これが機能するかどうかを知りたいのですが。 – peege

+0

PowerPoint 2007で私の仕事をしてください。もちろん、名前は正しいものでなければなりません。 3枚のスライドで新しいPPTプレゼンテーションを作成します。 2番目のスライドには、タイトルシェイプと3Dダイアグラムシェイプがあります。 VBAエディタを開きます。コードをモジュールにコピーします。 「Slide1」を「Slide2」に変更します。 Set oSlide = ActivePresentation.Slides( "Slide2")になるまで、 'Public Sub SpinTheChart()'を実行します。名前にoSlide-Shapes-Item2があるローカルウィンドウを調べます。この名前を 'Set oChart = oSlide.Shapes(" Diagramm 4 ")。Chart'に置き換えます。 VBAを保存します。 VBAエディタを閉じます。今はプレゼンテーションモードで実行する必要があります。 –

関連する問題