![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?e8efa67)
Excelで工事写真帳を作っていて、その写真帳のあるセルに写真を貼りつけて、写真の横にコメントが書けるようになっています。1ページに3枚の写真を貼りつけられるので、1枚ずつ挿入するのではなく、複数の写真を選択して挿入したいのですが、貼りつけたい順番に写真を選択→挿入すると、微妙に順番が変わって挿入されてしまいます。
試しに貼りつけたい順番の逆から選択→挿入してみたのですが、このときは貼りつけたい順番どおりに挿入されました。これはどうしてなのでしょうか?
また、この写真帳作成でもっといい方法があれば、教えていただきたいです。よろしくお願いします。
No.6ベストアンサー
- 回答日時:
> この“C5”以下を“選択しているセル”以下という設定は可能でしょうか?
可能ですよ。#2 のソースコードで
' 貼り付け開始セルを選択
Range("C5").Select
↓
' 貼り付け開始セルを選択
’ActicveCellRange("C5").Select
のように先頭にアポストロフィー(’)を追加して下さい。
これをコメント化といって、それが付いた行の命令は無視されます。結果、
現在選択されているセルから開始されるようになります。
ついでに、画像を挿入したときにファイル名も同時に記入するなら、
Set PIC = ActiveSheet.Pictures.Insert(Filenames(i))
の部分を
Set PIC = ActiveSheet.Pictures.Insert(Filenames(i))
ActiveCell.Offset(0,2).Cells(1,1).Value = Filenames(i)
のようにします。これは、アクティブセルから Offset 命令で 2 つ横のセルに
ファイル名を書き込んでいます。その後にある Cells は今は特に考えなくて
良いと思いますので、意味については無視して下さい。
さらに、次の部分
' 次の貼り付け先を選択(アクティブセルにする)[例:5個下のセル]
ActiveCell.Offset(5).Select
の5という数字は「何個飛ばしに貼り付けるか?」ですから、10個飛ばしなら
ActiveCell.Offset(10).Select
となります。是非、いろいろ修正し、試行錯誤しながら楽しんで下さい^^
親切に教えていただきまして、ありがとうございました<(_ _)>
おかげさまで、当初使っていた写真帳に比べて、作業の効率がかなりアップして、嬉しい限りです。お世話になりました!
No.5
- 回答日時:
> 一例を示していただきましたが、私の手には負えないようです。
では、良い機会ですから時間のあるときにでも、次の手順どおりやってみて
下さい。VBA (マクロ)とはこういうことができる、と触れておいて損は
ありませんよ。
【 手 順 】
1. Excel 画面で [Alt]+[F11] キーを押す。
--> Visual Basic Editor (以下 VBE )起動
2. VBE 画面のメニュー [挿入]-[標準モジュール] をクリック
3. #2 のソースコード 「Sub 複数の画像を挿入()~最後まで」 をコピー
4. 2. で開いたスペースにペースト
5. VBE を閉じる
ここまでで、準備は終了です。次に使い方です。
6. Excel 画面で新規ワークシートを挿入
7. 現在の設定は、C5 以下で5行置きに画像を挿入します。画像挿入場所の
セルの高さにリサイズするようになってますので、予めセルの高さを
希望する大きさに変更しておいて下さい。
C5 → C10 → C15 → ... のように貼り付きます。
7. [Alt]+[F8] キーを押し、マクロ「複数の画像を挿入」をダブルクリック
8. 7. により「ファイルを選択する画面」が表示されます。ここで、挿入する
画像を1~複数枚選択し、OK をクリックします。
以上で、ファイル名順に画像が次々に挿入され、位置決め、サイズ等を自動で
設定します。
# 私も工事写真票を作ったことがありますが、写真が多いと面倒ですよね。
この回答への補足
早速、教えていただいた手順どおりにマクロを使ってみました。
次々に写真が挿入されていき、ちょっと感動してしまいました!
そこで、もう1つ教えていただいてもよろしいでしょうか?
現在の設定では、「C5以下で5行おきに画像を挿入する」ようになっているとのことですが、この“C5”以下を“選択しているセル”以下という設定は可能でしょうか?もし可能であれば、その方法を教えていただきたいのですが…
よろしくお願いします。
またまた、ご丁寧な回答ありがとうございます!
マクロを使えるようになりたいと思っているのですが、本や雑誌などを読んでもさっぱり意味がわからなくて、手を出せないでいました。
私は普段は経理をしていて、工事写真帳の作成は頼まれてやっているのですが、写真を見ただけでは順番がわからないので、貼りつけたい順番どおりに挿入できるだけでも、ずいぶん作業の効率がよくなるんです。
詳しく説明していただきましたので、時間を見つけてチャレンジしたいと思います。
No.4
- 回答日時:
No.3
- 回答日時:
#2 のコードを一部訂正しておきます。
では。× MsgBox i & "枚の画像を挿入しました", vbInformation
↓
○ MsgBox i-1 & "枚の画像を挿入しました", vbInformation
No.2
- 回答日時:
こんにちは。
KenKen_SP です。挿入してから手動で並べ替えるのは、ダメなのですか?
> 順番の逆から選択→挿入してみたのですが、このときは貼りつけたい順番
> どおりに挿入されました。
それは、たまたまの上手くできただけであって、選択順は無関係ですね。確証
はないのですが、選択されたファイルを HDD から探し、見つけた順番に画像が
挿入されるのだと思います。
任意の選択順...というのは特殊な仕組みを作らないと無理です。プログラム
を組むことになりますが、結構複雑になりそうです。
また、ファイル名順であれば、こちらもプログラムは必要ですが、比較的に
簡易なもので可能です。一例を紹介しておきます。
Sub 複数の画像を挿入()
Dim strFilter As String
Dim Filenames As Variant
Dim PIC As Picture
' 「ファイルを開く」ダイアログでファイル名を取得
strFilter = "画像ファイル(*.jpg;*.jpeg;*.gif;*.bmp;*.png),*.jpg;*.jpeg;*.gif;*.bmp;*.png"
Filenames = Application.GetOpenFilename( _
FileFilter:=strFilter, _
Title:="図の挿入(複数選択可)", _
MultiSelect:=True)
If Not IsArray(Filenames) Then Exit Sub
' ファイル名をソート
Call BubbleSort_Str(Filenames, True, vbTextCompare)
' 貼り付け開始セルを選択
Range("C5").Select
' マクロ実行中の画面描写を停止
Application.ScreenUpdating = False
' 順番に画像を挿入
For i = LBound(Filenames) To UBound(Filenames)
Set PIC = ActiveSheet.Pictures.Insert(Filenames(i))
'-------------------------------------------------------------
' 画像の各種プロパティ変更
'-------------------------------------------------------------
With PIC
.Top = ActiveCell.Top ' 位置:アクティブセルの上側に重ねる
.Left = ActiveCell.Left ' 位置:アクティブセルの左側に重ねる
.Placement = xlMove ' 移動するがサイズ変更しない
.PrintObject = True ' 印刷する
End With
With PIC.ShapeRange
.LockAspectRatio = msoTrue ' 縦横比維持
' 画像の高さをアクティブセルにあわせる
' 結合セルの場合でも対応
.Height = ActiveCell.MergeArea.Height
End With
' 次の貼り付け先を選択(アクティブセルにする)[例:5個下のセル]
ActiveCell.Offset(5).Select
Set PIC = Nothing
Next i
' 終了
Application.ScreenUpdating = True
MsgBox i & "枚の画像を挿入しました", vbInformation
End Sub
' バブルソート(文字列)
Private Sub BubbleSort_Str( _
ByRef Source As Variant, _
Optional ByVal SortAsc As Boolean = True, _
Optional ByVal Compare As VbCompareMethod = vbTextCompare)
If Not IsArray(Source) Then Exit Sub
Dim i As Long, j As Long
Dim vntTmp As Variant
For i = LBound(Source) To UBound(Source) - 1
For j = LBound(Source) To LBound(Source) + UBound(Source) - i - 1
If StrComp(Source(IIf(SortAsc, j, j + 1)), _
Source(IIf(SortAsc, j + 1, j)), Compare) = 1 Then
vntTmp = Source(j)
Source(j) = Source(j + 1)
Source(j + 1) = vntTmp
End If
Next j
Next i
End Sub
詳しい回答ありがとうございました。
“プログラムを組む”ことまでしないと、貼りつけたい順番どおりにはいかないのですね(>_<)
プログラムうんぬんまでPCに詳しくないので、一例を示していただきましたが、私の手には負えないようです。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・街中で見かけて「グッときた人」の思い出
- ・「一気に最後まで読んだ」本、教えて下さい!
- ・幼稚園時代「何組」でしたか?
- ・激凹みから立ち直る方法
- ・1つだけ過去を変えられるとしたら?
- ・【あるあるbot連動企画】あるあるbotに投稿したけど採用されなかったあるある募集
- ・【あるあるbot連動企画】フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
- ・映画のエンドロール観る派?観ない派?
- ・海外旅行から帰ってきたら、まず何を食べる?
- ・誕生日にもらった意外なもの
- ・天使と悪魔選手権
- ・ちょっと先の未来クイズ第2問
- ・【大喜利】【投稿~9/7】 ロボットの住む世界で流行ってる罰ゲームとは?
- ・推しミネラルウォーターはありますか?
- ・都道府県穴埋めゲーム
- ・この人頭いいなと思ったエピソード
- ・準・究極の選択
- ・ゆるやかでぃべーと タイムマシンを破壊すべきか。
- ・歩いた自慢大会
- ・許せない心理テスト
- ・字面がカッコいい英単語
- ・これ何て呼びますか Part2
- ・人生で一番思い出に残ってる靴
- ・ゆるやかでぃべーと すべての高校生はアルバイトをするべきだ。
- ・初めて自分の家と他人の家が違う、と意識した時
- ・単二電池
- ・チョコミントアイス
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセルで枠飾り
-
PowerDirector 11で空白時間の挿入
-
エクセルVBAで縦向きの画像の挿...
-
EXCELにjpg画像を挿入...
-
エクセルで写真の挿入 セルの中...
-
エクセルで作成した文に柄・模...
-
ヘッダーとフッダーの縦書き方法
-
GoodNotes5で、画像を複数選択...
-
VBAで特定のセルに画像があれば...
-
大学のレポートを書くためにWor...
-
保存や挿入などフォルダを開く...
-
メール一斉配信ソフトについて
-
エクセルの図の挿入
-
GIMPとWORDについて
-
EXCELのフッターにオートシェイ...
-
Win11で使える写真整理ソフトを...
-
OO.oのDrawで挿入絵の背景を透...
-
画像に連番の文字列を挿入したい
-
写真9枚をA4紙に配置したい。
-
フッターを「最前面」に
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセルで枠飾り
-
エクセルのフッター(右)に入...
-
ヘッダーとフッダーの縦書き方法
-
エクセルのフッダーに四角で囲...
-
PowerDirector 11で空白時間の挿入
-
写真9枚をA4紙に配置したい。
-
OO.oのDrawで挿入絵の背景を透...
-
エクセルで写真の挿入 セルの中...
-
EXCELのフッターにオートシェイ...
-
エクセルVBAで縦向きの画像の挿...
-
エクセルで作成した文に柄・模...
-
フッターを「最前面」に
-
GoodNotes5で、画像を複数選択...
-
Word~図の挿入のレイアウトを...
-
VBAで特定のセルに画像があれば...
-
EXCELにjpg画像を挿入...
-
GIMPとWORDについて
-
Wordで細長い画像を1ページに2...
-
Accessで請求書に印鑑を...
-
大学のレポートを書くためにWor...
おすすめ情報