あるフォルダには、複数の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で質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) Excel 毎日手作業で時間がかかって、泣きたいです、、、VBAのプロの方、助けてください。。。 3 2022/10/25 04:26
- Visual Basic(VBA) 【VBA】写真の縦横比を変えずに貼り付ける 5 2023/06/13 11:42
- Excel(エクセル) EXCELのグラフを画像(JPG形式)で保存、通常実行がうまく行かない。ステップインはうまく行く 3 2022/08/30 12:06
- Visual Basic(VBA) excelにて、特定の列に数字入力してあれば、入力してある行コピーして 別ファイルに張り付ける 2 2022/08/11 05:33
- Visual Basic(VBA) VBAでPowerPointからExcelにレイアウト通りに出力する 4 2023/07/05 12:22
- Excel(エクセル) Excel、同じフォルダ内のExcelファイルの特定シートのみを1つのファイルに集約したい 8 2022/09/07 15:12
- PHP 画像ファイルの名前をそのままURLにする 3 2022/10/16 11:18
- Visual Basic(VBA) Outlook VBAについて 1 2023/07/10 12:41
- Visual Basic(VBA) VBAで特定の場所にあるCSVファイル(複数)から特定場所を抜き出してExcelに転記したいです。 11 2023/05/23 16:29
- Visual Basic(VBA) 指定月分の顧客データファイルを統合して並べ替え、所定の場所に貼り付ける 3 2022/09/10 07:55
このQ&Aを見た人はこんなQ&Aも見ています
-
「どうして捨てられないの?」前妻の物を捨てられない男性の心理って?
前妻の物を捨てられない理由に加え、捨てるための手段はあるのかを専門家に聞いてみた!
-
EXCELのVBAで画像を選んだ順に貼り付ける方法
Excel(エクセル)
-
エクセル、画像ファイル名の書かれたセル(複数個所)に画像を一括で表示させる方法
Excel(エクセル)
-
ファイル名「1.jpg ~10.jpg~」のソート
Visual Basic(VBA)
-
-
4
エクセルのセルに指定画像(.jpg)を自動で貼り付けたいです。
Excel(エクセル)
-
5
Pictures.Insertメソッド⇒Shapes.AddPictureメソッドに変更したいです。
Visual Basic(VBA)
関連するカテゴリからQ&Aを探す
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
i=cells(Rows.Count, 1)とi=cel...
-
ExcelVBAを使って、値...
-
【Excel VBA】指定行以降をクリ...
-
Excelで指定した日付から過去の...
-
TODAY()で設定したセルの日付...
-
VBA初心者です。結合セルを保持...
-
EXCELのVBA-フィルタ抽出後の...
-
特定のセルが空白だったら、そ...
-
Excel VBA、 別ブックの最終行...
-
【Excel】指定したセルの名前で...
-
特定の文字を条件に行挿入とそ...
-
【EXCEL VBA】Range("A:A").Fi...
-
DataGridViewの各セル幅を自由...
-
Excel VBAでいくつか質問があり...
-
エクセルVBAでコピーして順...
-
セル色なしの行一括削除
-
VBからEXCELのセルの値を取得す...
-
VBAでセルに値が入ったときにイ...
-
Google Apps Script:Googleスプ...
-
EXCELで変数をペーストしたい
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
ExcelVBAを使って、値...
-
特定のセルが空白だったら、そ...
-
【Excel VBA】指定行以降をクリ...
-
i=cells(Rows.Count, 1)とi=cel...
-
Excelで指定した日付から過去の...
-
【Excel】指定したセルの名前で...
-
VBAの計算で@が出てしまう件
-
Excelのプルダウンで2列分の情...
-
EXCELで変数をペーストしたい
-
VBA ユーザーフォーム ボタンク...
-
VBAでセルをクリックする回...
-
Excel VBA、 別ブックの最終行...
-
Excel vbaで特定の文字以外が入...
-
TODAY()で設定したセルの日付...
-
screenupdatingが機能しなくて...
-
セル色なしの行一括削除
-
エクセルVBAでコピーして順...
-
VBAを使用した時間管理
-
”戻り値”が変化したときに、マ...
-
Sub 要具ライフ() ActiveSheet....
おすすめ情報