4

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でこれを行うにはどうすればよいですか?

4

3 に答える 3

2

私は同じ例外を得ました。問題を保存パスまでたどりました。

保存パスが間違っているか、指定されたパスが存在しない場合、この例外が発生します。パスが存在することを確認してください。

于 2019-06-27T09:06:12.633 に答える
1

久しぶりの無回答。

2 つのことを行う必要があります。まず、データが選択されていないことを確認してください。そうしないと、Excel が作成中のグラフにデータを挿入しようとする場合があります。

このブロックを挿入

Dim rngTmp as range
If Typename(Selection) = "Range" then
  Set rngTmp = selection
End If
With ActiveSheet
  .Range("A1").Offset(.Rows.Count - 1).Select
End With

行の前に

Set objChart = sht.ChartObjects.Add(...)

上記の行の後に次を挿入します

ObjChart.Chart.ChartType = xlLine ' or another "safe" chart type
If Not rngTmp is Nothing then
  rngTmp.select
End If

厳密に言えば、グラフにデータを追加しないのであれば、グラフの種類を変更する必要はありませんが、OCD のためには、完了した方がよいでしょう。

于 2014-06-09T23:17:46.150 に答える