3

チャートをPowerpointからJPGファイルとしてエクスポートすることはできますが、テーブルを使用してこれを行うことはできません。これは、私が知る限り、エクスポートできるはずの「形状」です。

これは、チャートをJPGとしてエクスポートするために使用するコードのクレンジングバージョンです。

Const imgFilePath as String = "ChartImage.JPG"
Sub ExportChartJPG()
Dim cht as Variant  'this will hold the Chart/Shape object

Set cht = ActivePresentation.Slides(1).Shapes("Chart1").Chart

On Error Resume Next
    Kill imgPath
On Error GoTo 0

cht.Export imgPath, "JPG"

End Sub

これは次のように簡単に変更できると思いました。

Sub ExportChartJPG()
Dim cht as Variant  'this will hold the Chart/Shape object

Set cht = ActivePresentation.Slides(1).Shapes("Table1").Table

On Error Resume Next
    Kill imgPath
On Error GoTo 0

cht.Export imgPath, "JPG"

End Sub

しかし、これはエラー13不一致をスローしています。

chtまた、VariantではなくShapeとして寸法を記入し、設定しようとしましたがcht = ActivePresentation.Slides(1).Shapes("Table1")、失敗しました。

4

2 に答える 2

5

KazJaw のソリューションは機能しますが、少し面倒でした (コピーの処理には追加の時間がかかります。コピーが完了するまで十分に「待機」しなかったためにエラーが発生した、クリップボードの問題など)。

http://www.tech-archive.net/pdf/Archive/Office/microsoft.public.office.developer.vba/2006-10/msg00046.pdf

オブジェクト ブラウザを開き、右クリックして非表示のメソッドを表示するとExportShape.

Sub ExportShapeJPG()
Dim cht as Variant  'this will hold the Chart/Shape object

Set cht = ActivePresentation.Slides(1).Shapes("Table1") '<-- removed .Table and only pass the Shape itself

'Likewise, for charts, omit the .Chart:
' Set cht = ActivePresentation.Slides(1).Shapes("Chart1") 


On Error Resume Next
    Kill imgPath
On Error GoTo 0

cht.Export imgPath, ppShapeFormatJPG  '<-- The export syntax is slightly different using ppShapeFormatJPG instead of "JPG"

End Sub
于 2013-03-21T20:01:03.487 に答える
3

私には、かなり奇妙な考えが 1 つあります。最初の部分でチャートを保存し、2 番目の部分でテーブルを保存するコードを見てください。

Sub ExportinChartAndTable()
Dim imgFilePath As String
    imgFilePath = ActivePresentation.Path & "\chart"

Dim shp As Shape
    Set shp = ActivePresentation.Slides(1).Shapes(1)
Dim shpChart As Chart
    Set shpChart = shp.Chart
'exporting chart
On Error Resume Next
    Kill imgFilePath
On Error GoTo 0
shpChart.Export imgFilePath & "chart.jpg", "JPG"

Stop
Dim chartPart As ChartData
    Set chartPart = shpChart.ChartData

imgFilePath = ActivePresentation.Path & "\dataTable.jpg"

chartPart.Workbook.worksheets("arkusz1").Range("a1:c20").Copy
shpChart.Paste
shpChart.Shapes(1).Width = shp.Width
shpChart.Shapes(1).Height = shp.Height
On Error Resume Next
    Kill imgFilePath
On Error GoTo 0
shpChart.Export imgFilePath, "JPG"


End Sub

テーブルの範囲をチェックする方法を考え出す必要があります。CurrentRegion私はそれがうまくいくことを望んでいましたが、そうではありません。テーブル内の行と列の数をカウントする可能性を使用できます (可能です)。または、範囲が固定されているので簡単かもしれません。もう1つ、テーブルのサイズを変更するときに寸法を調整する必要があります。

デビッドのコメントによる編集。他の人に役立つ可能性があるため、上記のソリューションをそのままにしておきます(以下のコメントを参照してください)

Sub SolutionSecond()

Dim whereTo As String
    whereTo = ActivePresentation.Path & "\table.jpg"
Dim shp As Shape
Set shp = ActivePresentation.Slides(1).Shapes(1)



Dim chrt As Shape
Set chrt = ActivePresentation.Slides(1).Shapes.AddChart

shp.Copy

'required due to excel opening proces
    chrt.Select
    chrt.Chart.Paste

'set dimensions here
chrt.Chart.Export whereTo, "JPG"

    chrt.Delete
 End Sub

これは同じロジックに基づいています。エクスポートできる (唯一の種類の形状) チャートにテーブルをコピーします。

于 2013-03-21T17:17:04.117 に答える