![見出し画像](https://assets.st-note.com/production/uploads/images/131566511/rectangle_large_type_2_ee955eea075da3c2d68c412dce65d675.png?width=1200)
【多機能写真貼付VBA】1枚選択貼付・フォルダ内複数一括貼付け・様式変更などを設定
写真帳に写真データを貼り付けたい!
こんな要望を解決するために多機能写真貼付VBAを開発しました。
この「多機能写真貼付VBA」を使えば以下の問題を解決することができます。
大きめに写真を貼り付ける場合と小さめに写真を貼り付ける場合があるので様式を選択したい
ファルダ内全ての写真を貼り付ける場合と写真を選択して貼り付ける場合があるので「一括貼付」と「1枚選択貼付け」を使いたい
貼り付ける写真枚数によって写真帳を自動作成したい
貼り付けた写真にNoを付けたい
貼り付けた写真の名前を表示したい
上記以外の問題を解決するために、
「別シートの一覧表の情報をドロップダウンリストで表示する」「セルをクリックすると日付の表示・非表示を切り替える」
などのVBAが設定されていますが、この記事での説明は省略させていただきます。
写真貼り付け業務に必要な処理が全て設定されているのでは!??
と感じるほどボリューム満点の内容になっているので、
写真貼り付け作業の効率をアップさせたい!という方は是非参考にしてみてください。
多機能写真貼付VBAとは
多機能写真貼り付けVBAの概要がこちら
![](https://assets.st-note.com/img/1708434027967-g80pZ5kBIt.png?width=1200)
![](https://assets.st-note.com/img/1708434035156-09pwlmNNJX.png?width=1200)
「プルダウン一覧」Sheetの情報を写真帳のコメント欄にプルダウンリスト表示する
ダイアログから「写真データ保存フォルダ」の情報を選択入力する
「様式」Sheetから写真帳の様式(6枚バージョンか4枚バージョン)を選択する
「実行」セルクリックで指定フォルダ内の写真を一括貼付けする。テキストも転記可能
「写真選択」セルをクリックするとダイアログが表示。貼り付けたい写真を選択貼付けする
様式(6枚バージョンと4枚バージョン)が混在しても適切にナンバリングをする
「リセット」ボタンを押下すると、「データシート」Sheetにある全ての情報を削除する
多機能写真貼付VBAには上記の機能が備わっていて、感覚的に操作できる仕様になっています。
依頼者様からは、「めちゃくちゃ使いやすい!」と高評価を頂きました。
多機能写真貼付VBAは記事の最後でダウンロード可能ですので気になる方は是非チェックしてみてください。
多機能写真貼付VBAの使い方
![](https://assets.st-note.com/img/1708481560797-Vro2Jr4zZt.jpg?width=1200)
多機能写真貼付VBAに設定されている機能の使い方を一つ一つ解説していきます。
様式の追加VBA
![](https://assets.st-note.com/img/1708439333384-h5iTnOpM9b.png?width=1200)
「ページ追加(6枚)」「ページ追加(4枚)」「ページリセット」のボタンで写真帳を自由に追加、削除することが可能。
「ページ追加(6枚)」のVBAがこちら
Sub ページ追加6枚()
Dim Ash As Worksheet
Set Ash = Sheets("プルダウン一覧")
Dim Bsh As Worksheet
Set Bsh = Sheets("データシート")
Dim Csh As Worksheet
Set Csh = Sheets("台紙")
Dim Dsh As Worksheet
Set Dsh = Sheets("様式")
Dim PageNum As Long
Dim NumCou As Long
'Dim GYO As Long
GYO = Csh.Cells(Rows.Count, 2).End(xlUp).Row
PageNum = Application.WorksheetFunction.RoundUp(GYO / 46, 0)
If GYO = 1 Then
Dsh.Range("1:46").Copy Destination:=Csh.Rows(GYO)
Csh.Select
Csh.Cells(1, 1).Select
Else
Dsh.Range("1:46").Copy Destination:=Csh.Rows((PageNum + 1) * 46 - 45)
Csh.Select
Csh.Cells((PageNum + 1) * 46 - 45, 1).Select
End If
GYO = Csh.Cells(Rows.Count, 2).End(xlUp).Row
NumCou = 1
For i = 14 To GYO
If Left(Csh.Cells(i, 2), 2) = "No" Then
Csh.Cells(i, 2) = "No" & NumCou
NumCou = NumCou + 1
Csh.Cells(i, 17) = "No" & NumCou
NumCou = NumCou + 1
Else
End If
Next
End Sub
2行目から9行目で、各Sheetをシート名で区別
13行目以降で、
「台紙」Sheetに情報がない場合、A1をアクティブにして「様式」Sheetからコピペする。
「台紙」Sheetに情報がある場合、最終行をアクティブにして「様式」Sheetからコピペする。
という内容です。
写真帳6枚バージョン
![](https://assets.st-note.com/img/1708439434570-omq83j3lIm.png?width=1200)
写真帳4枚バージョン
![](https://assets.st-note.com/img/1708439449903-kpq1PyvZke.png?width=1200)
ファルダ内の写真を一括貼付するVBA
1.「データシート」SheetのG列に写真データが保存されているフォルダ場所を選択入力
![](https://assets.st-note.com/img/1708439914736-pPka7DTXKY.png?width=1200)
2.「J4セル」もしくは「J7セル」に2列目のNoを入力し、「K4セル」もしくは「K7セル」の実行をクリックする
![](https://assets.st-note.com/img/1708440220494-4Fb1eQSyzV.png?width=1200)
3.「台紙」Sheetに様式と写真データが貼り付けられます。
枠を指定して選択写真を貼付けるVBA
1.「ページ追加(6枚)」ボタン、もしくは「ページ追加(4枚)」ボタンで様式を追加
2.「台紙」Sheetの写真選択(6枚)セル、もしくは写真選択(4枚)セルをクリック
![](https://assets.st-note.com/img/1708440955997-U7oS9Hi1vx.png?width=1200)
3.ダイアログが表示されるので貼り付けたい写真を選択
「台紙」SheetをリセットするVBA
「ページリセット」ボタンを押下で「台紙」Sheetを全てリセットできます。
![](https://assets.st-note.com/img/1708441364427-drrOMYhCML.png?width=1200)
ページリセットのVBAがこちら
Sub ページリセット()
Dim Ash As Worksheet
Set Ash = Sheets("プルダウン一覧")
Dim Bsh As Worksheet
Set Bsh = Sheets("データシート")
Dim Csh As Worksheet
Set Csh = Sheets("台紙")
Dim Dsh As Worksheet
Set Dsh = Sheets("様式")
Dim GYO As Long
Dim zukei As Shape
Dim ran, ran2 As Range
GYO = Csh.Cells(Rows.Count, 2).End(xlUp).Row
Csh.Cells.Clear
For Each zukei In Csh.Shapes
zukei.Delete
Next
Csh.Select
Csh.Cells(1, 1).Select
End Sub
14行目で、「台紙」Sheetのセルを全てクリアする
15行目から17行目で、「台紙」Sheetにある写真(オブジェクト)を全て削除する
という内容です。
プルダウンリストVBA
1.「プルダウン一覧」Sheetの一覧表にリスト化したい情報を入力
![](https://assets.st-note.com/img/1708441555295-IzmpRYqosX.png?width=1200)
2.「データシート」SheetではD列、E列、F列でプルダウンリストが表示される
![](https://assets.st-note.com/img/1708441838823-GFr9qoR2ci.png?width=1200)
3.「台紙」Sheetでは「コメント記入」欄でプルダウンリストが表示される
![](https://assets.st-note.com/img/1708442107038-o6vv9Gc3rF.png?width=1200)
様式が6枚バージョンでも4枚バージョンでも問題なくプルダウンリストを表示することができます。
業務内容に合わせて写真を貼り付けるVABを導入する方法
![](https://assets.st-note.com/img/1708481540144-umrlhPg9PY.jpg?width=1200)
業務内容に合わせて「写真を貼り付けるVBA」を導入するには、
自分でVBAを設定する方法とVBA開発依頼をする方法
の2パターンあります。
自分でVBAを設定する
業務内容に合わせたVBAを設定する際、以下の手順で作業を進めることをおすすめします。
どのような処理を実現したいのか具体的なイメージを持つ
写真を貼り付ける様式の作成
写真を保存しておくフォルダを準備
VBAを書いてみる
行き詰ったらネットや参考書で問題点を一つ一つ解決していく
写真の貼り付けVBAの開発で一番重要なポイントは、
写真を貼り付ける様式の作成
です。
まずはこの作業を完璧に終わらせてください。
VBA作成途中で「あっ、様式をちょっと変更しよう!」となれば、
コードを1から作り直さなければならい
となってしまうかもしれません。
VBAを書き始めてしまうと、
「次はこんな処理を追加しよう」「これってちゃんと動作するのかな」
という気持ちが生まれどんどん書き進めてしまいますよね。
なので、
VBAを作り始める前に「様式の完璧な設定」は必須事項
です。
様式の設定が終わりVBAを作り始めると、
「写真データ名を表示したい」「写真の大きさを枠に収めたい」
などいろんな欲求が出てくると思いますが一つ一つ調べながら設定してみてください。
関連記事「写真の貼付けを自動化するマクロ」では写真を貼り付けるVBAについて詳しく解説されています。
コピペして使えるコードも掲載されているので是非参考にしてみてください。
記事の最後でダウンロードできる「多機能写真貼付VBA」には、
写真の貼り付けVABに必要な全てのコードが網羅されている!
と思っています。
VBAを組み合わせて業務内容にピッタリの写真貼付VBAを自分で設定したい!という方は是非設定されているコードを参考にしてみてください。
VBA開発を依頼する
VBAの開発依頼は
こんな処理をするVBAを設定してほしいー
と伝えるだけで業務内容に合ったVBAをゲットすることができます。
費用は掛かりますが、自分でVBAを設定するよりも簡単に導入できるのでとてもおすすめ
関連記事「マメBlogのVBA開発サービス」では、
写真貼り付けVBAをあなたの業務内容に合わせて改良するVBA開発サービス
を行っています。
このようなマクロを導入して作業効率をアップさせたい!
こんな感じのザックリとした依頼内容でOK。
VBAの設定は可能かどうか、費用はどれくらいなのか、すぐに返信がきます。
お気軽に問い合わせしてみてください。
>>> マメBlogのVBA開発依頼はこちら
多機能写真貼付VBAのダウンロード
![](https://assets.st-note.com/img/1708481525829-P4DfkUSimc.jpg?width=1200)
上記で紹介している「多機能写真貼付VBA」をダウンロードしてお使いいただくことができます。
「写真を貼り付ける」というエクセル作業の効率を100%アップさせることができるVBAに仕上がってますので是非使ってみてください。
この記事が気に入ったらサポートをしてみませんか?