VBAでExcel内の画像を出力する

Excel内の画像をVBAから出力する方法です。
冒頭からなんですが、ちょっと問題があるので注意が必要です。

  • (jpegに保存するため) 画質が少々劣化する&透過画像はつくれない
  • ごく稀に出力されずに真っ白のアイコンになってしまう
  • 背景も一緒に画像化するので、必要ならセルを都合の良い色で染めておく必要がある
Dim shps As Shapes: Set shps = Table_Icons.Shapes
Dim shp As Shape
Dim area As Object
For Each shp In shps
    If shp.Type = msoPicture Then
        Set area = Intersect(Range(shp.TopLeftCell, shp.BottomRightCell), rngTarget)
        If Not (area Is Nothing) Then
            ' 画像があればキャプションをとってファイル保存
            shp.CopyPicture xlScreen
            Charts.Add.Location xlLocationAsObject, Table_Icons.Name
            Dim myChart As Object: Set myChart = Table_Icons.ChartObjects(1)
            With myChart
                .Width = shp.Width
                .Height = shp.Height
                .Chart.Paste
                .Chart.ChartArea.Border.LineStyle = 0
                .Chart.Export ThisWorkbook.path & "作った隠しディレクトリ\ファイル名.jpg", "JPEG"
                .Delete
            End With
            Exit For
        End If
    End If
Next

だったらバイナリデータを保持しておいて、それで出力すれば良いと思います。


他にもニッチなIT関連要素をまとめていますので、よければ一覧記事もご覧ください。

1件のコメント

返信を残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)