
御世話になります。
他の人のエクセル マクロで写真帳を見よう見まねで作成したのですが、現在複数シートに写真を1枚1枚張り付けてますが、最近になり写真を貼り付ける作業が増えており、作業効率を上げたいと考えました。つきましてはボタン一発で複数写真を各シートの指定された場所に写真を貼り付けることが出来たら・・・。と思っております。画像は実際に使用している写真帳の画面コピーです。1シートに3枚写真を貼り付ける仕様です。シートは基本15シートあります。必要によりシートの増減をしてます。
ちなみに今現在使用しているマクロは下記になります。
Sub 写真貼付1()
'
' 写真貼付2 Macro
'
' 写真貼り付け Macro
'
Dim StrFilter As String
Dim 画像ファイル As Variant
Dim Tate As Single
Dim Yoko As Single
Dim Top As Single
Dim Left As Single
Dim PicData As Object
Cells(13, 2).Select
Tate = ActiveCell.MergeArea.Height
Yoko = ActiveCell.MergeArea.Width
画像ファイル = ""
StrFilter = "画像ファイル(*.jpg;*.jpeg;*.gif;*.bmp;*.png),*.jpg;*.jpeg;*.gif;*.bmp;*.png"
画像ファイル = Application.GetOpenFilename(FileFilter:=StrFilter, _
FilterIndex:=1, _
Title:="画像ファイルを選択してください。", _
MultiSelect:=False)
If 画像ファイル = "False" Then Exit Sub
Top = ActiveCell.Top
Left = ActiveCell.Left
Set PicData = ActiveSheet.Shapes.AddPicture(画像ファイル, True, True, Left, Top, Yoko, Tate)
ActiveCell.Offset(, 1).Select
'
End Sub
上記のマクロを3個用意してそれぞれ各シートの1段目、2段目、3段目に写真を貼り付ける様にしてます。
当方マクロは初めたばかりです。何か良い知恵を御貸し頂けないでしょうか?
宜しくお願い致します。

A 回答 (2件)
- 最新から表示
- 回答順に表示
No.2
- 回答日時:
こんばんは
やり方は色々ありますが、すでに回答にあるような手順が最も簡単かと
済めされているコードを使用して少し具体的にすると
GetOpenFilenameを使われているのでMultiSelect:=Falseを
MultiSelect:=Trueとして複数選択できるようにします
この時、変数 画像ファイル は Dim 画像ファイル As Variant で宣言しているので、ファイルを選択した時は、配列になり
キャンセルを押した時は False (Boolean)が返ります。
なのでキャンセル時の対応は If 画像ファイル = "False" Then Exit Sub ではなく
If Not IsArray(画像ファイル) Then Exit Sub や
If 画像ファイル = False Then Exit Sub で回避します。
どちらでも多分大丈夫
配列内のデータ数(情報)でループして 各結合セルにAddPictureすれば良いと思いますので、、
例として 1つ目結合セルの左上セルがB3セルで12行飛びの場合
If 画像ファイル = False Then Exit Sub
n = 3 'スタート行
If UBound(画像ファイル) <= 3 Then '3つ迄が対象
For i = 1 To UBound(画像ファイル)
With ActiveSheet.Cells(n, "B").MergeArea
Tate = .Height
Yoko = .Width
Top = .Top
Left = .Left
ActiveSheet.Shapes.AddPicture 画像ファイル(i), True, True, Left, Top, Yoko, Tate
End With
n = n + 12 '次の結合セル行に
Next
End If
セルの移動と配列について少しの学習が必要
変数nは整数型で 行 なのでLong型が安心 iは整数型ならOK
画像ファイルの順番はGetOpenFilenameでフォルダー内の表示順になります
フォルダでの並び替えで変更は可能ですが、選択順ではありません。
No.1
- 回答日時:
こんにちは
>ボタン一発で複数写真を各シートの指定された場所に写真を貼り付けることが出来たら
検索してみればそのような事例も数多く見つかることと思います。
(質問者様のご要望にピッタリとは限りませんが、要領は分かると思います)
まとめて行う場合は、
・画像をフォルダなどにまとめて入れておく
(そのフォルダ内の画像を順に貼り付ける)
・貼り付け先のセル位置が決まっている
(ご提示の画像ではセル位置が不明です)
・画像の縦横比と、セル範囲の縦横比が違う場合の合わせ方
などを事前に決めておいて、それに従って順に処理するようなマクロにすれば良いでしょう。
基本的には、1枚分を貼り付ける処理をまず作成し、それを一般化して、あとは枚数分ループするようなイメージで作成可能と想像します。
以下、似た様な例をご参考までに。
(検索すれば、もっといろいろ見つかるはずです)
https://www.higashisalary.com/entry/vba-pictures …
https://tonari-it.com/excel-vba-shapes-addpictur …
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) 【VBA】写真の縦横比を変えずに貼り付ける 5 2023/06/13 11:42
- Visual Basic(VBA) 【VBA】写真の貼り付けコードがうまく機能しません。 5 2022/09/01 18:43
- Visual Basic(VBA) EXCEL VBA シート比較し〇×判定 1 2021/11/19 11:49
- Visual Basic(VBA) 転記先VBA 一致しているセルがコピーされない 5 2021/11/15 17:23
- Visual Basic(VBA) EXCLE VBA シートクリックしたら該当シートコピー 1 2021/11/11 16:37
- Visual Basic(VBA) 空のシートに関数を入れたい 2 2021/12/03 15:08
- Visual Basic(VBA) シート名をフォルダ名に変更 1 2021/12/01 15:59
- Excel(エクセル) Excel2019 マクロを使用し画像を貼り付けした際のリンク切れについて 2 2022/11/15 16:14
- Excel(エクセル) EXCELのグラフを画像(JPG形式)で保存、通常実行がうまく行かない。ステップインはうまく行く 3 2022/08/30 12:06
- Visual Basic(VBA) シート名でファイル検索する 2 2021/11/30 17:05
このQ&Aを見た人はこんなQ&Aも見ています
-
エクセルのVBAを使用し、工事写真台帳を作成しています。
Excel(エクセル)
-
【VBA】写真の縦横比を変えずに貼り付ける
Visual Basic(VBA)
-
任意フォルダから画像をすべてエクセルの指定マスに貼り付けをしたい
Visual Basic(VBA)
-
-
4
画像を削除したい(VBA)
Word(ワード)
-
5
VBAエクセルに貼り付けた画像をセルにあった大きさにしたい(等倍)
Excel(エクセル)
-
6
【VBA】 結合セルに複数画像とファイル名一括挿入する方法
Visual Basic(VBA)
-
7
VBAで「エクセルに写真を貼り付け、外のセルに撮影月日を『和暦』で自動記載」させたい
Excel(エクセル)
-
8
VBAでエクセルのシート上の画像のリサイズと配置を行いたい
Excel(エクセル)
-
9
複数の画像ファイルを挿入したい
Excel(エクセル)
-
10
EXCELのVBAで画像を選んだ順に貼り付ける方法
Excel(エクセル)
-
11
【EXCEL VBA】ダブルクリックでセルのサイズに合わせて画像を挿入に機能を追加したいです。
Visual Basic(VBA)
-
12
エクセル フォルダの画像を画像名で検索して貼り付け
Excel(エクセル)
-
13
エクセルVBA 画像を貼り付けるセル位置を指定する方法
Excel(エクセル)
-
14
エクセルVBAで縦向きの画像の挿入・回転
Excel(エクセル)
-
15
セルの文字を「印刷時だけ非表示」にしたいです。
Excel(エクセル)
-
16
エクセルに張り付けた写真のファイル名が見たい
Microsoft ASP
-
17
VBAで選択した画像を貼り付けたい
Excel(エクセル)
-
18
VBAで特定のセルに画像があれば削除、なければ貼り付けを行いたい
Excel(エクセル)
-
19
Excel2019 マクロを使用し画像を貼り付けした際のリンク切れについて
Excel(エクセル)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセルファイルを値でのみし...
-
Excelでマクロ実行中に画面を固...
-
VBA Shapes コピーと名前
-
EXCEL VBA 他のアプリケーショ...
-
セルに入力するたびにマクロを...
-
エクセル マクロ写真帳に一括で...
-
【Excel】マクロでページを追加...
-
エクセルVBAで納期管理システム...
-
エクセルファイルの回数期限の...
-
秀丸で文字列範囲を選択したら...
-
【ExcelVBA】マクロブックを通...
-
VBAの記述について 値のみの貼...
-
ExcelのVBAで自動採番したい...
-
worksheet_changeの一時無効化
-
VBAで保存しないで閉じると空の...
-
WPSOffice_マクロの有効化について
-
複数のマクロボタンをまとめて...
-
【Excel VBA】マクロでExcel自...
-
Excel マクロの編集がグレーに...
-
エクセル関数>参照ファイル名...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセルファイルを値でのみし...
-
VBA Shapes コピーと名前
-
Excelでマクロ実行中に画面を固...
-
エクセル マクロ写真帳に一括で...
-
セルに入力するたびにマクロを...
-
エクセル連番自動印刷について
-
【Excel】マクロでページを追加...
-
エクセル 図形の寸法を取得したい
-
EXCEL VBA 他のアプリケーショ...
-
エクセルファイルの回数期限の...
-
VBAで行コピーして挿入
-
エクセルVBAで納期管理システム...
-
ブックの共有でVBAエラー
-
【ExcelVBA】マクロブックを通...
-
VB.NETによるEXCELの行挿入
-
再度,ExcelVBA,public変数が消える
-
worksheet_changeの一時無効化
-
EXCEL 行番号や列番号が選択で...
-
マクロで非表示シート内にある...
-
EXCEL上にコマンドボタン...
おすすめ情報