Microsoft 製品に組み込まれている Visual Basic の実装。
Rec_K さん、こんにちは。
マイクロソフト コミュニティへの投稿ありがとうございます。
セル範囲を PNG 画像として保存する VBA が、Excel 2016 だと正常に動作しないのですね。
VBA を使った開発の場合、開発者向けの MSDN フォーラムの方がより情報が集まりやすいかと思いますので、そちらに質問を投稿してみてはいかがでしょう。
VBA 専用のカテゴリーがあるので、よろしければご活用くださいね。
このブラウザーはサポートされなくなりました。
Microsoft Edge にアップグレードすると、最新の機能、セキュリティ更新プログラム、およびテクニカル サポートを利用できます。
お世話になります。
以下をご教示頂けないでしょうか。
■環境
Excel2016(Office365内)
OS:Windows10
■問題点
VBAを利用し、Excelのセル範囲を画像で保存(PNG)を行っております。
Office2013環境では問題なく動作するのですが、2016では動作の一部に問題が発生しております。
発生している問題:排出画像が真っ白になる
これの解決方法をご教示ください。
※ステップイン実行を行うと問題なく動作します
自動で動かすと排出される画像が真っ白になります
動作から推測すると、空のチャートオブジェクトに画像を貼り付けする際
白い画像が貼られてしまっていることが要因だと思っております
<VBAコードは以下のようになっております>
Sub 画像01()
Dim tempBoolean As Boolean
Dim Folname As String
Dim FSO
Dim Myfile
Dim fil As String
Dim cnt As Integer
Dim Myfol, C As String
Dim gazof As String
Dim actsheetname As String
Dim oShape As Shape
actsheetname = "Sheet1"
ThisWorkbook.Sheets(actsheetname).Select
tempBoolean = ActiveWindow.DisplayGridlines
'枠線
ActiveWindow.DisplayGridlines = False
'画像作成
Range("D1:AP213").CopyPicture Appearance:=xlScreen, Format:=xlPicture
ActiveWindow.DisplayGridlines = tempBoolean
Sheets("画像用").Select
'画像貼付先
ActiveSheet.Paste Destination:=Range("A1")
Selection.ShapeRange.LockAspectRatio = msoTrue
Selection.ShapeRange.Width = 900
'png保存
m_SavePath = dtop & "photo101" & ".png"
Call SaveSelectionAsImage(m_SavePath)
'画像削除
For Each oShape In ActiveSheet.Shapes
oShape.Delete
Next
End Sub
'画像保存部分
Public Sub SaveSelectionAsImage(ByVal argSavePath As String)
Dim m_Width As Double
Dim m_Height As Double
If Len(argSavePath) > 0 Then
Application.ScreenUpdating = False
Selection.CopyPicture xlScreen, xlPicture
DoEvents
ActiveSheet.Paste
With Selection
m_Width = .Width + 8: m_Height = .Height + 8
.CopyPicture xlScreen, xlBitmap
.Delete
End With
On Error Resume Next
With ActiveSheet.ChartObjects.Add(0, 0, m_Width, m_Height).Chart
.Paste
.ChartArea.Border.LineStyle = 0
.Width = 1000
.Export argSavePath, "PNG"
.Parent.Delete
End With
On Error GoTo 0
Application.ScreenUpdating = True
End If
End Sub
以上です。
Microsoft 製品に組み込まれている Visual Basic の実装。
ロックされた質問。 この質問は、Microsoft サポート コミュニティから移行されました。 役に立つかどうかに投票することはできますが、コメントの追加、質問への返信やフォローはできません。
Rec_K さん、こんにちは。
マイクロソフト コミュニティへの投稿ありがとうございます。
セル範囲を PNG 画像として保存する VBA が、Excel 2016 だと正常に動作しないのですね。
VBA を使った開発の場合、開発者向けの MSDN フォーラムの方がより情報が集まりやすいかと思いますので、そちらに質問を投稿してみてはいかがでしょう。
VBA 専用のカテゴリーがあるので、よろしければご活用くださいね。
返信いただきありがとうございます。
畏まりました。
そちらで質問してみます。
ご教示いただきありがとうございました。