
VLOOKUPで画像を貼り付けしようと検索してましたが
自分のやりたいことをしようとすると、どうもマクロで設定したほうが
いいとわかりましたが、なかなか自分のイメージに近い参考URLがなく
ここに質問します。
まず、自分のやりたいイメージですが・・・
同じフォルダー内に画像を貼り付けしたいエクセルと画像フォルダーを一緒に置きます。
候補(1)エクセルの指定した場所に(9か所)一気に画像フォルダーから貼り付け。
候補(2)VLOOKUPみたいに数字を入力したら指定したセルに画像を貼り付け。
上記のことが可能でしょうか?
もしくは、近い操作ができるのでしょうか?
以上、わかるかたのご教授お願いします。
尚、上から目線の回答はやめてもらいたいです。
No.5ベストアンサー
- 回答日時:
だいたいこんな具合ですね。
手順:
シート名タブを右クリックしてコードの表示を選ぶ
既存のコードを必ず全て消去する
下記をコピー貼り付ける
private sub Worksheet_Change(byval Target as excel.range)
dim myPath as string
dim myFile as string
dim i as long
dim a as variant
’準備
if target.count > 1 then exit sub
if application.intersect(target, range("Y1:Y9")) is nothing then exit sub
if target = "" then exit sub
if not isnumeric(target) then exit sub
mypath = thisworkbook.path & "\"
a = array("C7","I7","O7","C25","I25","O25","C43","I43","O43")
’画像の拾い上げ
myfile = dir(mypath & "*.jpg")
for i = 2 to target
myfile = dir()
if myfile = "" then
msgbox "OUT OF RANGE"
exit sub
end if
next i
’画像の表示
on error resume next
activesheet.shapes("myPict_" & target.address).delete
on error goto 0
with activesheet.pictures.insert(mypath & myfile)
.top = range(a(target.row-1)).top
.left = range(a(target.row-1)).left
.name = "myPict_" & target.address
end with
end sub
Y1からY9に数字を記入する。
No.4
- 回答日時:
ん? お願いしますから,ヒトの説明をちゃんと聞いてくださいね?
再掲:
>丸投げでマクロを作って欲しい時は,こんな具合の説明が必要です:
>指定のC12セルに数字を記入すると,指定のE12セルに画像を貼り付ける。
と,こういう具合に情報が必要ですとお話ししてますよね。
追加ご質問:
>E12に貼り付けるのを指定したセルに飼える場合はどこの記述を変更すればいいかわかりません
どこのセルに変えたいのですか? どうしたいのですか?
ご自分でマクロを修正できない事が判明したのですから,せめて回答者の投げかけには答えるようにしてください。
9パターンも一緒です。どこに数字を記入し,どこに画像を貼りたいのですか?
あんまり無茶な要求が後出しで出てくるご相談も少なくありません。マクロを最初からまた作り直さなきゃならないような二度手間三度手間になることも,「非常に多く」見かけます。
>教えて頂いた記述を9パターン書き込めば大丈夫でしょうか?
これはまぁ今は判らなくても全然構いません(もちろん怒ったりとかしませんよ)けど,それじゃ全く全然ダメです。
たとえばこんな具合にします。
変更前:C12セルに数字を記入する
if application.intersect(target, range("C12")) is nothing then exit sub
変更後:C12,C24,C36…セルに記入する
if application.intersect(target, range("C12,C24,C36,C48,C60,C72,C84,C96")) is nothing then exit sub
#あんまり言いたくありませんが,やさしく教えろと要求するのはまぁかまいません(やさしくおつきあいしてくださる回答者さんもいます)けど,せめてそれなりにキチンとコミュニケーションをしてくださいね?
この回答への補足
keithin様。
いろいろ申し訳ございません。
こちらの言葉足らずを知識不足でご迷惑をおかけしております。
数字を入力するセルはY1~Y9
写真を貼るセルはC7,I7,O7,C25,I25,O25,C43,I43,O43
数字を入力して写真を貼る順番は下記になります。
Y1→C7,Y2→I7,Y3→O7,Y4→C25,Y5→I25,Y6→O25,Y7→C43,Y8→I43,Y9→O43
以上になります。
申し訳ございませんが宜しくお願いします。
No.3
- 回答日時:
ふむ。
。まぁ,マクロを使うならどうと言うことのない作業なのは確かですね。ただ,マクロを使いたいなら「一体何をしたいのか」もっとキチンと説明が必要なんですが,だいぶ不十分なご相談です。
勿論,教わった内容を元にご自分でやりたいように応用できれば全然OKなんですけどね。
>VLOOKUPみたいに数字を入力したら指定したセルに画像を貼り付け。
丸投げでマクロを作って欲しい時は,こんな具合の説明が必要です:
指定のC12セルに数字を記入すると,指定のE12セルに画像を貼り付ける。
準備:
ブックを画像のフォルダに保存する
ブックを開く
シートを開く
シート名タブを右クリックしてコードの表示を選ぶ
現れたシートに下記をコピー貼り付ける
private sub worksheet_change(byval Target as excel.range)
dim myPath as string
dim myFile as string
dim i as long
’準備
if target.count > 1 then exit sub
if application.intersect(target, range("C12")) is nothing then exit sub
if target = "" then exit sub
if not isnumeric(target) then exit sub
mypath = thisworkbook.path & "\"
’画像の拾い上げ
myfile = dir(mypath & "*.jpg")
for i = 2 to target
myfile = dir()
if myfile = "" then
msgbox "OUT OF RANGE"
exit sub
end if
next i
’画像の表示
on error resume next
activesheet.shapes("myPict_" & target.address).delete
on error goto 0
with activesheet.pictures.insert(mypath & myfile)
.top = target.offset(0,2).top
.left = target.offset(0,2).left
.name = "myPict_" & target.address
end with
end sub
ファイルメニューから終了してエクセルに戻る
指定のC12セルに数字を記入すると,E12セルに画像を表示する。
この回答への補足
keithin様。
教えて頂いた記述を試してみましたが自分のイメージにほほピッタリです。
C12に画像ファイルの番号を入力するのを変更する場所はわかったのですが
E12に貼り付けるのを指定したセルに飼える場合はどこの記述を変更すればいいかわかりません。
お手数ですが教えて頂けると助かります。
シートに9枚の画像を貼り付けたいのでその場合は教えて頂いた記述を9パターン書き込めば大丈夫でしょうか?
No.2
- 回答日時:
こんにちは。
>セルに貼り付けるときですが場所を指定できればと思っております。
9個の画像を別々に場所指定するのですか?
それとも1個の画像の場所を指定したら残り8個は自動的に位置が決まるのでしょうか。
後者であれば、私のマクロと似ています。私のマクロはアクティブセルの位置を基準に1個目の画像を貼り、2個目以降は一つ右のセルに貼っています。
参考になるか分かりませんが、リストの一部を貼っておきます。
では。
---------------------------------------------
'フォルダ・パス(Dname)の切り出し
Dname = Fname.lpstrFile
stat = Len("C:\") + 1
While stat > 0
stat = InStr(stat + 1, Dname, "\")
'MsgBox "Dname:" & Left(Dname, stat) & "; stat:" & CStr(stat)
If stat <> 0 Then
Old_stat = stat
End If
Wend
'MsgBox "Dname:" & Dname & "; Old_stat:" & CStr(Old_stat)
'アクティブセルの行、列を調べる
C = ActiveCell.Column
r = ActiveCell.Row
'MsgBox Str(c) + "列" + Str(r) + "行 F=" + Gname
Cells(r + 1, C).Activate
'フォルダ中のファイル名(Gname)取得
Gname = Dir(Left(Dname, Old_stat) & "*." & Mid(Dname, InStr(Old_stat, Dname, ".") + 1, 3))
'画像を挿入する
ActiveSheet.Pictures.Insert(Gname).Select
'セル(r,c)をアクティブにする
Cells(r, C).Value = Gname
C = C + 1
Cells(r + 1, C).Activate
While Not Gname = ""
Gname = Dir()
If Gname <> "" Then
'画像を挿入する
ActiveSheet.Pictures.Insert(Gname).Select
'Row = ActiveSheetActiveSheet.ActiveCell.Row
'ActiveSheet.ActiveCell.Row.Count = Row + 1
'MsgBox "アクティブセルは" + Str(c) + "列" + Str(r) + "行"
'あるセルをアクティブセルにするには、activateメソッドを使います。
'If r <= 5 Then
' MsgBox Str(c) + "列" + Str(r) + "行 F=" + Gname
'End If
'セル(c,r)をアクティブにする
Cells(r, C).Value = Gname
C = C + 1
Cells(r + 1, C).Activate
End If
Wend
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) 【マクロ】プリントスクリーンした画像をエクセルに貼付して印刷したい 6 2022/11/30 20:11
- Excel(エクセル) Excel2019 マクロを使用し画像を貼り付けした際のリンク切れについて 2 2022/11/15 16:14
- Excel(エクセル) Excelの複数ファイルの複数行を別ファイル1つのシートにVBA、マクロで集約する方法 5 2022/09/13 06:30
- Excel(エクセル) EXCEL マクロで 同じフォルダ内の複数ファイルの複数行全体を選択して1つのファイルに集約 4 2022/09/27 18:41
- Visual Basic(VBA) VBAマクロ 決まっていない行を選択して別シートへ貼付け 4 2023/02/16 16:08
- Visual Basic(VBA) 指定月分の顧客データファイルを統合して並べ替え、所定の場所に貼り付ける (再質問) 4 2022/09/14 22:51
- その他(IT・Webサービス) ロリポップのレンタルサーバーを借りてます。(一般的な安いプラン) 元々はホームページでも作ろうと思っ 1 2023/05/24 19:54
- Excel(エクセル) エクセルにサムネイル画像組み込み 2 2022/09/02 17:13
- ヤフオク! デスクトップPCをヤフオクやメルカリに出品している人 1 2022/12/05 07:22
- Visual Basic(VBA) PowerPoint VBA で画像の鮮明度を変更する方法がわかりません 2 2023/03/24 13:34
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセルテキストボックスの文...
-
EXCELマクロ 保護されているシ...
-
Windowsで動くVBAがmacOSで動か...
-
データが入力されている隣のセ...
-
エクセルVBA(実行時エラー438...
-
GrapeCityのSpreadの複数セルの...
-
VBAで丸をつけたいです。
-
VBAで、貼り付け禁止命令を実現...
-
Swing 編集不可でも選択可能なJ...
-
メッセージを1度だけ表示したい。
-
セルに数値が入力されたら別の...
-
ダブルクリックすると現在の時...
-
エクセルのVBAでダブルクリック...
-
VBA セルに合わせて移動するが...
-
マクロ初心者です。何が動かな...
-
VBAのListBoxで複数選択して...
-
[VBA]型が一致しません
-
エクセルVBA セル選択後にカレ...
-
VBAについて教えてください。 E...
-
【マクロ】A列にある、日付(本...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
データが入力されている隣のセ...
-
EXCELマクロ 保護されているシ...
-
エクセルテキストボックスの文...
-
VBAで、貼り付け禁止命令を実現...
-
エクセルVBA(実行時エラー438...
-
【VBA】InputBoxで文字をセルに...
-
VBA セルに合わせて移動するが...
-
Windowsで動くVBAがmacOSで動か...
-
ダブルクリックすると現在の時...
-
メッセージを1度だけ表示したい。
-
ハイパーリンクされているファ...
-
Swing 編集不可でも選択可能なJ...
-
VBAで丸をつけたいです。
-
(VBA)アクティブセルを起点に...
-
Excel VBA セルを指定個数ラン...
-
【VBA】参照値を1ずつ増やして...
-
エクセルのVBAでダブルクリック...
-
セル色を5秒間隔で変える
-
StringGridでの文字入力制限
-
アクティブセルの行のセルを複...
おすすめ情報