Excel の図を画像として保存しようとしています。
コード全体で、いくつかのワークブックを呼び出し、すべてのワークシートを検索し、すべての図を保存します。
次のコードは、Excel 2007 および 2010 で動作します (ただし、+ 4 のために水平線と垂直線が表示されます)。を に変更するRound(shp.Width + 4, 0)
とRound(shp.Width, 0)
、2010 年に次のエラーが発生します (ただし、2007 年には発生しません)。
実行時エラー '-2147467259 (80004005)':
指定されたディメンションは、現在のチャート タイプに対して有効ではありません。
Dim shp As Shape
Dim sht As Worksheet
Set sht = Application.ActiveWorkbook.Sheets(shtName)
Set shp = sht.Shapes(chrtName)
shp.CopyPicture xlScreen, xlBitmap
Dim objChart As ChartObject
Set objChart = sht.ChartObjects.Add(200, 200, Round(shp.Width + 4, 0), Round(shp.Height + 4, 0))
objChart.Activate
ActiveChart.Paste
ActiveChart.Export Filename:=fullPath, Filtername:=Right(fullPath, 3)
objChart.Delete
+4 の使用を避けるにはどうすればよいですか?
私は以下を見つけました:
「デフォルトのチャート タイプが、作成しようとしているチャート タイプ以外のチャート タイプに設定されている場合、常に問題が発生します。たとえば、折れ線グラフを作成しようとして、Excel のデフォルト チャートが OHLC (ローソク足株価チャート) である場合、 Excel はすぐに「指定されたディメンションは、現在のチャート タイプに対して有効ではありません」と文句を言います。VB.NET からチャートを作成しようとしても、同じことが起こります。したがって、まず、デフォルトのチャート タイプをいくつかの基本的なチャート タイプに変更します。折れ線グラフのようなものです。問題は解決されます。」 http://www.excelbanter.com/showthread.php?t=204071
VBAでこれを行うにはどうすればよいですか?