[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『複数の画像を順番に貼付したい VBA』(HaMi)
お世話になります。
リストがあり、そのリストと同じ名前の画像を指定のフォルダーから
貼り付けるというコードを作成しました。(下記参照ください)
しかしながら、Pictures.Insert()を使用するとリンクになってしまいます。
このコードをAddPictureに変更したいのですが、どう変えていいのかわかりません。
ご指導いただけないでしょうか?
以下、Pictures.Insertを使用したコードです。
Sub macro1()
Dim MF As String
Dim h As Range
'Image Address
MF = Range("B1") & "\"
'アクティブシートの既存のImage削除
ActiveSheet.Pictures.Delete
'Articleが入力されている行まで繰り返す ForEachIn
For Each h In Range("C2:C" & Range("B1048576").End(xlUp).Row)
'Imageがファイルにある場合
If Dir(MF & h) <> "" Then
With ActiveSheet.Pictures.Insert(MF & h)
'列C「Filename」の右へ1列目にImageを入れる
.Top = h.Offset(0, 1).Top
.Left = h.Offset(0, 1).Left
'写真サイズの設定
.Width = h.Offset(0, 1).Width
.Height = h.Offset(0, 1).Height
End With
End If
Next
End Sub
質問がわかりづらかったら、すみません。補足しますのでご指摘願います。
何卒よろしくお願いいたします。
< 使用 Excel:Excel2013、使用 OS:Windows2000 >
【学校】の全文検索で AddPicture を与えると、リンク貼り付けの解消のためPictures.InsertからAddPictureに変更する回答案のページがたくさん出てきますので それらをチェックしてみてください。
(β) 2016/03/01(火) 16:35
B1を空白
C列を空白にして実行するとCドライブ直下で実行されます。
普通にwindows7の時ただフォルダのパスに\を入れるとCドライプ直下になります。
またこの時C列を空白にすると
またDir(MF & h)はCドライブ直下にファイルがあるかどうかになりますので、通ります。
その状態で実行するとリンクされたイメージが表示されませんが空白の分複数作成されます。
まあB1を空白C列に途中に空白がある場合にには対応です
※個人的ですがwindows2000でexcel2013が動くんですね
(x) 2016/03/01(火) 16:48
Sub macro1()
Dim MF As String
Dim h As Range
Dim myShape As Shape
'Image Address
MF = Range("B1") & "\"
'アクティブシートの既存のImage削除
ActiveSheet.Pictures.Delete
'Articleが入力されている行まで繰り返す ForEachIn
For Each h In Range("C3:C" & Range("B1048576").End(xlUp).Row)
'Imageがファイルにある場合
If Dir(MF & h) <> "" Then
Set myShape = ActiveSheet.Shapes.AddPicture( _
Filename:=MF, Linktofile:=False, _ SavewithDocument:=True, _ Left:=Selection.Left, _ Top:=Selection.Top, _ Width:=0, _ Height:=0)
myShape.ScaleHeight 1, msoTrue myShape.ScaleWidth 1, msoTrue
End If
Next
End Sub
どこをどのように直せば良いのか、ご教示くださると助かります。
画像がたくさんあります。どうか助けてください。
よろしくお願いします!
(HaMi) 2016/03/03(木) 10:37
画像は D列に入れるんだと思いますが、何かご希望の位置等はありますか?
・元画像と縦横比率は同じにしたい ・D列のセルの中心に画像の中心をあわせたい ・できるだけセルの中に入る範囲で大きくしたい
等々
(β) 2016/03/03(木) 11:06
D列に挿入する形で考えています。
画像に関しては、
比率は元画像と同じ
セル内中心(左寄りでも大丈夫です)
セルの大きさに合わせて画像の大きさ変わる
この形で大丈夫です。
よろしくお願いいたします。
(HaMi) 2016/03/03(木) 11:47
お試しください。
Sub Sample() Dim MF As String Dim h As Range
Application.ScreenUpdating = False
'Image Address MF = Range("B1").Value & "\" 'アクティブシートの既存のImage削除 ActiveSheet.Pictures.Delete
For Each h In Range("C2", Range("C" & Rows.Count).End(xlUp)) If Dir(MF & h.Value) <> "" Then
With ActiveSheet.Shapes.AddPicture(Filename:=MF & h.Value, LinkToFile:=False, _ SaveWithDocument:=True, Left:=h.Offset(, 1).Left, Top:=h.Offset(, 1).Top, _ Width:=-1, Height:=-1) '★ とりあえず 縦横元サイズでセル左上隅に
.LockAspectRatio = msoTrue '念のため縦横比率固定 'セル内で最大限の大きさに .Width = h.Offset(, 1).Width If .Height > h.Offset(, 1).Height Then .Height = h.Offset(, 1).Height '中央へ配置 .Left = h.Offset(, 1).Left + h.Offset(, 1).Width / 2 - .Width / 2 .Top = h.Offset(, 1).Top + h.Offset(, 1).Height / 2 - .Height / 2 End With
End If Next
End Sub
(β) 2016/03/03(木) 12:04
しかしながら、実行した後(画像は貼付できていますが)エラーメッセージがでます。
まず、「このファイルのインポート中にエラーが発生しました:C:\・・・(ファイルアドレス)」というメッセージがでて、その後、「400」というメッセージがでます。
これはどういうことでしょうか?
何度もすみませんが、教えてください。
よろしくお願いします。
(HaMi) 2016/03/03(木) 14:51
お試しください。バクがあったら、教えてください。1年ぐらい前に自分用に作ったものです。 http://ww10.puny.jp/uploader/download/1456984812.zip Excel画像貼付(ver1_02)@Shapes_AddPicture(ダウンロードパスワード:abc) (マリオ) 2016/03/03(木) 15:06
(HaMi) 2016/03/03(木) 15:51
>>このファイルのインポート中にエラーが発生しました
これを、そのまま検索語にしてググると、同じような報告ページがいくつかヒットしますね。 xl2007 であれば、こと画像関係については、おそまつで、何が起こっても不思議ではないのですが そちらは xl2013 なんですよねぇ・・・(OS が win2000 というところが気になりますが)
まぁ、ネットのページを1つ1つチェックして、そちらの環境や状況(含む画像のサイズ等)に合致するものがないか 調べてください。
(β) 2016/03/03(木) 16:05
Office2007の段階で、もうWINDOWS2000にはインストールできなかったような? Office2013は、XPでも駄目だったような? (???) 2016/03/03(木) 16:20
To マリオさん
コード拝見。 バグではないのですが、フォルダ選択のところ、ファイル選択画面だったので複数選択なのかなと。 でも、選択できるのは1つだけで、結局は、選択されたファイルのフォルダからファイルを抽出しているのですね。
コードコメントでも、
' フォルダを選択するダイアログボックスを表示
となっていました。
フォルダ選択ならフォルダ選択ダイアログを出してもいいのかも。
(β) 2016/03/03(木) 18:38
To βさん 見つかっちゃた(^^♪ ダイアログのところは、あまり気にしてません。 写真が100枚とか多いときに、台紙コピーでタスクバーの表示がフリーズ。 ★Application.StatusBar = "台紙コピー中です… " & i + 1 の表示がフリーズしたりします。フリーズしてても裏で動いていて、画像貼り付けの段階で、表示が復活します。
あと、100回に1回ぐらい?、ごくたまに、画像貼り付け失敗します。100枚の内、1枚だけ失敗みたいな。 複雑すぎて、自分でも見直すの苦労してます。 (マリオ) 2016/03/03(木) 23:44
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.