Excel (VBA)

Excel VBAに関するフォーラムです。
  • 解決済みのトピックにはコメントできません。
このトピックは解決済みです。
質問

 
(Windows 10 Home : Excel 2016)
画像の保存マクロ
投稿日時: 17/08/13 09:02:01
投稿者: takin

Excel2007で使用していた下記のマクロがあります。
PCを買い替えてExcel2016になりました。
画像のファイルはは保存されますが、真っ白な画像になってしまいます。
どこを修正すればよいでしょうか、よろしくお願いいたします。
 
 
Option Explicit
 
Private Function GetSaveFileName() As String
Dim sfile As String
 
sfile = Application.GetSaveAsFilename(fileFilter:="PNGファイル (*.png), *.png")
If sfile = "False" Then
GetSaveFileName = ""
Else
GetSaveFileName = sfile
End If
End Function
 
Private Sub ボタン13_Click()
Dim rg As Range
Dim cht As Chart
Dim fina As String
      
fina = GetSaveFileName
If fina <> "" Then
ActiveSheet.Range("A1:AC60").Select
          
Set rg = Selection
rg.CopyPicture appearance:=xlScreen, Format:=xlPicture
Set cht = ActiveSheet.ChartObjects.Add(0, 0, rg.Width, rg.Height).Chart
cht.Paste
cht.Export FileName:=fina, filtername:="PNG"
cht.Parent.Delete
End If
   
MsgBox "画像を保存しました"
End Sub
 

回答
投稿日時: 17/08/13 11:35:31
投稿者: mattuwan44

ステップ実行はしてみましたか?
 
描写が追い付かないだけのような気がします。
 
少し待ってあげるとうまくいく気がします。
 
http://officetanaka.net/excel/vba/tips/tips116.htm

投稿日時: 17/08/13 13:21:11
投稿者: takin

回答ありがとうございます。
 
やってみましたが、やはりできないです。

回答
投稿日時: 17/08/13 18:22:36
投稿者: simple

同様の質問があったようです。
 
Excel2016でのChartObjectの扱いについて
http://www.moug.net/faq/viewtopic.php?t=75608
 
> .Chart.Pastetとグラフオブジェクトに貼り付けした場合、Excel2016では貼り付け出来ませんでした
> 貼り付け出来ないと言うよりは
> 貼り付けしても直ぐ消される感じみたいで、一瞬シェイプ画像を表示した後消えてしまいます。
> エラーでは無い様ななので表示は一切出てきません。
> ですので、Exportして画像を保存しても只の白い四角の画像ファイルが作成されるだけです。
> 他のバージョンExcel2007〜Excel2013では、まったく同じコードで問題無く作成されます。
> Excel2016だけ、どうしても出来ません。
とのことです。
 
私の手元には2016が無いので確認できませんが、
何かの不具合なんでしょうかね。
他の方からのコメントをお待ちください。

回答
投稿日時: 17/08/13 22:02:22
投稿者: simple

だいぶマニアックでしょうけど、
「表を図として保存したい」
http://wayback.archive.org/web/20101123025747/http:/www.moug.net/faq/viewtopic.php?t=55410
にある、kanabunさんの 10/11/19 18:31:19 の投稿にある方法に
トライしてみてはいかがですか?
  
# なお、私は内容についてはコメントできませんので、予め申し添えます。

投稿日時: 17/08/13 23:00:28
投稿者: takin

simpleさんありがとうございます。
 
今日はちょっと無理なので明日確認してみます。

投稿日時: 17/08/14 11:16:49
投稿者: takin

simpleさんの回答については、確認しましたが、難しくてよくわからないです。
 
いろいろといじってみたところ、
 
コードを表示させて、
Private Sub ボタン13_Click()
の前にカーソルを置いて、F8キーを押していくと、黄色になって移動していきますが、
そのまま押し続けていくと、PNGファイルが作成できます。
 
どういうことなのでしょうか?

回答
投稿日時: 17/08/15 13:04:16
投稿者: Suzu

takin さんの引用:

Private Sub ボタン13_Click()
の前にカーソルを置いて、F8キーを押していくと、黄色になって移動していきますが、
そのまま押し続けていくと、PNGファイルが作成できます。
 
どういうことなのでしょうか?

 
それが、最初の回答でmattuwan44さんが話している、シングルステップ にて実行です。
それに対し
引用:
やってみましたが、やはりできないです。
との事でしたので
回答者は、別の解決方法を推測し提示しています。
 
シングルステップで実行だと問題なく実行できる。
描写が間に合っていないという事ですね。

投稿日時: 17/08/16 19:20:39
投稿者: takin

皆様ありがとうございました。
もう少し勉強してみてダメなようでしたら再度質問します。