【マクロ基礎も解説!】一括で大量の画像をセルへ配置する方法について詳しく解説します!動画概要欄にコードあり
Вставка
- Опубліковано 2 жов 2021
- 【今回のコード】
Option Explicit
Sub 画像挿入()
Dim shName As String: shName = "社員一覧" 'シート名を記述
Dim folderName As String: folderName = "社員画像" 'フォルダ名を記述
With Worksheets(shName)
Dim lastRow As Long
lastRow = .Cells(Rows.Count, 1).End(xlUp).Row
Dim i As Long
For i = 2 To lastRow
Dim id As String: id = .Cells(i, 1).Value
.Rows(i).RowHeight = 70
Dim myFileName As String: myFileName = Dir(ThisWorkbook.Path & "\" & folderName & "\*" & id & "*")
If myFileName <> "" Then
With .Pictures.Insert(ThisWorkbook.Path & "\" & folderName & "\" & myFileName)
Const toClm As Long = 4 '画像を挿入は4列目
.Top = Worksheets(shName).Cells(i, toClm).Top
.Left = Worksheets(shName).Cells(i, toClm).Left
.Height = Worksheets(shName).Cells(i, toClm).Height
.Placement = xlMoveAndSize
End With
End If
Next i
End With
End Sub
↑↑↑↑
ここまで
VBA超入門講座の動画
• エクセル VBA マクロ超入門講座 一つの動...
【動画目次】
3:21 コードの使い方
8:12 コード詳細解説開始
9:10 変数について
12:50 Withステートメント
13:53 最終行取得(lastRow)
16:34 繰返し・ループ処理(For~Next)
20:40 画像ファイル名取得(Dir)
22:47 Thisworkbook
25:43 条件分岐(If)
27:40 画像挿入(Pictures.Insert)
31:51 まとめ
【その他】
メンタエクセル公式LINE@
VBA無料講座はこちらより♪
lin.ee/dVb2nKq 今後も有益な情報をこちらで発信していく予定です。
コピペでツール作成!?メンタエクセルのサポートサイト『Sketto』 mentasketo.com/introduction_p...
ご質問はこちらからどうぞ
⇒forms.gle/YLNyBpFJrxyFwoUbA
ツイッター ⇒ / 911_takuya
ブログ(メンタエクセル) ⇒ autoexcels.com
note ⇒ note.com/takustunt
【メンタエクセルチャンネル内おススメ動画】
エクセル VBA マクロ超入門講座
→ • エクセル VBA マクロ超入門講座 一つの動...
エクセルVBAにできることはコレ!ほとんどのことを自動化できる最高のアプリケーション!
→ • エクセルVBAにできることはコレ!ほとんどの...
エクセル VBA 31 他ブック内検索
→ • エクセル VBA 31 他ブック内検索 Wo...
【タクヤのプロフィール】
エクセル自動化、UWSC(PC自動化)などを武器に日々楽しく業務改善を図っている現役事務業サラリーマンです。
ブラック状態の業務を極限までに自動化を図ることでホワイト化することに成功。実践で使える技術をお伝えします。
【尊敬するおススメチャンネルはコチラです】
伊川直助さん
→ / @naonaokeikei
金子晃之さん
→ / @kanekoakiyuki
ユースフル(元おさとエクセル)さん
→ / @youseful_skill
なんだ!カンタン!Excel塾さん
→ / @excel-jyuku
パソコンスキルの教科書さん
→ / @user-pj3fd6rl2h
エクセル兄さん たてばやし淳さん
→ / lifeworkknowledge
【おススメ動画リンク集】
Excelでユーザーフォームを作成
→ • 【Excel】Excelでユーザーフォームを作成
Excel仕事を10倍早く終わらせるテクニック20選
→ • Excel仕事を10倍早く終わらせるテクニッ...
VBAでデータの転記処理をするPart1
→ • Video
エクセルマクロVBAで出来ることを15の事例で紹介
→ • エクセルマクロVBAで出来ることを15の事例...
#Twitterリンクは動画概要欄にあります!
#VBA
#エクセル - Навчання та стиль
とてもタイムリーに知りたい情報だったので、拝見できて嬉しかったです!
ご視聴ありがとうございます😄
コードが概要欄にありますのでそちらもご利用ください♪
ありがとうございます!
嬉しいです!ありがとうございます!モチベーション上がりました!今後とも頑張って良い動画届けます!
教えて頂きたいのですが、このコードを使ったエクセルリストをメールで送って、送った先の人にも画像が見れるよう、埋め込み?の方法などありましたら、ご教授ください。よろしくお願いいたします。
いつも有益な動画をありがとうございます!現場ですぐに実践できて時短に貢献してくれています。
今回はExcelファイルと写真の保管フォルダが同じフォルダ内にありましたが、別の例えば共有ファイルなどに写真が保管してある場合はどうしたら良いでしょうか。
その場合は直接ファイルパスを指定すればOKです!
とてもむつかしくて、わかりません。ゆっくり教えてもらったらたすかります。
ご意見ありがとうございます!
分かりやすい動画有り難うございます。一つ質問させていただきたく存じます。今回の画像例はすべて顔写真なので画像の縦横の長さはあまり違いはなく、セルの高さに合わせることでセルに収まっていますが、画像が縦長だったり横長だったりがある場合は、セルの高さに合わせると横長の写真の場合はセルからはみ出すこともあります。
横長の画像の場合はセルの幅に合わせないと収まらなくなってしまうことがあります。このような縦長、横長とサイズが様々な画像をセルに貼り付けていく場合は、どういうマクロになるのでしょうか?ご迷惑でなければご教示いただけますと大変有り難く存じます。何卒よろしくお願い申し上げます。
If .BottomRightCell.Column > toClm Then
.Width = Worksheets(shName).Cells(i, toClm).Width
End If
を.placement~ の下に追記とかでどうぞ
ものすごくわかりやすく、無知な私でもコピペで実行できました。 解説もすごくわかりやすかったです。が ひとつ困ったことがあります。 それは検索値のA列に値が入っているところは問題ないのですが、途中からブランクになっていると、(間に空白セルはない状態です)画像ファイルの中の1種類の画像が全部最後まで貼りついてしまうのです。関連性は不明ですが その時々によって 貼りつく画像はちがいます。 昨年使ったときは問題なかったのですが、最近つかってみたらこんなことになってしまいました。 構文はさわっていないです。 でもう一度1から書いてみたのですが同じ結果です。 もし原因が特定できれば教えて頂けたら幸いです!
いつもわかりやすい解説ありがとうございます
VBA初心者です。教えてください。
ファイルを閉じるときに、
特定のシート内のセル範囲
(sheets1のセルB1:D25)のデータを削除するというマクロを設定したいのですが
VBAの書き方が分からず困ってます。
すみませんこちらではVBAの動画を最近は上げておりませんが、機会があれば動画作成しますね☺コメントありがとうございます♪
実行を押す度に画像が上乗せされる状態になりますが画像が重複しないようなプログラムがあれば教えて頂きたいです。よろしくお願いいたします。
これは、毎回画像クリアすればいいんじゃないでしょうか?
それか、セル毎で空白かどうかで画像の存在確認isemptyを使ってif文でいけそうですけどね。一度クリアがスッキリしたコードになりそうに思います。
部署変更があれば、社員IDで探して変更するイメージですか?
これって画像を参照するFileの中身を入れ替えちゃうと、
勝手にエクセルの中身も変わってしまうのでしょうか。
そうですね。変わってしまいます😄
Top Left Heightの各行のWorksheets(shName).Cells (i,
toclm)
のところを選択されているセルに変更して使いたいのですがうまくいきません
挿入したいセルが結合されているからでしょうか?range("A1:C5")など、、、
activecell.Height
とか
selectioncell.Height
とか
にしてますが画像の大きさが小さくなってしまいます
どうす!ば良いでしょうか?
worksheets(shName).cells ~ .top などを Application.Selection.Top へ変更
たびたびすみません。私の調べですと、shapes.addpictureを使うと思うのですが、引数が全然異なり、どう修正したらいいのか分かりません。
With .Pictures.Insert(ThisWorkbook.Path & "\" & folderName & "\" & myFileName)
を
With .Shapes.AddPicture(ThisWorkbook.Path & "\" & folderName & "\" & myFileName, msoFalse, msoTrue, 0, 0, -1, -1)
ボタン作成したときに「画像挿入」というマクロ名はでてこずその部分は空欄でした…MACだとだめなんでしょうか。
そうですね🙇♂️Macだと想定外の動きになることは多いですね💦
いつも動画で勉強させいただいています。本当に分かりやすく、業務効率化に大変役立つものばかりです。
1点質問させてください。同じコードで実行すると、画像がリンク状態になります。これをリンクではなく挿入させることは可能なのでしょうか?VBA初心者なので、やり方がわかりません。大変お忙しいと思いますが、教えていただけると幸いです。よろしくお願い申し上げます。
コメントありがとうございます!
このコードにより画像リンクが挿入されるということですが、今回の動画と同じ条件ではない可能性がございます。
そのパターンも調べさせていただきます。
他の挿入方法につきまして動画にできる機会がありましたらまた情報をシェアさせていただきます😄
概要欄のコードに¥では無く、\を使っているのは何故なんでしょう、どっちでも良いのかな
こちらは同じ意味になります。概要欄に張り付けるときに/に変換されてしまったのでそういう形になってます☺
できなかった😭なんでだろう…
画像リンクが挿入されてますか?
お世話になっております。
いつも有益な動画拝見させていただいております。
当方全くのVBA初心者ななかご質問です。
概要欄のテキストを貼り付けボタン作成⇨マクロの登録、実行までは問題なくいけたのですが、画像が全く意図していないところに貼り付けられてしまいます。汗
触ったのは動画の通り、緑のメモがあるシート名・フォルダ名・列番号のみです。
原因として考えられることはありますでしょうか?
Excelを使用するよりもAccessでやれば簡単だと思いますが、なぜExcelなんでしょうか。Accessだとバイナリのファイルをフィールドに保存が可能ですので画像以外のデータも読み書き可能です。
◎画像をセルに配置
☆仕様
・画像にセルの幅/列を合わせる
・セルのサイズに画像が追従する
手動でやるのは非常に手間🥵
●手順
フォルダに画像を準備
*Dir関数
→
*ファイルパスの取得
画像を右C→ファイルパスをコピーする
*¥はフォルダの中身という意味
非常に助かります!ありがとうございます☺