大体でIT

-ちょっと使えるネタを紹介-

大体でIT

Excel VBAで、オートシェイプを画像として保存する方法を、ご紹介します。オートシェイプは、直接、画像として保存できません。なので、オートシェイプをチャートにコピーして、チャートを画像として保存する、という方法を使います。ポイントとなるVBAコードは、「CopyPicture」と「ChartObjects」です。具体的に解説していきます。

はじめに

この記事では、オートシェイプをJPG画像として保存する方法について、ご紹介します。

オートシェイプを画像として保存することは、できません。残念。

ただ、「チャート」を使うことでオートシェイプを、画像として保存することができます。

「CopyPicture」でオートシェイプをチャートにコピーして、「ChartObjects」でチャートを画像で保存する、という感じです。

では、オートシェイプをJPG画像として保存する方法について、解説していきます。

この記事で紹介すること

  • オートシェイプをJPG画像として保存する方法

目次から見たい項目へ移動すると便利ですよ。

目次

VBAでオートシェイプは画像として保存できない

VBAでは、オートシェイプは画像として保存することができません。残念。

ただし、チャートは画像として保存することができます。

なので、チャート内にオートシェイプを作成して、画像として保存する、という方法を使います。

チャートは画像として保存ができる

チャートは画像として、保存することができます。

チャートは、グラフを作成する際に使うものです。

ちょっと、作成してみます。

「挿入」タブ→「散布図」を適当にクリックします。

「挿入」タブ→「散布図」をクリック

挿入タブ→散布図を適当にクリック

これで、チャートが作成されます。

「チャート」が作成される

チャートが作成される

このチャートの中に図形を作成します。

チャートの中に図形を作成する

適当にオートシェイプを作成しました。

オートシェイプを作成

オートシェイプを作成

チャート内に、オートシェイプをコピーします。

「チャート」にオートシェイプをコピー

チャート内に、オートシェイプをコピーする

このチャートなら、画像として保存することができます。

この「チャート」を画像として保存する

チャート内にオートシェイプをコピーした結果

では、やってみます。

「ChartObjects」を使って画像で保存

チャートを、JPGの画像で保存してみます。

VBAコードは、こんな感じです。

Sub TEST1()

    With ActiveSheet.ChartObjects("グラフ 1")
        'チャートを、画像として保存
        .Chart.Export ThisWorkbook.Path & "\fig1.jpg"
    End With
    
End Sub

チャートは、先ほど作成したものを使います。

作成したチャート

作成したチャート

では、実行してみます。

チャートを画像として保存

チャートをJPGの画像として保存した結果

チャートをJPGの画像として、保存できました。

保存した画像は、こちらです。

保存した画像

JPGの画像として保存したもの

という感じで、オートシェイプは、画像として保存できませんけど、チャートならできます。

VBAでオートシェイプをJPGの画像として保存

先ほどの内容を踏まえて、オートシェイプを、JPGの画像として保存してみます。

VBAコード

オートシェイプを、JPGの画像として保存するVBAコードは、こんな感じになります。

Sub TEST2()
    
    'オートシェイプを、オブジェクトに格納
    Dim Shp
    Set Shp = ActiveSheet.Shapes("グループ化 1")
    
    'チャートを作成
    Dim Cht
    Set Cht = ActiveSheet.ChartObjects.Add(0, 0, Shp.Width, Shp.Height)
    
    With Cht
        Shp.CopyPicture Format:=xlBitmap 'オートシェイプを画像としてコピー
        .Chart.Parent.Select 'チャートを選択
        .Chart.Paste 'チャートに貼り付け
        .Chart.Export ThisWorkbook.Path & "\fig1.jpg" 'チャートを、画像として保存
        .Delete 'チャートを削除
    End With
    
End Sub

手順としては、次の通りになります。

  • オートシェイプをオブジェクトに格納
  • オートシェイプの同じサイズの「チャート」を作成
  • オートシェイプをコピーして「チャート」に貼り付け
  • 「チャート」をJPG画像として保存
  • 「チャート」を削除

という流れです。

では、実行してみます。

オートシェイプをJPGの画像として保存してみる

適当にオートシェイプを作成しました。

オートシェイプを作成

オートシェイプを作成

このオートシェイプをJPG画像として保存してみます。

説明のために、オートシェイプをちょっと右に寄せておきます。

ちょっと右に寄せておきます

オートシェイプを右に寄せておく

では、実行します。

最初に、チャートが作成されます。

「チャート」が作成される

チャートが作成される

次に、オートシェイプがチャートに、コピーされます。

オートシェイプがチャートにコピーされる

オートシェイプがチャートにコピーされる

チャートが、JPG画像として保存されます。

チャートをJPG画像として保存

チャートがJPG画像として保存される

最後に、チャートが削除されます。

チャートを削除

チャートが削除される

という感じで、オートシェイプを、JPG画像として保存することができました。

では、保存したJPG画像をみてみます。

JPG画像として保存される

オートシェイプをJPG画像として保存したものです。

保存したJPG画像

オートシェイプをJPG画像として保存したもの

オートシェイプを、JPG画像として保存できました。

めでたし。

オートシェイプを画像として保存するには、ちょっと面倒ですけど、「チャート」を使いましょう。

おわりに

この記事では、オートシェイプをJPG画像として保存する方法について、ご紹介しました。

オートシェイプを画像として保存することは、できません。残念。

ただ、「チャート」を使うことでオートシェイプを画像として、保存することができます。

「CopyPicture」でオートシェイプをチャートにコピーして、「ChartObjects」でチャートを画像で保存する、という感じです。

参考になればと思います。最後までご覧くださいまして、ありがとうございました。

関連する記事から探す

カテゴリから探す

カテゴリから見たい項目を探すと便利ですよ。

アーカイブから探す