仕事上のニーズに関することらしいので、十分に応えられるかどうか判りません。
下記をやってみてください。
Sheet2にA1:A6に
sunset.jpg
Blue hills.jpg
Water lilies.jpg
Winter.jpg
Winter.jpg
Winter.jpg
と入れておきます。(最後の2つは手抜きで同じもの指定したが意味なし)
C:\Documents and Settings\All Users\Documents\My Pictures\Sample Picturesにこれらの画像ファイルがあるものとします。
ツールーマクロ-VBE
VBE画面で、挿入ー標準モジュールで出る画面に下記をコピーし、貼り付け。
一部プログラムを修正して(後部に詳記)、実行(PF5キーを押す)。
Sub test02()
X = Array("A1", "C1", "E1", "G1", "A3", "C3")
Dim cl As Range
Worksheets("Sheet1").DrawingObjects.Delete
For i = 0 To UBound(X)
Set cl = Worksheets("Sheet1").Range(X(i))
'MsgBox cl.Address
pn = Worksheets("Sheet2").Cells(i + 1, "A")
With Worksheets("Sheet1").Pictures.Insert( _
"C:\Documents and Settings\All Users\Documents\My Pictures\Sample Pictures\" & pn _
)
.Top = cl.Top
.Height = cl.Height
.Width = cl.Width
.Left = cl.Left
End With
Next i
End Sub
(修正箇所)
(1)現状はSheet1,Sheet2を使っており
実行後にSheet1に画像を表示する。
Sheet2のA列に画像のファイル名(拡張子つき)を入力しておきます。
(2)Sheet1に画像をセットするセルを上例では、1行目はA1,C1、E1、G1、2行目はA3,C3に指定してます。
隣とは1列、1行間隔をあけてます。
これらは任意のセルを指定してもかまいません。
X = Array("A1", "C1", "E1", "G1", "A3", "C3")に付け加える方法については、"H1"のように列記号と行番号を表示し、前後に””で囲んでカンマ区切りで、付け加えてください・
(3)セルのサイズですがA,C、E、G列は写真を表示したいサイズにそろえ、B,D、F列は間隔として適当と思う幅にしてください
。行高についても同じです。
(4)C:\Documents and Settings\All Users\Documents\My Pictures\Sample Picturesは本番では画像ファイルのあるフォルダの
パス名で置き換えて、指定してしてください。
(5)シート名は、Sheet1が2箇所、Sheet2が1箇所ありますが、それぞれ、シート名で置き換えてください。前後に””が残るように””の中を変えてください。
(7)私サイドでは上記少数例では、うまく表示できます。
(8)もし上記がうまくいけば、将来、ボタンをSheet2に1つ設けて、画像ファイル名を入力し、クリックすると実行するようにできます。勉強してください。
ファイル名が、いつも連続した名前になっている場合、オートフィルで実現できないか考えてください。
質問者側で、さてうまくいきますでしょうか。
印刷した結果との問題は手探りでサイズや配置調整をお願いします。
VBAでは難しくなりそうなのでご勘弁願いたい。
お礼
ありがとうございます。 デジタルカメラから10枚弱画像を取り込み、 1枚1枚挿入していくのが面倒だったので・・・ これだとサイズも一定になりますし、なにより 整列して挿入されるのが使えそうです。 (普通に画像を挿入すると、画像同士重なってしまう) 贅沢いいますと、新しいブックではなく、 毎回ファイル名が変わるシート上に挿入できればなお よかったのですが。 さっそく使ってみようかと思います。