
あるフォルダには、複数のjpgファイルとそれを整理するためのマクロを組んだExcelファイルが入っています。このjpgファイルの名前は数字です。
このExcelファイルのSheets(1)のA列(Range("A5")から)にファイルの名前である数字が昇順で入っています。(jpgファイル名をExcelに書き出し、昇順に並べるマクロを作成したので)
この数字の横(B列)にそのjpg画像を貼り付けたいです。
また、数字は100以上あり、連続しておらず、ところどころぬけています。
そのため、画像を貼り付けようとすると最小の数字が24であっても100の画像が挿入されてしまいます。
【質問】A列に入力されている名前のjpgファイルを開き、その画像をB列に挿入するにはどのようなコードを書けば良いでしょうか?
コードは、長くなりすぎる&初心者なものでどこを省略すればいいか分からないため、時数の問題で記載できかねます。申し訳ありません。
分かりづらい質問ですが、どなたかお力をお貸しください。

No.4ベストアンサー
- 回答日時:
No3です
>昇順に並べるマクロを作成したので
とあったので、マクロの話で通じるのかと思いましたが、どうやらほとんど通じないようなので、面倒なのでまとめて処理するものを作成してみました。
条件がよくわからないのでかなり適当ですが、雰囲気からするとこんなことかなと、勝手な推測によるものです。
ですので、もしもはずれだったらご容赦。
Sub Sample_12152573_2()
Dim rg, fName, p, c
Const fPath = "C:\Users\hoge\fuga" '←修正必要!!!!!!!
Set rg = Worksheets(1).Cells(5, 1)
fName = Dir(fPath & "\*.jpg")
While fName <> ""
rg.Offset(, 1).Value = fName
fName = Dir()
Set rg = rg.Offset(1)
Wend
If rg.Row < 6 Then Exit Sub
Set rg = rg.Worksheet.Cells(5, 1).Resize(rg.Row - 5)
rg.FormulaLocal = "=iferror(left(B5,len(B5)-4)*1,""非数"")"
rg.Value = rg.Value
rg.Resize(, 2).Sort key1:=rg.Cells(1, 1), order1:=xlAscending, Header:=xlNo
For Each c In rg.Offset(, 1).Cells
fName = fPath & "\" & c.Value
Set p = c.Worksheet.Shapes.AddPicture(fName, _
False, True, c.Left, c.Top, c.Width, c.Height)
Next c
rg.Offset(, 1).ClearContents
End Sub
No.3
- 回答日時:
NO2です
>察するに、セル〇〇に書いてあるファイルを開いて隣に貼り付けるという
>操作はvbaではできないのでしょうか、、、?
できますよ。
No2に書いたのがその方法です。
(意味が通じていませんか?)
ファイル名が正しいのなら、そのまま正しいファイル名として利用すれば良いだけです。
申し訳ありません。
恥ずかしながら、内容を理解できておりません。
時間をかけてまた読み直します。
また、内容が理解できないことで再び同じような質問をするかもしれませんが、私の理解力がないだけですので、ご気分は悪くしないでください。その質問はスルーしていただけたらと思います。
No.2
- 回答日時:
No1です。
>質問にも記載しましたが100などの1から始まる画像が先に来てしまうのです。
おや、そうでしたか。
ということは、A列のセルに入っている値はそのままファイル名ではない可能性が大ですね。
001.jpgは、多分 1 と表示されているものと推測しますので。
であるなら、セルに値を書き込む際に、同時に画像も読み込んでしまえば宜しいかと。
(わざわざ、処理を二つに分割する意味が不明)
A列に書き込むファイル名の「元のファイル名」(=本当のファイル名)をfNameとすれば、
そのままNo1の回答の(部分)が使えると思いますけれど?
変数rgが対象セル、fnameをファイル名(拡張子込み)とするならば、
Set p = rg.Worksheet.Shapes.AddPicture(fPath & "\" & fName, _
False, True, rg.Left, rg.Top, rg.Width, rg.Height)
の一文で貼付けができます。
何度も申し訳ありません。
>A列のセルに入っている値はそのままファイル名ではない可能性が大ですね
jpgファイルの名前は0からは始まらず、1の場合はそのまま「1.jpg」がファイル名です。「001.jpg」にはなっていません。そのため、ファイル名は正しく書き出されていると思います。
>セルに値を書き込む際に、同時に画像も読み込んでしまえば宜しいかと
元々はファイル名と画像を同時に読み込んでいたのですが、やはり最小値が反応されず、別で行うしかないのか?と思ったのです。
察するに、セル〇〇に書いてあるファイルを開いて隣に貼り付けるという操作はvbaではできないのでしょうか、、、?
No.1
- 回答日時:
こんにちは
ご質問のような内容の例はあちこちのサイトで見かけた記憶があるので、検索しさえすれば多数ヒットすると思いますけれど・・・??
画像はセルサイズにぴったりでよいのかどうかも不明ですが(プロポーションを維持するのかどうか)、ひとまずセルに合わせるものとして、以下はそのような一例です。
※ ファイル名が数値がどうかのチェックはしていません。
※ フォルダ内のjpgファイルを全て対象とします。
※ ファイル名も同時に書き出しますので、A列は空白でOKです
Sub Sample_12152573()
Dim rg, fName, p
Const fPath = "C:\Users\hoge\hoge" '←対象フォルダ
Set rg = Worksheets(1).Cells(5, 2)
fName = Dir(fPath & "\*.jpg")
While fName <> ""
rg.Offset(, -1).Value = fName
Set p = rg.Worksheet.Shapes.AddPicture(fPath & "\" & fName, _
False, True, rg.Left, rg.Top, rg.Width, rg.Height)
fName = Dir()
Set rg = rg.Offset(1)
Wend
End Sub
ご参考にでもなれば。
こんにちは。
こちらはフォルダ内の画像を全て貼り付けるものではないでしょうか?
同じようなマクロをいったん組んだのですが、このように全て貼り付けるにしてしまうと、質問にも記載しましたが100などの1から始まる画像が先に来てしまうのです。
そこで、先に番号を並べてしまい、その隣に該当の画像を挿入する方法ならできるのでは?と考えたのです。
私が行いたいものはA列に書いてある番号をB列に貼り付けるといったものでして、、、
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
-
【VBA】写真の縦横比を変えずに貼り付ける
Visual Basic(VBA)
-
VBAで選択した画像を貼り付けたい
Excel(エクセル)
-
任意フォルダから画像をすべてエクセルの指定マスに貼り付けをしたい
Visual Basic(VBA)
-
-
4
EXCELのVBAで画像を選んだ順に貼り付ける方法
Excel(エクセル)
-
5
エクセル フォルダの画像を画像名で検索して貼り付け
Excel(エクセル)
-
6
エクセルのセルに指定画像(.jpg)を自動で貼り付けたいです。
Excel(エクセル)
-
7
エクセル、画像ファイル名の書かれたセル(複数個所)に画像を一括で表示させる方法
Excel(エクセル)
-
8
Excel2019 マクロを使用し画像を貼り付けした際のリンク切れについて
Excel(エクセル)
-
9
【VBA】 結合セルに複数画像とファイル名一括挿入する方法
Visual Basic(VBA)
-
10
VBAでセルを指定した画像のコピー&ペーストを繰り返したい
Excel(エクセル)
-
11
EXCEL VBAで全選択範囲の解除
Excel(エクセル)
-
12
エクセル マクロ 相対パスから画像を読み込みたいです。
その他(Microsoft Office)
-
13
エクセルマクロでサイズを指定して画像を一括貼り付けしたいです。
PowerPoint(パワーポイント)
-
14
エクセルマクロでシート内にある画像のみを選択する
Excel(エクセル)
-
15
マクロで画像挿入→エラー「リンクされたイメージを表
Excel(エクセル)
-
16
エクセルVBAでセルに入力したパスでブックを開く
Excel(エクセル)
-
17
エクセルに張り付けた写真のファイル名が見たい
Microsoft ASP
-
18
Excel VBA 見本通りに入力してもエラーがでます どこがいけないのでしょうか
Excel(エクセル)
-
19
エクセルVBA 画像を貼り付けるセル位置を指定する方法
Excel(エクセル)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
【Excel VBA】指定行以降をクリ...
-
i=cells(Rows.Count, 1)とi=cel...
-
Excelで指定した日付から過去の...
-
VBSでエクセル内の行数を取得す...
-
EXCELで変数をペーストしたい
-
特定のセルが空白だったら、そ...
-
Excel vbaで特定の文字以外が入...
-
VBA コピーして次の値まで貼り...
-
VBA実行後に元のセルに戻りたい
-
3桁または4桁の数値を時刻に...
-
Excel VBAで、セルを円状に塗り...
-
VBA初心者です。結合セルを保持...
-
ExcelVBAを使って、値...
-
EXCELのVBA-フィルタ抽出後の...
-
マクロで行がグループ化されて...
-
エクセルvbaで、別シートの最下...
-
連続する複数のセル値がすべて0...
-
エクセル マクロで セルの範...
-
特定行の色を変えたい(FlexGrid)
-
【ExcelVBA】表全体に罫線を操...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
ExcelVBAを使って、値...
-
特定のセルが空白だったら、そ...
-
Excelで指定した日付から過去の...
-
VBA実行後に元のセルに戻りたい
-
i=cells(Rows.Count, 1)とi=cel...
-
任意フォルダから画像をすべて...
-
【Excel VBA】指定行以降をクリ...
-
エクセルvbaで、別シートの最下...
-
【Excel】指定したセルの名前で...
-
VBAでセルをクリックする回...
-
Excelのプルダウンで2列分の情...
-
DataGridViewの各セル幅を自由...
-
特定の文字を条件に行挿入とそ...
-
VBA ユーザーフォーム ボタンク...
-
TODAY()で設定したセルの日付...
-
VBからEXCELのセルの値を取得す...
-
特定行の色を変えたい(FlexGrid)
-
ExcelのVBAで数字と文字列をマ...
-
Excel vbaで特定の文字以外が入...
-
VBA初心者です。結合セルを保持...
おすすめ情報