2017-07-25 107 views
0

この質問は既に何度も尋ねられていますが、残念ながら実際の解決策を見つけることはできません。VBAを使用してPowerPointのグラフを更新する

私は非常にシンプルなプレゼンテーションをPowerPointで作成しています(Excelテーブルから作成された1つのグラフで1つのスライドのみ).VBA経由で最新のデータで更新する必要があります。

Sub update1() 
ActivePresentation.UpdateLinks 
End Sub 

それを実行するようだが、何も変更を加えていない:すべての

まず、私は、PowerPointから最も明らかなスクリプトを試してみました。次に私はウェブで解決策を探し始め、例えば次のようなものを見つけました:topic on StackOverflow

Optimistic Busyの回答では、エラーなしで実行され、MessageBoxで出力されますが、PowerPointのグラフでは何も変更されません。それをrinuspことで答えを

は私にエラー

実行時エラー '91' を与える:オブジェクト変数またはWithブロック変数が行に

For each sld in myPresentation.Slides 

を設定していません

これらのマクロはすべてPowerPointで試しました。

私はStackOverflowの他の質問からの回答も試みましたが、残念ながら何も私のために働きません。誰かが私に役立つ解決策を見つけることができれば幸いです.VBAスクリプトを実行するには、ExcelやPowerPointから問題はありません。

ありがとうございます。

更新:実行しようとしたコードの完全な例で質問を更新しています。この例は、前述のStackOverflowトピックのユーザーの楽観的なビジーとリニューアルによって提供されました。

このコードパワーポイントから実行してくれエラー与え、「実行時エラー 『91』:オブジェクト変数またはWithブロック変数が設定されていません」

Sub update2() 

Dim myPresentation As PowerPoint.Presentation 
Dim sld As PowerPoint.Slide 
Dim shp As PowerPoint.Shape 
Dim myChart As PowerPoint.Chart 

For Each sld In myPresentation.Slides 
    For Each shp In sld.Shapes 
     If shp.HasChart Then 
      Set myChart = shp.Chart 
      myChart.ChartData.Activate 
      myChart.Refresh 
     End If 
    Next 
Next 

End Sub 
をして、このコードがエラーなしで実行され、出力を提供しますメッセージボックスが、PowerPointでマクロを実行すると、あなたのチャートがリンクされている場合は、このコードは動作しますチャート

Sub update3() 
Dim sld As Slide, shp As Shape 

For Each sld In ActivePresentation.Slides 

    For Each shp In sld.Shapes 
    On Error Resume Next 
    shp.LinkFormat.Update 
    Next 

Next 

MsgBox ("Update chart") 

End Sub 
+0

こんにちは、あなたが仕事をしようとしている完全なコードを投稿できますか?このエラーは、対話しているオブジェクトへの参照がないことに関連しているようです。 –

+0

@RyanWildry、私はコードの完全な例で私の質問を更新しました。 – Hasek

答えて

1

を更新しません。

Sub update2() 

Dim myPresentation As PowerPoint.Presentation 
Dim sld As PowerPoint.Slide 
Dim shp As PowerPoint.Shape 
Dim myChart As PowerPoint.Chart 
Dim Wb As Object 
Dim App As Object 

Set myPresentation = ActivePresentation 

For Each sld In myPresentation.Slides 
    For Each shp In sld.Shapes 
     If shp.HasChart Then 
      Set myChart = shp.Chart 
      myChart.ChartData.Activate 
      myChart.Refresh 
      Set Wb = myChart.ChartData.Workbook 
      Set App = Wb.Application 
      Wb.Close (0) 
     End If 
    Next 
Next 
App.Quit 
End Sub 
+0

ありがとう、それは動作します。オリジナルと同様の構造の別のテーブル(別のExcelファイル内)のデータでチャートを更新したい場合は、どのように変更する必要がありますか? – Hasek

+0

@Hasek、あなたは別のExcelファイルにすることができます。 –

関連する問題