一部のレポートを自動化するためのアドインに取り組んでいます。
- さまざまなチャートやテーブルの画像ファイルへのリンクを含む、レポート テンプレートの PowerPoint ファイルがあります。 (添付参照)
- ユーザーが [アクティブなレポートに追加] ボタンをクリックすると、適切な画像ファイルが上書きされ、新しいチャートまたはテーブルがレポートに表示されます。
私が抱えている問題は、PowerPoint ドキュメント内のリンクを更新する必要があることです。「新しいレポートを作成する」と言って、テンプレートとデフォルトの画像を新しいフォルダーにコピーし、新しい PowerPoint ファイルのリンクを更新して、新しいフォルダー内の画像ファイルを指すようにしたいと思います。テンプレートフォルダにある画像ファイル。これを行う方法はありますか?
どうもありがとう、
ジョン
やあ@ジョンムーア、私は似たようなことに直面しました。パワーポイントで企業テンプレートを使用してパッケージを更新し続けることの難しさを知っており、すべてのパワーポイントパッケージに「基本的に同じcharts"、常に同じ場所にあります。唯一の違いは、特定のレポートに必要な生データです。
私はVBAの専門家ではありませんが、何かが必要な場合は、解決策を作成/見つけるまで試行錯誤を続けます。
これは私が従うアプローチです。これまでに似たようなものがあるかもしれません:
- JMP では、分析 (画像) を PC のフォルダーに JSL を介して送信し、各画像に特定の名前を割り当てます (上書きされるだけなので、同じ名前を付けないでください)。 パワー ポイントで特定の各画像の場所をカスタマイズし、それぞれのリンクを作成したら、マクロ ファイルとして保存します (これがテンプレートになります)。
- テンプレートを開いて、新しいレポートが必要なときにいつでもマクロを実行します。
- 最後に、ファイルをマクロなしで別の名前で保存して、次回に備えて画像付きのテンプレートを保持します。
これがお役に立てば幸いです。スクリプトの変更を避けるために、マクロにパスワードを設定することを強くお勧めします。
よろしく。
サブ LinkedGraphsToPictures()
'Andres Gonzalez 作成、2019 年 3 月
'目的: リンクされたグラフを通常の画像に変更する
Dim shp As Shape
Dim sld As Slide
Dim pic As Shape
Dim shp_left を Double として
Dim shp_top As Double
Dim sld_count As Long
'ActivePresentation の各スライドをループ
For Each sld In ActivePresentation.Slides
sld_count = ActivePresentation.Slides.Count To 1 Step -1 の場合
' チャートが削除されたためにチャートがスキップされないように、countbackward に -1 までカウントします
sld = ActivePresentation.Slides(sld_count) を設定します。
sld.Shapes の各 shp について
shp.Type = msoLinkedPicture の場合
'現在の位置を取得
shp_left = shp.Left
shp_top = shp.Top
'図としてコピー/貼り付け
shp.Copy
sld.Shapes.PasteSpecial DataType:=ppPastePNG
pic = sld.Shapes(sld.Shapes.Count) を設定します。
'リンクされた図形を削除
shp.Delete
'新しく貼り付けた画像の位置を変更
pic.Left = shp_left
pic.Top = shp_top
終了条件
次のshp
次の sld_count
次のスライド
サブ終了