• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:Shape画像保存モードの事後変更)

Shape画像保存モードの事後変更

このQ&Aのポイント
  • VBA Excel2007を使用しています。画像を読み込むために、一旦、画像を「文書とともに保存しない」モードで読み込み、後にそのShape画像を「文書とともに保存する」ように変更することは可能でしょうか。
  • VBA Excel2007で画像を読み込む方法について質問です。一度画像を「文書とともに保存しない」モードで読み込み、その後にShape画像を「文書とともに保存する」ように変更することはできますか。
  • VBA Excel2007の画像読み込みに関して質問です。一旦画像を「文書とともに保存しない」モードで読み込み、後からそのShape画像を「文書とともに保存する」ように変更することは可能でしょうか。

質問者が選んだベストアンサー

  • ベストアンサー
  • mitarashi
  • ベストアンサー率59% (574/965)
回答No.2

#1です。Width:=0, Height:=0のため、サイズの無い画像がコピペされているのでは? 下記では如何でしょうか。 Sub test() Dim myPicture As Shape Dim myfileName As String myfileName = "C:\Users\????\Desktop\hoge.jpg" Set myPicture = ActiveSheet.Shapes.AddPicture(fileName:=myfileName, LinkToFile:=msoTrue, SaveWithDocument:=msoFalse, Left:=Selection.Left, Top:=Selection.Top, Width:=0, Height:=0) With myPicture .ScaleHeight 1, msoTrue, msoScaleFromTopLeft .ScaleWidth 1, msoTrue, msoScaleFromTopLeft .Cut End With ActiveSheet.PasteSpecial Format:="図 (JPEG)", Link:=False, DisplayAsIcon:=False End Sub

softwarelearner
質問者

お礼

有難うございます。 ご指摘のとおりで、サイズを設定したら上手くいきました。 ついで質問で、申し訳ないのですが、もうひとつ疑問があります。 Set myPicture = ActiveSheet.Shapes.AddPicture(fileName:=myfileName, LinkToFile:=msoTrue, SaveWithDocument:=msoFalse, Left:=Selection.Left, Top:=Selection.Top, Width:=0, Height:=0) において、 LinkToFile:=msoFalse, SaveWithDocument:=msoTrue にした場合と比較すると、前者では、ファイル名中にスペースがある画像を取り込めず、後者では取り込めるという違いが起こりました。これは、どういう理由によるものでしょうか。前者、つまり今使っているもの、でも、スペースの入ったファイル名の画像を取り込むにはどのようにすればよいでしょうか。 お分かりでしたら、宜しくお願いします。 お世話になります。

その他の回答 (2)

  • mitarashi
  • ベストアンサー率59% (574/965)
回答No.3

#2です。 >ファイル名中にスペースがある画像を取り込めず 僅かばかりの試験ではありますが、当方の環境(Windows7Home-64bit, xl2010-32bit)では再現されませんでしたのでお知らせします。

softwarelearner
質問者

お礼

有難うございます。 この問題には、画像ファイルを一旦スペースを含まないファイルにコピーしてから取り込むという手段でなんとか対処し、表面上は問題なくなりました。 ちなみに、こちらの環境はWindows7Home-64bit, xl2007-32bitです。

  • mitarashi
  • ベストアンサー率59% (574/965)
回答No.1

1.安直には、クリップボードにコピーして貼り付け戻す。 リンク先の下の方にも記載があります。 http://www.moug.net/tech/exvba/0120020.html 2.xmlを書き換え、画像を組み込む アイデアだけで、実現する元気は無いです。 http://okwave.jp/qa/q7320070.html もっとスマートな方法があるかは分かりません。 以上、ご参考まで。

softwarelearner
質問者

お礼

有難うございます。 とりあえず、安直な方法を試してみました。 しかし、確かに、 ActiveSheet.Pictures.Insert(Filename:=filename) に対しては、うまく働きましたが、 Set picture = ActiveSheet.Shapes.AddPicture(filename:=filename, LinkToFile:=msoTrue, SaveWithDocument:=msoFalse, Left:=Selection.Left, Top:=Selection.Top, Width:=0, Height:=0) に対しては、うまくいきませんでした。ActiveSheet.PicturesとActiveSheet.Shapesの違いによるものでしょうか?

関連するQ&A