
数日前からマクロを勉強し始めた初心者です。
下の画像のような表を作っています。
‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥
■Sheet1 …「商品在庫一覧」
■Sheet2 …「印刷用シート」※必要なものだけをSheet1から呼び出し、印刷用として同じシート上で並べ替える(図では‘行5’から下が印刷範囲です)
‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥
Sheet2のD列(D1~D3‥)に商品画像のフルパスを呼び出し、「写真を配置」のボタンを押すと、印刷範囲の‘行7’のセルに自動で画像が配置されるようにしたいです(‘あ’のパスの画像を‘い’のセルに)。
画像を配置するような関数はなく、マクロでなければ実現できないということで、似ている条件の構文をアレンジして‥と思ったのですが、マクロのことをきちんと理解できていないためうまくいきません。
‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥
■「D1」のパスから「A7」に画像を配置する構文を教えていただけますでしょうか。
‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥
初歩的なことを聞いてすみません。
完成までの残り時間があまりないもので、質問させていただきました。
どなたかお暇がありましたら、お願いいたします。

No.1ベストアンサー
- 回答日時:
'読み込み
Sub try_1()
Const n As Long = 2 'margin
Dim r As Range 'Loop用
Dim tr As Range '読み込みセル用
Dim s As String 'セル文字列
Dim x As Double '縦横比固定での縮小率
Dim i As Long
With Sheets("sheet2")
'D1から下へ連続セルをLoop
For Each r In .Range("D1", .Range("D1").End(xlDown))
s = r.Value
'空白セルの場合Loopを抜ける
If Len(s) = 0 Then Exit For
i = i + 1
'フルパスが有効な時だけ処理する
If Len(Dir(s)) > 0 Then
Set tr = .Cells(7, i)
With .Pictures.Insert(s).ShapeRange
.LockAspectRatio = msoTrue
'セルの幅or高さに合わせて縮小率を得る
x = Application.Min((tr.Width - n) / .Width, (tr.Height - n) / .Height)
.Width = .Width * x
.Left = tr.Left + (tr.Width - .Width) / 2
.Top = tr.Top + (tr.Height - .Height) / 2
End With
End If
Next
End With
'念のためファイルを解放
Dir Application.Path
Set tr = Nothing
End Sub
'削除
Sub try_2()
Sheets("sheet2").Pictures.Delete
End Sub
...こんな感じです。
#ちょっとデジャヴゅな仕様...
>数日前からマクロを勉強し始めた初心者です。
勉強してコード内容を理解するようにしてください。
今後の仕様変更の対応など、コードのメンテナンスに苦労しますよ。
end-u様
ご回答ありがとうございました。お礼が遅くなり、申し訳ありません。
丁寧な解説までつけていただき、大変恐縮です。
おかげさまでなんとか完成させることができました!
と言ってもたまたまうまくいっただけで、おっしゃる通りちゃんと勉強しないと応用するのは無理だということがよく分かりました。
ちなみに…
「行6~9のセットを下方向に4段配置したかったのですが(質問に書き忘れました)、方法が分からなかったので、「For」~「Next」の部分を4回繰り返し(コピー&ペースト)、
下の構文の「■」のところをそれぞれずらす、という方法でやってみました。
For Each r In .Range("■", "■")
Set tr = .Cells(■, (i + 1) - ■)
本当はもっとちゃんとしたやり方があるのだと思います。。
私の間違った方法を書いても意味がないとは思ったのですが、初めてできてとても嬉しかったのでご報告させていただきました。
お正月休みにでもまとめて勉強したいと思います。
この度は助けていただき、ありがとうございました。
No.2
- 回答日時:
>数日前からマクロを勉強し始めた初心者です。
>完成までの残り時間があまりないもので、質問させていただきました。
残り時間が少ないのでしたら、今回の画像表示のサンプルコードを提示してもらっても、最終版として完成するには、時間が足らないように思います。
もしかすると、以下のようなことがしたいのではないでしょうか?
自動的に画像を切り替える
http://officetanaka.net/excel/function/tips/tips …
MackyNo1様
ご回答いただきありがとうございました。
お礼が遅くなり申し訳ありません。
ご紹介していただいたサイト、写真入りで大変分かりやすかったです。
ぜひ参考にさせていただきます。
この度はどうもありがとうございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) 【マクロ】プリントスクリーンした画像をエクセルに貼付して印刷したい 6 2022/11/30 20:11
- Visual Basic(VBA) エクセルマクロでアニメを作る方法を教えてください。 1 2023/02/07 14:27
- Illustrator(イラストレーター) 会社の名刺作成時にロゴを配置する方法 3 2023/06/06 18:06
- Excel(エクセル) エクセルでキーリストからデータを取り出して1枚1枚印刷するには? 11 2022/06/27 09:52
- Excel(エクセル) 【マクロ】スクショ印刷がうまく動かない件 5 2022/12/06 17:37
- Illustrator(イラストレーター) 印刷プレビューに画像が表示されない 3 2022/09/06 14:34
- PDF 画像調整してスクショし保存した画像をPC画面と同画質で印刷する方法 1 2022/03/31 19:09
- その他(IT・Webサービス) 画像調整してスクショし保存した画像をPC画面と同画質で印刷する方法 3 2022/03/31 19:11
- プリンタ・スキャナー 封筒印刷 差出人印刷ずれる 4 2022/05/01 10:12
- Excel(エクセル) エクセルのマクロで複数シートを両面印刷するには? 2 2022/12/08 23:23
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
EXCELで特定のセルに表示...
-
クリックすると文章が表示され...
-
Excel2007 色のカウント (VBA)
-
Excelで、図形内の文字をセルに...
-
エクセル 数字をすべて○などの...
-
Excel内での検索結果をシート...
-
エクセルにて、クリックした場...
-
エクセルマクロ リストのデー...
-
ハイパーリンクのイベント挙動...
-
Excel:セルの値(文字列)を数...
-
EXCELのセルや文字色の反映
-
セルがクリックされた回数をカ...
-
現在のセルの位置を返す関数は...
-
エクセルでセルをダブルクリッ...
-
EXCELでハイパーリンクの解除を...
-
太字に設定されているセルの個...
-
シート保護とグループ化機能を...
-
EXCELで自動的にデータレコード...
-
エクセル 未入力セルがあると...
-
エクセル シート保護された共...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
EXCELで特定のセルに表示...
-
Excel内での検索結果をシート...
-
エクセル 数字をすべて○などの...
-
クリックすると文章が表示され...
-
Excelで、図形内の文字をセルに...
-
Excel ハイパーリンクのURLを別...
-
Excelでセルをクリックす...
-
太字に設定されているセルの個...
-
マクロを実行すると画像がズレ...
-
現在のセルの位置を返す関数は...
-
Excel:セルの値(文字列)を数...
-
Excel2007 色のカウント (VBA)
-
セルの内容をテキストボックス...
-
セルがクリックされた回数をカ...
-
エクセル 未入力セルがあると...
-
エクセルマクロ 赤色の文字を検...
-
選択したセル範囲に入っている...
-
アポストロフィーの一括挿入 ...
-
エクセルでPDFリンクを大量...
-
エクセルでセルをダブルクリッ...
おすすめ情報