1-6 KIkabu(nabe)グラフgif保存でエラー発生
(1)エラー内容
最近Excel2016の予測シートを使用した株解析ツールを作り始めたが、予測チャートは都合により画像として
元シートに貼り付けています。この画像化したチャートをファイルをして保存するマクロを作成したが、2003と
同じマクロはエラーとなり失敗した。 以下が改善策です。

【図1-1a】エラーメッセージ





【図1-1b】エラー箇所

作成したチャート枠削除でストップしたが、
その前に、チャート枠作成で既に不具合
になっていた。



(2)エラー発生原因
チャート枠を作成して、その枠内に画像を貼り付ければ、Excelシートにある画像を簡単にファイルとして残せ
ます。この機能はExcel2000から追加され2010まで問題なかったが、Excel2016では出来なくなった。

ただし、チャート枠にExcelシートにあるチャートの貼り付けは、2003〜2016まで同じマクロで問題ありません。
Excelシートにある画像のファイル化にみが問題です。オートシェイブの四角形を70個ほど使って独自チャート
を作成し、グループ化したKIkabu(nabe)のチャート保存も2016ではエラーになっていたので改善しました。


(3-1) 改善前
画像をコピーして、作成したチャート枠に貼り付けで、Excel2000〜問題なかった。
【Module3】
    ActiveSheet.Shapes(cname).Select
    hei = Selection.ShapeRange.Height
    wid = Selection.ShapeRange.Width
      Selection.Copy
チャ−ト枠作成
  Set grf = ActiveSheet.ChartObjects.Add(0, 0, wid + 8, hei + 8).Chart
  grf.Paste                                   ’ここでチャート枠に画像貼り付け
 
  For Each zu In ActiveSheet.ChartObjects
        cname = zu.Name
  Next

(3-2) 改善後
Exce2016では、作成したチャート枠をアクティブにてから貼り付けないと、期待の貼り付けが出来ません。
【Module3】
    ActiveSheet.Shapes(cname).Select
    hei = Selection.ShapeRange.Height
    wid = Selection.ShapeRange.Width
      Selection.Copy
チャ−ト枠作成
  Set grf = ActiveSheet.ChartObjects.Add(0, 0, wid + 8, hei + 8).Chart
 
  For Each zu In ActiveSheet.ChartObjects
        cname = zu.Name
  Next
 
    ActiveSheet.ChartObjects(cname).Activate
    ActiveChart.Paste
 
-----------------------------------------------------------------------------
後処理
    ActiveSheet.ChartObjects(cname).Activate
    ActiveChart.Shapes("Group 1").Select
    Selection.Delete
    If CInt(Application.Version) < 12 Then
        ActiveChart.ChartArea.Select
        ActiveWindow.Visible = False
    End If
    Selection.Delete
    Range("G1").Select
なお、仮に作成したチャート枠の削除もExcel2016では変わっています。
 

(4-1)Excelシートに作成したチャート例


(4-2)作成したgifファイル例





【戻る】    【HPへ】