
ご覧いただきありがとうございます。
VBA初心者です。
ダイアログボックスを開き画像ファイルを選択、1行目が見出し行になっている表のB2から6行ごとに結合したセルに画像を挿入し、隣のC列(6行ごと結合)に画像ファイル名(拡張子なし)が入る表を作りたいです。
結合していないセルの場合、以下のコードで作成できました。
6行ごとに結合したセルの場合は、どのように修正したらいいのでしょうか?
詳しい方、よろしくお願いいたします。
Dim fd As FileDialog
Set fd = Application.FileDialog(msoFileDialogFilePicker)
With fd
.Title = "Select Image Files"
.Filters.Clear
.Filters.Add "Image Files", "*.GIF; *.JPG; *.BMP; *.PNG; *.TIF", 1
.AllowMultiSelect = True
If .Show = -1 Then
Dim i As Long
For i = 1 To .SelectedItems.Count
Dim fileName As String
fileName = Left(Dir(.SelectedItems(i)), Len(Dir(.SelectedItems(i))) - 4)
Range("C" & i + 1).Value = fileName
Dim Picture As Picture
Set Picture = ActiveSheet.Pictures.Insert(.SelectedItems(i))
With Picture
With .ShapeRange
.LockAspectRatio = msoFalse
.Width = Range("B" & i + 1).Width
.Height = Range("B" & i + 1).Height
End With
.Left = Range("B" & i + 1).Left
.Top = Range("B" & i + 1).Top
.Placement = xlMoveAndSize
End With
Next i
End If
End With
End Sub
No.1ベストアンサー
- 回答日時:
こんばんは
以下の点を修正すれば対応できると思います。
・対象のセルを6行おきにする
・貼り付ける対象を1セルではなく、.MergeAreaにする
ざっと、こんな感じでしょうか?
※ Withのネストを避ける等多少の変更をしてあります。
Sub Sample()
Dim i As Long, fileName As String
Dim rng As Range, sItems
With Application.FileDialog(msoFileDialogFilePicker)
.Title = "Select Image Files"
.Filters.Clear
.Filters.Add "Image Files", "*.GIF; *.JPG; *.BMP; *.PNG; *.TIF", 1
.AllowMultiSelect = True
If .Show = 0 Then Exit Sub
Set sItems = .SelectedItems
End With
For i = 1 To sItems.Count
fileName = Dir(sItems(i))
Set rng = Cells(i * 6 - 4, 2)
rng.Offset(, 1).Value = Left(fileName, InStrRev(fileName, ".") - 1)
Set rng = rng.MergeArea
With ActiveSheet.Pictures.Insert(sItems(i))
.Left = rng.Left
.Top = rng.Top
.Placement = xlMoveAndSize
.ShapeRange.LockAspectRatio = msoFalse
.ShapeRange.Width = rng.Width
.ShapeRange.Height = rng.Height
End With
Next i
End Sub
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
-
任意フォルダから画像をすべてエクセルの指定マスに貼り付けをしたい
Visual Basic(VBA)
-
【VBA】写真の縦横比を変えずに貼り付ける
Visual Basic(VBA)
-
Excel 画像貼り付けのVBAについて
Excel(エクセル)
-
-
4
エクセル、画像ファイル名の書かれたセル(複数個所)に画像を一括で表示させる方法
Excel(エクセル)
-
5
エクセルVBA 画像を貼り付けるセル位置を指定する方法
Excel(エクセル)
-
6
エクセルのセルに指定画像(.jpg)を自動で貼り付けたいです。
Excel(エクセル)
-
7
修正依頼:【VBA】 結合セルに複数画像とファイル名一括挿入する方法
Visual Basic(VBA)
-
8
EXCELのVBAで画像を選んだ順に貼り付ける方法
Excel(エクセル)
-
9
VBAでセルを指定した画像のコピー&ペーストを繰り返したい
Excel(エクセル)
-
10
エクセルVBAで縦向きの画像の挿入・回転
Excel(エクセル)
-
11
複数の画像ファイルを挿入したい
Excel(エクセル)
-
12
VBAによるセル内の画像の位置調整
Excel(エクセル)
-
13
エクセルマクロでシート内にある画像のみを選択する
Excel(エクセル)
-
14
エクセル フォルダの画像を画像名で検索して貼り付け
Excel(エクセル)
-
15
エクセルマクロでサイズを指定して画像を一括貼り付けしたいです。
PowerPoint(パワーポイント)
-
16
VBAエクセルに貼り付けた画像をセルにあった大きさにしたい(等倍)
Excel(エクセル)
-
17
Excel VBA マクロ 画像の貼り付け
Visual Basic(VBA)
-
18
VBA フォルダ名と画像ファイル名取得
Visual Basic(VBA)
-
19
VBAで選択した画像を貼り付けたい
Excel(エクセル)
-
20
エクセル マクロ写真帳に一括で写真を張り付けたいです。
Visual Basic(VBA)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
VBA セル間のリンク修正につい...
-
VBAでCOPYを繰り返すと、処理が...
-
複数のExcelファイルをマージす...
-
【マクロ】並び替えの範囲が、...
-
Excelのマクロについて教えてく...
-
VBA 最終行の取得がうまくいか...
-
Vba Array関数について教えてく...
-
【マクロ】シートの変数へ入れ...
-
【マクロ】開いているブックの...
-
【ExcelVBA】値を変更しながら...
-
vba textboxへの入力について教...
-
改行文字「vbCrLf」とは
-
VB.net 文字列から日付型へ変更...
-
WindowsのOutlook を VBA から...
-
【マクロ】売上一覧YYYYMMDDHHS...
-
Excelのマクロについて教えてく...
-
VBAの質問(Msgboxについて)です
-
エクセルのVBAについて教えてく...
-
Vba 型が一致しません(エラー1...
-
VBAで特定の文字が入った行をコ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
VBA セル間のリンク修正につい...
-
VBAでCOPYを繰り返すと、処理が...
-
vba textboxへの入力について教...
-
【マクロ】シートの変数へ入れ...
-
【マクロ】並び替えの範囲が、...
-
Vba Array関数について教えてく...
-
Vba セルの4辺について罫線が有...
-
【マクロ】開いているブックの...
-
複数のExcelファイルをマージす...
-
【マクロ】売上一覧YYYYMMDDHHS...
-
【ExcelVBA】5万行以上のデー...
-
vbsでのwebフォームへの入力制限?
-
[VB.net] ボタン(Flat)のEnable...
-
Excelのマクロについて教えてく...
-
【ExcelVBA】値を変更しながら...
-
改行文字「vbCrLf」とは
-
算術演算子「¥」の意味について
-
VBAでセルの書式を変えずに文字...
-
VBAの「To」という語句について
-
VB.net 文字列から日付型へ変更...
おすすめ情報