
マクロを使って、フォルダ内の画像をエクセルに自動的に貼り付けできるようになりました。
http://oshiete.goo.ne.jp/qa/8357181.html
(picopico_7さんありがとうございました。)
しかし、出来上がったファイルをメールで他の人に送ると、その人のところではエラーがでて画像が見られません。「リンクされたイメージを表示できません」となります。
ネットで調べたところ、excel2010はリンクをつかって画像を表示するから?ということがわかりました。が、対処方法がわかりません。
どなたか教えて頂けませんでしょうか。
よろしくお願いいたします。
windows7
excel2010
A 回答 (4件)
- 最新から表示
- 回答順に表示
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
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
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形式を指定して貼り付けるべきでしょう。
この回答への補足
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が見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
-
Excel2019 マクロを使用し画像を貼り付けした際のリンク切れについて
Excel(エクセル)
-
エクセル フォルダの画像を画像名で検索して貼り付け
Excel(エクセル)
-
マクロで画像挿入→エラー「リンクされたイメージを表示できません」
Excel(エクセル)
-
-
4
ダブルクリックで貼り付けた画像からリンクのみ削除し、画像を残したい
Visual Basic(VBA)
-
5
EXCEL2010について
Excel(エクセル)
-
6
エクセルに添付された画像が×になり見れない
PowerPoint(パワーポイント)
-
7
エクセルで次々と画像を表示させたい
Excel(エクセル)
-
8
エクセル2010の写真貼り付けについて。
その他(Microsoft Office)
-
9
VBAの内容の修正をお願いさせて頂きます
Excel(エクセル)
-
10
Pictures.Insertメソッド⇒Shapes.AddPictureメソッドに変更したいです。
Visual Basic(VBA)
-
11
エクセルのセルに指定画像(.jpg)を自動で貼り付けたいです。
Excel(エクセル)
-
12
【VBA】写真の縦横比を変えずに貼り付ける
Visual Basic(VBA)
-
13
任意フォルダから画像をすべてエクセルの指定マスに貼り付けをしたい
Visual Basic(VBA)
-
14
Excel セルに入力した画像名からフォルダの画像を自動表示させたい
Excel(エクセル)
-
15
Excel マクロ 画像をリンクせずかつ圧縮して貼りつける方法を教えてください
Excel(エクセル)
-
16
エクセルのマクロでリンク先の画像を表示させたい
Excel(エクセル)
-
17
VBAでエクセルシートを更新(リフレッシュ)する方法を教えて下さい。
Excel(エクセル)
-
18
Excelで数字を入れたら対応する図を呼び出したい
Excel(エクセル)
-
19
エクセルのマクロで特定フォルダ内のJPGファイルを検索して開きたいので
Excel(エクセル)
-
20
エクセルvbaでの図形のカット(コピー)ペーストについて
Excel(エクセル)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
同級生の顔を使ってエロ画像を...
-
iPhoneで写真を撮りました。 端...
-
スマホの写真を添付し、楽天で...
-
至急回答お願いします、彼氏に...
-
メイから送ってもらったデータ...
-
2Lサイズの写真のトリミングの...
-
中1女子です。 オナニーがした...
-
横長の画像を縦長にしたいので...
-
整形外科などで、MRIやレントゲ...
-
写真を脇汗のシミがあるように...
-
可愛い子がプリクラを撮ると盛...
-
tiffファイルの解像度変更の仕方
-
可愛い子はプリクラが盛れない...
-
エクセル 写真 貼り付け
-
彼氏の携帯から、パンチラ画像...
-
googleストリートビューで不自...
-
コンクリートが茶色になってし...
-
LINEの背景画像にしたいんです...
-
証明用写真の作り方をお教えく...
-
全部選択ができなくなりました。
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
同級生の顔を使ってエロ画像を...
-
至急回答お願いします、彼氏に...
-
スマホの写真を添付し、楽天で...
-
横長の画像を縦長にしたいので...
-
pixivの画像を保存しようとした...
-
iPhoneで写真を撮りました。 端...
-
tiffファイルの解像度変更の仕方
-
「強調」の対義語は何ですか?
-
結婚して2ヶ月の旦那のスマホの...
-
整形外科などで、MRIやレントゲ...
-
マクロで画像挿入→エラー「リン...
-
証明用写真の作り方をお教えく...
-
PCでPDFファイルを電子書籍のよ...
-
ツイッターとかの画像を紙に印...
-
至急です!!答えてくださいお願...
-
Word差し込み印刷 画像更新され...
-
エクセルに写真の貼り付けがで...
-
可愛い子がプリクラを撮ると盛...
-
VBAの内容の修正をお願いさせて...
-
セブンイレブンにあるマルチコ...
おすすめ情報