Excelのバージョン違いによる対処の仕方

このQ&Aのポイント
  • Excel 2003のVBAで作成したマクロが、Excel 2007以降で動作しない問題について質問です。
  • Excel 2007以降で実行するとリンクになり、ファイルの場所や内容が変わるリスクがあります。
  • Excel 2003と同じような動作を実現するためには、どのようにすれば良いのでしょうか?
回答を見る
  • ベストアンサー

Excelのバージョン違いによる対処の仕方

Excel 2003 の VBA で作成したマクロで次のコードについて質問します。 ActiveSheet.Pictures.Insert("C:\PICTURE\DOG.JPG").Select Excel 2003 以前のバージョンでは、"C:\PICTURE\DOG.JPG"の画像が貼り付けられますが、 Excel 2007以降で実行すると、リンクになってしまい、"C:\PICTURE\DOG.JPG"を削除したり、編集したら、変わってしまいます。 出来たら両方で同じ動きが出来るようにしたいのですが、どのようにすればいいのでしょうか? Excel 2007の動きだと困ります。 貼り付けたと思った画像が、エクセルをメールで送付したら、受け取り側に、 そのファイルが無ければ表示されず、同じ名前で内容の違う画像を保存していたら、 それが表示されてしまいます。 Excel 2003 と同じように、したいです。

  • m6324m
  • お礼率63% (417/652)

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

  • ベストアンサー
  • yugere
  • ベストアンサー率37% (48/127)
回答No.2

2010以降はActiveSheet.Pictures.Insertメソッドはリンク貼付けに仕様変更されています。 2007以前と同じ動きを再現させるためには、画像をリンク貼付けで挿入後、コピーして一旦削除、同じ位置に画像として貼り付け直す必要があります。 補足ですが、2003以前ではシートの左上端に画像が保存されていましたが、2007では別途コードで挿入位置を指定する必要があります。 With ActiveSheet.Pictures.Insert("C:\PICTURE\DOG.JPG") .Top = ActiveCell.Top '上端 .Left = ActiveCell.Left '左端 .CopyPicture 'クリップボードにコピー .Delete '画像をいったん削除 End With ActiveSheet.Paste '画像として貼り付け

その他の回答 (1)

  • kybo
  • ベストアンサー率53% (349/647)
回答No.1

リンクになってしまうのは、Excelのバグなので、「ActiveSheet.Shapes.AddPicture」を使って挿入して下さい。 Excel 2010 で Pictures.Insert メソッドを使用して図をワークシートに挿入すると図がリンク オブジェクトとして挿入される http://support.microsoft.com/kb/2396509/ja

関連するQ&A

  • Excel VBA マクロ 画像(図)貼り付け

    Excel2010にて、 VBA マクロ 画像(図)貼り付けを行いたいと思っています。 しかし、マクロを自動登録すると、ActiveSheet.Pictures.Paste.Selectになり、AddPicture ができません。 下記のマクロをAddPictureへ変換したいのですが、そのまま、InsertをAddpictureに変更してもエラーになってしまいます。 いい方法を教えてください(ToT)/~~~。 どうぞよろしくお願いします。 Sub Test() ' ' Test Macro ' Rows("4:4").Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove Selection.RowHeight = 150# Range("C4").Select ActiveSheet.Pictures.Insert( _ "E:\FolderA\fileC.gif"").Select ActiveSheet.Pictures.Paste.Select Range("D4").Select ActiveSheet.Pictures.Insert( _ "E:\FolderA\fileD.gif"").Select Selection.Cut Range("D4").Select ActiveSheet.Pictures.Paste.Select Range("E4").Select ActiveSheet.Pictures.Insert( _ "E:\FolderA\fileE.gif"").Select Range("E4").Select ActiveSheet.Pictures.Paste.Select Range("F4").Select ActiveSheet.Pictures.Insert( _ "E:\FolderA\fileE.gif"").Select ActiveSheet.Pictures.Paste.Select Range("G4").Select ActiveSheet.Pictures.Insert( _ "E:\FolderA\fileG.gif"").Select Selection.Cut ActiveSheet.Pictures.Paste.Select Range("H4").Select ActiveSheet.Pictures.Insert( _ "E:\FolderA\fileH.gif"").Select Selection.Cut ActiveSheet.Pictures.Paste.Select Range("I3").Select ActiveSheet.Pictures.Insert( _ "E:\FolderA\fileI.gif"").Select Selection.Cut ActiveSheet.Pictures.Paste.Select Range("J4").Select ActiveSheet.Pictures.Insert( _ "E:\FolderA\fileJ.gif"").Select Selection.Cut ActiveSheet.Pictures.Paste.Select Range("K3").Select ActiveSheet.Pictures.Insert( _ "E:\FolderA\fileK.gif"").Select Selection.Cut ActiveSheet.Pictures.Paste.Select Range("L3").Select ActiveSheet.Pictures.Insert( _ "E:\FolderA\fileL.gif"").Select ActiveSheet.Pictures.Paste.Select Range("M4").Select ActiveSheet.Pictures.Insert( _ "E:\FolderA\fileM.gif"").Select Selection.Cut ActiveSheet.Pictures.Paste.Select Range("N4").Select ActiveSheet.Pictures.Insert( _ "E:\FolderA\fileN.gif").Select Selection.Cut ActiveSheet.Pictures.Paste.Select End Sub

  • VB6 エクセルに画像貼り付け

    お世話になります。 VB6でエクセルのセルを数値で指定して、そこに画像を読み込んで実態を張り付けたいのですが、 色々調べて ActiveSheet.Pictures.Insertと ActiveSheet.Shapes.AddPictureを試してみましたが ActiveSheet.Shapes.AddPicture( FileNameTmp, False, True, 10, 20, 0, 0) AddPictureはもしかしてVB6には対応していないのでしょうか? 構文エラーになってしまいます。 ActiveSheet.Pictures.Insert(FileNameTmp).Select Insertだと画像がリンクになってしまいます。

  • エクセルでリンクされたイメージが表示できません

    エクセルでリンクされたイメージが表示できませんとたまに表示されます。 この理由はどうしてですか? 画像は下記のVBAを用いてセルC113に貼っています。 Sub 貼付() ActiveWindow.View = xlNormalView Range("C113").Select myFileName = "C:\凡例.bmp" '---挿入する画像ファイルの指定 'Cells(113, 3).Select 'ActiveSheet.Pictures.Insert Filename:=myFileName '---選択位置に画像を挿入 Set myShape = ActiveSheet.Shapes.AddPicture(Filename:=myFileName, _ LinkToFile:=True, SaveWithDocument:=False, Left:=Selection.Left + 50, _ Top:=Selection.Top, Width:=200#, Height:=100#) end sub

  • 画像ファイルを保存する方法

    洗濯してる画像を保存するvbaコードが知りたいのですが Sub Sample() Dim PicFile As String Dim myRess As Variant PicFile = "C:\Users\test.jpg" ActiveSheet.Pictures.Insert PicFile ActiveSheet.Pictures.Insert(PicFile).Select PicFile = Selection.Name myRess = ActiveSheet.Shapes(PicFile).Picture.Export( _ ThisWorkbook.Path & "\test.jpg", "JPG", False) End Sub だと実行時エラー438になります。 Export メソッドは、グラフにしか使えないのでしょうか? 画像ファイルを保存する方法をご教授ください。

  • エクセル2007

    Public Sub PrtPicture(aPos As String, aPic As String) EX.worksheets("Sheet1").range(aPos).Select EX.ActiveSheet.Pictures.Insert(aPic).Select End Sub このようなサブルーチンを作成しました。 エクセルのシートの任意のセルに、ファイルで指定した図を貼り付けます。 aPosは、"B5" aPicは、"C:\図\ABC.jpg"のようにしています。 エクセル2003までは、きちんと指定したセルの位置に張り付きますが エクセル2007では、指定したセルの位置には張り付かないです。 VBAに大きな、違いができたのでしょうか? 宜しくお願いします。

  • エクセル2000で作ったファイルをエクセル2007で

    OSはWinXPです。エクセル2000でこちらで作成して頂いた下記のようなマクロを使用していました。 セルI6,I21,I39,C39へZ:\社内データ\生産管理\製品見取り図\添付用に入っているセルM15の名前の略図を自動で添付するというものです。 この度、職場のパソコンの入れ替えに伴いエクセル2007に変更され、2007でこのファイルを開きマクロを実行すると 4枚の略図は指定したセルとは違う場所へ重なって添付されてしまいます。 (フォルダ名は修正済) エクセル2000で作成したマクロは2007では正常に動作しないものですか?変更するべきコマンドなどがあるのでしょうか? 他にも動作しないマクロがあり困っています。エクセル2007の操作にまだ不慣れな為アドバイスを宜しくお願いします。 Sub pictureSet() Dim jpgRg As String jpgRg = "M15" Dim myFolder As String myFolder = "Z:\社内データ\生産管理\製品見取り図\添付用\" Dim jpgFilename As String 'jpgファイルのフルパス jpgFilename = myFolder & ActiveSheet.Range(jpgRg) & ".jpg" '指定したセルにjpgファイルを貼り付ける Range("I6,I21,I39,C39").Select '挿入する個々のセル For Each rg In Selection rg.Select ActiveSheet.Pictures.Insert(jpgFilename).Select Next ActiveSheet.Range(jpgRg).Select End Sub

  • エクセル★画像選択のVBAコード

    いつも参考にさせて頂いております。 リンク先の画像貼付まではうまく行くのですが 貼り付けた画像のセレクト方法を教えてください。 VBAコード Range("a1").Select Sheets("sheet2").Select Sheets("sheet1").Pictures.Insert Cells(2, 2) Sheets("sheet1").select 質問内容 シート1のA1に貼り付けられた画像を選択したいのですが・・・? ActiveSheet.Shapes("Picture 10").Select               ↑ このコードでは画像のナンバーが変わるとエラーとなってしまいます。 どうぞ宜しくお願いいたします。

  • エクセル・マクロ・画像を選択した後、元のセルを選択し直す

    Range("B3").Select ActiveSheet.Pictures.Insert("abc.jpg").Select ??? Selection.FormulaR1C1 = "def" 上記のように画像を挿入、選択した後に その前に選択していたセルを再度選択し直す方法を お願いします。 もう一度、 Range("B3").Select のように B3 と記述するのはなしでお願いします。

  • エクセルに画像を貼付け縮小する作業をマクロにしたいのですが、

    エクセルに画像を貼付け縮小する作業をマクロにしたいのですが、 分からない部分があって困ってます。 (1)挿入したいセルにカーソルを合わせる (2)マクロ  挿入-図-ファイル-図の挿入-図の書式設定-サイズ-30% この作業を覚えさせると以下になりました。 Sub Macro3() ActiveSheet.Pictures.Insert("C:\Documents and Settings\デスクトップ\1.JPG") _ .Select Selection.ShapeRange.LockAspectRatio = msoTrue Selection.ShapeRange.Height = 360# Selection.ShapeRange.Width = 480# Selection.ShapeRange.Rotation = 0# End Sub これだと、写真が指定されてしまいます。 マクロの途中で止まって任意の写真を都度選べるようにできますか? 膨大な量の写真をセルに並べていきたいのです。

  • ExcelVBAで画像をシートに貼り付けたり、張り付いた画像を削除した

    ExcelVBAで画像をシートに貼り付けたり、張り付いた画像を削除したりするとき マクロの自動記録で次のようにしています。 1.貼り付け ActiveSheet.Pictures.Insert(画像ファイル名).Select 2.削除 ActiveSheet.Shapes("Picture n").Select Selection.Cut "Picture n"のnは数値です。この数値がどんどんカウントアップされます。 カウントアップされると、このブックを閉じないで使い続けていると10万でも100万でもカウントアップされてしまうのでしょうか? "Picture n"ではなく、「画像ファイル名」とか、任意に設定した名称で指定することはできないでしょうか? よろしくお願いします。

専門家に質問してみよう