• 締切済み

マクロで画像挿入→エラー「リンクされたイメージを表

マクロを使って、フォルダ内の画像をエクセルに自動的に貼り付けできるようになりました。 http://okwave.jp/qa/q8357181.html (picopico_7さんありがとうございました。) しかし、出来上がったファイルをメールで他の人に送ると、その人のところではエラーがでて画像が見られません。「リンクされたイメージを表示できません」となります。 ネットで調べたところ、excel2010はリンクをつかって画像を表示するから?ということがわかりました。が、対処方法がわかりません。 どなたか教えて頂けませんでしょうか。 よろしくお願いいたします。 windows7 excel2010

みんなの回答

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

#2です。 #3さんご指摘の通り、Shapes.AddPictureと、Pictures.Insertでは幅の挙動が異なりますね。 サイズとプロパティで確認すると、Pictures.Insertの方は縦横比の固定にチェックが入っています。 また、h.Offset(0, 1).Widthへの合致という点ではShapes.AddPictureの方が合っています。 With ActiveSheet.Pictures.Insert(OpenFileName) .Name = h .ShapeRange.LockAspectRatio = False (以下略) と、明示的に縦横比固定を外してやると、双方の挙動は同じになりました。 少なくともxl2010では、.Pictures.Insertはデフォルトでは縦横比固定になる様です。逆に言うと、元のままでは '写真サイズの設定 .Width = h.Offset(0, 1).Width .Height = h.Offset(0, 1).Height は、後から行った方しか有効で無いという事でしょう。 ご参考まで。

全文を見る
すると、全ての回答が全文表示されます。
回答No.3

こんにちは。 画像の表示までは上手くいかれたみたいで良かったです。 #1,2のmitarashiさんが書かれている通りAddpictureを使われると効率的かと思い私の方でも試してみました。 が、写真サイズの設定だけがなぜだか上手くいきませんでした(私の知識不足です)。 なので今使われているプログラムに入れた状態で記しておきます。 コピペして写真の保存場所を直してから動かしてみてください。 (ちなみに追加した部分は「'リンク貼付画像を切り取る」「'写真ファイル名が入力されているセルから2つ左のセルを選択」「'画像をExcelシート自体に貼付」のみです) Sub macro1() Dim p As String Dim h As Range '写真の保存場所 p = "C:\Users\☆☆☆\Documents\picpic\" '現在表示されている写真は一度削除 ActiveSheet.Pictures.Delete '商品名が入力されている行まで繰り返す For Each h In Range("D2:D" & Range("C1048576").End(xlUp).Row) '写真ファイルが保存されている時 If Dir(p & h) <> "" Then With ActiveSheet.Pictures.Insert(p & h) '写真ファイル名が入力されているセルから2つ左のセルに挿入 .Top = h.Offset(0, -2).Top .Left = h.Offset(0, -2).Left '写真サイズの設定 .Width = h.Offset(0, 1).Width .Height = h.Offset(0, 1).Height 'リンク貼付画像を切り取る .Cut End With '写真ファイル名が入力されているセルから2つ左のセルを選択 h.Offset(0, -2).Activate '画像をExcelシート自体に貼付 ActiveSheet.PasteSpecial Format:="図 (JPEG)", Link:=False, DisplayAsIcon:=False End If Next End Sub

全文を見る
すると、全ての回答が全文表示されます。
  • mitarashi
  • ベストアンサー率59% (574/965)
回答No.2

#1です。 ご提示のコードに組み込むのは検証が面倒なので、下記コードでテストしました。ここからの載せ替えはご自分でお願いします。 Sub test() Dim OpenFileName As String Dim h As Range '試験用に適当に指定 Set h = ActiveSheet.Range("D5") OpenFileName = Application.GetOpenFilename("すべてのファイル,*.*") If OpenFileName = "False" Then Exit Sub 'AddPictureを使用する時 'LinkToFile:=Falseだけでは不十分で、 SaveWithDocument:=Trueも必要な様です ActiveSheet.Shapes.AddPicture(Filename:=OpenFileName, _ LinkToFile:=False, _ SaveWithDocument:=True, _ Left:=h.Offset(0, -2).Left, _ Top:=h.Offset(0, -2).Top, _ Width:=h.Offset(0, 1).Width, _ Height:=h.Offset(0, 1).Height).Select Selection.Name = h.Value '既存のPictures.Insertを生かして、クリップボード経由でJPEG形式で貼り付ける時 ' With ActiveSheet.Pictures.Insert(OpenFileName) ' .Name = h ' '写真ファイル名が入力されているセルから2つ左のセルに挿入 ' .Top = h.Offset(0, -2).Top ' .Left = h.Offset(0, -2).Left ' '写真サイズの設定 ' .Width = h.Offset(0, 1).Width ' .Height = h.Offset(0, 1).Height ' .Cut ' End With ' h.Offset(0, -2).Activate ' ActiveSheet.PasteSpecial Format:="図 (JPEG)", Link:=False, DisplayAsIcon:=False End Sub

全文を見る
すると、全ての回答が全文表示されます。
  • mitarashi
  • ベストアンサー率59% (574/965)
回答No.1

下記が詳しいです。 http://www.moug.net/tech/exvba/0120020.html >Pictures.Insertメソッドを使った方法では、画像のリンク情報だけを保存する、または画像と一緒に保存するといった指定はできません。 >さらに、Excel 2007までは画像情報と一緒に保存されていたのに対し、Excel 2010でリンク貼り付けに仕様が変わるなど、Excelのバージョンによって画像の保存方法が異なります。 という訳で、Addpictureを使用して、明示的にLinkToFile:=Falseを指定して下さい。 ActiveSheet.Shapes.AddPicture( _ Filename:=myFileName, _ LinkToFile:=False, _ SaveWithDocument:=False, _ Left:=Selection.Left, _ Top:=Selection.Top, _ Width:=0, _ Height:=0) 参考URLにPictures.Insertメソッドを使い、クリップボードにコピーして貼り付け戻す対処方法も載っていますが、ファイルが巨大化する怖れがあります。単にペーストでなく、JPEG形式を指定して貼り付けるべきでしょう。

hermosa90254
質問者

補足

mitarashiさん 回答ありがとうございます! せっかくコードを貼り付けて頂いたのですが、どこにそれを入れて何を消したらいいのかわかりません。。 マクロ使い始めて1週間で何もわからなくて本当に申し訳ないのですが全体のコードをもらえませんでしょうか? Sub macro1() Dim p As String Dim h As Range '写真の保存場所 p = "C:\Users\☆☆☆\Documents\picpic\" '現在表示されている写真は一度削除する ActiveSheet.Pictures.Delete '商品名が入力されている行まで繰り返す For Each h In Range("D2:D" & Range("C1048576").End(xlUp).Row) '写真ファイルが保存されている時 If Dir(p & h) <> "" Then With ActiveSheet.Pictures.Insert(p & h) .Name = h '写真ファイル名が入力されているセルから2つ左のセルに挿入 .Top = h.Offset(0, -2).Top .Left = h.Offset(0, -2).Left '写真サイズの設定 .Width = h.Offset(0, 1).Width .Height = h.Offset(0, 1).Height End With End If Next End Sub 上記が今使わせてもらっているコードです。 いろいろ削除したり貼り付けしてみたのですがうまくいきませんでした。 リンク先のクリップボードにコピーというのもどうしていいかわからず、 >JPEG形式を指定して貼り付けるべきでしょう。 もわからないです。。 せっかく教えて頂いたのにすみません。ご回答いただけると有難いです。よろしくお願いいたします。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • マクロを使って画像を貼り付け

    VLOOKUPで画像を貼り付けしようと検索してましたが 自分のやりたいことをしようとすると、どうもマクロで設定したほうが いいとわかりましたが、なかなか自分のイメージに近い参考URLがなく ここに質問します。 まず、自分のやりたいイメージですが・・・ 同じフォルダー内に画像を貼り付けしたいエクセルと画像フォルダーを一緒に置きます。 候補(1)エクセルの指定した場所に(9か所)一気に画像フォルダーから貼り付け。 候補(2)VLOOKUPみたいに数字を入力したら指定したセルに画像を貼り付け。 上記のことが可能でしょうか? もしくは、近い操作ができるのでしょうか? 以上、わかるかたのご教授お願いします。 尚、上から目線の回答はやめてもらいたいです。

  • 画像ファイルのリンクについて

    Microsoft Office Excel 2003に関する質問です。 Excelシートのセルに画像ファイルをリンクさせておいて、 セルをダブルクリックした際にリンクしている画像ファイルを 呼び出して表示させる、というような便利な機能がExcelに あったりしますか? もしご存じの方がおられましたら、教えて頂けると非常に 助かります。 #ちなみに、Excelの「リンクして貼り付け」の使用を試みましたが、 #画像ファイルをリンクして貼り付けることはできないようです。。

  • 画像を挿入してwordで名札を作りたい

    Excelでリストをつくり、wordに差し込み印刷をして名札を作りたいと思っています。名札には画像も挿入したいと考えています。 http://office-qa.com/Word/wd460.htm このサイトを参照してやっておりますが、「8画像枠を選択し「F9」キーを押して更新する」のところで、F9を押してもwordには「リンクされたイメージを表示できません」のエラーが出てしまいます。 元のリストと画像データは、デスクトップに置いた1つのフォルダaの中に「リスト(Excel)、フォルダb(中に画像を格納)」という状態で置いてあります。 wordの画像リンクは「file:///C:\Users\ユーザー名\Desktop\フォルダa名\フォルダb名\」になっております。 うまくいかないため、方法を教えていただけますでしょうか。 使用しているwordとExcelはそれぞれ2010です。 よろしくお願いいたします。

  • 商品画像リンク (image_link)とは何です

    商品画像リンク (image_link)とは何ですか? Googleショッピングに出店するために商品画像リンク (image_link)を提出しなければなりません。 商品画像リンク (image_link)とは何ですか? もしかして→<img src="http://brabra-star.lolipop.jp/1.jpg">これのimg src="から後ろの部分ですか? この部分のことですか?http://brabra-star.lolipop.jp/1.jpg 宜しくお願いします

  • Excelの画像のリンクは同一フォルダ内ですか?

    Excelで画像を貼り付ける場合、 画像データは、作成するExcelデータと同じフォルダ内に保存しないといけませんか? それとも、フォルダ内にExcelデータを置き、また画像フォルダを作り、そのフォルダに画像データを保存してもよいですか?つまり、Excelデータと画像データを同一フォルダ内に置かないという事です。 こういう感じです。⇒ フォルダ(Excelデータ、画像フォルダ(画像データ)) それとも⇒ フォルダ(Excelデータ、画像データ) にしなくてはいけないのか? 作ったデータをフォルダごとにまとめて、ある人へ提出しなくてはならないため、画像のリンクとかはどうなるのか心配で質問することにしました。

  • エクセルでリンクした画像を表示したいのですが、可能でしょうか?

    エクセルに画像をリンク (この場合、文字ではなく別フォルダに格納された画像を ファイル名からのリンクではなく、画像として表示された状態) し、ソート、検索出来るようにしたいと思っております。 そのようなことが可能なのでしょうか? 現在、エクセルのシートの縦列で画像のファイル名が入っており、 リンクでクリックすると画像が開けるようにはなっております。 エクセルのバージョンは2003です。 マクロ等は不慣れですので、もし使わないといけないようでしたら、 簡単にご説明いただけると助かります。 どうぞよろしくお願い致します。

  • エクセルのリンク貼り付けで挿入された画像について

    エクセル2010でリンク貼り付けで挿入された画像なのか 判別する方法はありますか? もし可能であれば方法を教えて下さい 回答お願いします

  • エクセルの表をリンク画像として貼りたいのですが

    エクセル2003を使っております。 A1:I10の表(10列10行)をコピーして、画像としてA20:G28(7列8行)貼り付けたいです。 ただしリンク画像として貼り付けたいんです(細かいサイズ調整ができるので) 表の値が変われば、画像の値も変わる・・・といった感じに。 いったんワードにリンク貼り付けして、その後ワードに貼り付けた物をエクセルにリンクオブジェクトとして貼ってみましたが、パス名がかわると使えないので駄目でした・・・ なにかいい方法ありますでしょうか? 他のPCでも使うのでパス名が変わったらリンクされないような方法では駄目なので・・・

  • 離れたセルのリンク貼り付けを行うためのマクロについて

    ブック(1)のシート(1)にある複数の離れたセル(B2,D2,C3,F3,B4:F4)をコピーし、別ブックのシート(1)のセル(B2,D2,C3,F3,B4:F4)へリンク貼り付けを実行するためのマクロを教えてください。 なお、ブック(1)とブック(2)はイントラの共有フォルダ上の同一階層に置いてあります。 このブック(1)と同一フォーマットのブックが複数存在し、上記同様にブック(2)の離れたセルをコピーして別ブックのシート(2)のセルへリンク貼り付け。 続いて、ブック(3)の同じセルをコピーし別ブックのシート(3)へリンク貼り付けと言うように、同じセルをコピーし別シートの同じセルへリンク貼り付けの作業を繰り返し行います。 まったく同じ位置のセルをコピー&リンク貼り付けを繰り返し行いたいので、マクロを使って自動実行させたいと思っています。 離れたセルのリンク貼り付けは出来ないのかもしれないですが、アドバイスを頂けると助かります。 宜しくお願い致します。

  • Word2010 画像 リンク貼り付け

    Word2010で、Excelの内容やファイルをリンク貼り付けすると、Excelの内容を変更すれば、Word上の中身も、その結果が反映されるのですが、「図(画像)」の場合、そもそも、「図の挿入」で「リンク」を設定することは出来ませんので、エクスプローラーで目的の画像ファイルを「右クリック」→「コピー」→Word上で「形式を選択して貼り付け」→「Files」を選択して「リンク貼り付け」にチェックを入れ、画像ファイルを貼り付けました。 Excelを貼り付けた場合は、その部分をクリックして「右クリック」すると「リンク先の更新」という項目が出て来て、「更新」できるのに、画像ファイルの場合、「リンク先の更新」がありません。 また、貼り付けた画像ファイルに変更を加えて保存しても、Word上では反映されません。 もちろん、Wordは、「文書を開いたときにリンクを自動的に更新する」にチェックが入った状態です。 Wordのファイルを保存して、Wordそのものも終了し、もう一度ファイルを開き直しても、やはり、貼り付けた画像に変更が反映されていません。 画像を「リンク」貼り付けした場合に、意味がないのであれば、「リンク貼り付け」そのものが「出来ない」状態ならまだ分かるのですが、「リンク貼り付け」したにもかかわらず、結果、何の意味も持たないので困っています。 クライアントから、リンク貼り付けを要求されているので、一応リンク貼り付けしてファイルは渡しましたが、私、何か間違っているのでしょうか? お教えください。

専門家に質問してみよう