シート内のすべてのグラフをエクスポートしてから、Outlookを開いて添付するマクロを実行しています。ただし、チャートがエクスポートされるのは0KBであることが何度かあります(ファイルは作成されますが、画像は表示されません)。
しかし、それはすべてのチャートに起こるわけではありません。それらのほとんど、そして時にはそれは問題なくそれらすべてを生成します。(コードをステップバイステップで実行すると、すべてのチャートが問題なく生成されます。ステップバイステップで実行した後も、通常どおり実行するとすべてのチャートが生成されますが、ブックを閉じて再度開くと、同じ問題が発生します。 2つだけを生成し、残りは空のファイルです)
コードは次のとおりです。
Dim sheetNumber, Size, i As Integer
Dim chartNames(), FNames() As String
Dim objChrt As ChartObject
Dim myChart As Chart
'Activate Charts Sheet
Sheets("GRAFICAS").Activate
'Calculate Number of Charts in Sheet
Dim chartNumber
chartNumber = ActiveSheet.ChartObjects.Count
'Redimension Arrays to fit all Chart Export Names
ReDim chartNames(chartNumber)
ReDim FNames(chartNumber)
'Loops through all the charts in the GRAFICAS sheet
For i = 1 To chartNumber
'Select chart with index i
Set objChrt = ActiveSheet.ChartObjects(i)
Set myChart = objChrt.Chart
'Generate a name for the chart
chartNames(i) = "myChart" & i & ".png"
On Error Resume Next
Kill ThisWorkbook.Path & "\" & chartNames(i)
On Error GoTo 0
'Export Chart
myChart.Export FileName:=Environ$("TEMP") & "\" & chartNames(i), Filtername:="PNG"
'Save path to exported chart
FNames(i) = Environ$("TEMP") & "\" & chartNames(i)
Next i
何が足りないのですか?
結局のところ、これはExcel2010-2013ユーザーにとってはランダムなエラーです。しかし、もう少しグーグルした後。私はここで答えに遭遇しました
追加する必要があります
objChrt.Activate
チャートを選択した後。したがって、私の場合、最終的なコードは次のようになります。
For i = 1 To chartNumber
'Select chart with index i
Set objChrt = ActiveSheet.ChartObjects(i)
objChrt.Activate
Set myChart = objChrt.Chart
'Generate a name for the chart
chartNames(i) = "myChart" & i & ".png"
On Error Resume Next
Kill ThisWorkbook.Path & "\" & chartNames(i)
On Error GoTo 0
'Export Chart
myChart.Export FileName:=Environ$("TEMP") & "\" & chartNames(i), Filtername:="PNG"
'Save path to exported chart
'Application.Wait (Now + #12:00:01 AM#)
FNames(i) = Environ$("TEMP") & "\" & chartNames(i)
Next i
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加