• ベストアンサー

PNGをアクティブシートに挿入するマクロについて

Excelマクロブックと同じフォルダ内にある複数のPNGファイル(画像)を、 このマクロブックのアクティブシートに一括で挿入する(場所はどこでも大丈夫です)マクロの書き方を教えて欲しいです。 質問が分かりづらかったら申し訳ありません。 どなたかご教授いただければ幸いです。

質問者が選んだベストアンサー

  • ベストアンサー
  • SI299792
  • ベストアンサー率48% (717/1483)
回答No.5

>1枚目はセル B53、2枚目はB92・・・と、画像が増えるたびにB53から+39で下に貼っていきたい これは、最初の質問にある、 (場所はどこでも大丈夫です) に反しますが、直しました。 Option Explicit ' Sub Macro1()   Dim FileName As String   Dim Target As Range '   FileName = Dir(ThisWorkbook.Path & "\" & "*.png") '   If FileName = "" Then     MsgBox "png ファイルがありません", vbCritical   End If   ActiveSheet.Pictures.Delete   Application.ScreenUpdating = False   Set Target = [B53] '   Do While FileName > ""     ActiveSheet.Shapes.AddPicture ThisWorkbook.Path & "\" & FileName, _       False, True, Target.Left, Target.Top, 525, 399     Set Target = Target.Offset(39)     FileName = Dir   Loop End Sub

yopptommy
質問者

お礼

確認が遅くなってしまい、大変申し訳ございません。 お教えいただきありがとうございました!無事に処理が実行できました。

全文を見る
すると、全ての回答が全文表示されます。

その他の回答 (4)

  • SI299792
  • ベストアンサー率48% (717/1483)
回答No.4

これだけでは困ります。 ・どこでも構わないというのでA1 A2 A3と下に貼っていきます。 他に必要な情報 ・直接磔か(png 無くても表示される。他へコピペする時便利、リンク磔か(png が無いと画像が表示されない、メモリーを食わない)[直接磔] ・画像をセルのサイズに合わせるのか[合わせる] ・その時縦横比はどうするのか[変更する] 取りあえず[]の条件で作りました。 (画像は小さく、歪になります) これらの条件を補足していただければ、変更します。 Option Explicit ' Sub Macro1()   Dim FileName As String   Dim Target As Range '   FileName = Dir(ThisWorkbook.Path & "\" & "*.png") '   If FileName = "" Then     MsgBox "png ファイルがありません", vbCritical   End If   ActiveSheet.Pictures.Delete   Application.ScreenUpdating = False   Set Target = [A1] '   Do While FileName > "" '     With ActiveSheet.Shapes.AddPicture( _       ThisWorkbook.Path & "\" & FileName, False, True, _       Target.Left, Target.Top, Target.Width, Target.Height)     End With     Set Target = Target.Offset(1)     FileName = Dir   Loop   MsgBox "終了しました" End Sub

yopptommy
質問者

補足

ご回答いただき誠にありがとうございます。 記載いただいたコード、大変勉強になりました。 こちらの説明に不足な部分が多々あり、申し訳ありません。 以下に、不足していた説明と、追加で実装を希望する部分を記載いたします。 ・貼り付ける場所は、画像1枚目はセル B53、2枚目はB92・・・と、画像が増えるたびにB53から+39で下に貼っていきたいです。(分かり辛い説明で申し訳ありません) ・画像は直接貼り付け ・セルのサイズに合わせない ・画像を読み込む際の縦横比は、可能であれば525×399(ピクセル)に変更(縮小)したい(読み込む対象の画像の大きさは全て同じで、640×480ピクセルです) 以上です。 補足が必要な部分がありましたら、お手数ですがお教えいただけますと幸いです。よろしくお願いいたします。

全文を見る
すると、全ての回答が全文表示されます。
  • imogasi
  • ベストアンサー率27% (4737/17068)
回答No.3

#2のついでに、参考で載せてみる。簡単だろう。 下記の注記を参照のこと。想像によるテストです。 これでは都合が合わない場合は、その点を限定・明記して、やり方を質問する、ことだろう。 Sheet2のA列に候補ファイル名のリストを作って後の話。 B列には、不要分は何か印を入力。(プログラムでは判別が難しそうな、質問の説明だから。 ーー Sub test04() fld = "C:\Users\XXX\Pictures\" ’ファイルのあるフォルダ名 For i = 1 To 10 If Worksheets("Sheet2").Cells(i, "B") = "" Then Worksheets("Sheet1").Shapes.AddPicture Filename:=fld & Worksheets("Sheet2").Cells(i, "A"), _ LinkToFile:=False, _ SaveWithDocument:=True, _ Left:=20, _ Top:=(i - 1) * 210 + 30, _ Width:=300, _ Height:=200 End If Next i End Sub 標準モジュールにコピペ。 ーーー 注記 ・ファイル指定はフルパスで指定のこと ・B列が空白でない行は、処理をスキップ。リストでスキップするものはB列に何か入力。 ・並び順は特に今回は、考えてない ・Height=200しているのでTop:=(i - 1) * 210 + 30, としている 各々の画像の上下余白は、210-200=10です ・JPGの10数個の画像でテストで確認済み ・Shapesの中身が画像という処理です。別途InsertPictureを使う記事もある。

全文を見る
すると、全ての回答が全文表示されます。
  • imogasi
  • ベストアンサー率27% (4737/17068)
回答No.2

この質問を昨日読んで、質問の説明不十分だ、と感じてそのままにした。 本日 >複数のPNGファイル名に規則性がないため、下記コードの編集方法が分かりませんでした。 を読んだが、規則性がないにしても、どういう選別の仕方をするのか、文章で説明しないと、他人に解るわけがないだろう。 最悪は、シートに、ファイル名のリストを出し、隣列に、要不要のサインを、質問者が判断して、立てるとか、かつ並び順を整えるか、などを決めないとならないだろう。それは質問者の仕事だろう。 こんなことは基本で、それを書いて質問しないと質問にならないだろう。 選別の方法の方が、むしろプログラム的には難しい(不可能)かも。 シートに画像を張り付けるのは、WEBに例がたくさん載っている。それらを見て、やっってみたのか。やったならやったと書いておけば、回答者はそちらを飛ばして考える。

全文を見る
すると、全ての回答が全文表示されます。
  • MT765
  • ベストアンサー率57% (1910/3350)
回答No.1

自分でコードを書こうと思いましたが良いページがあったのでリンクを貼っておきます。 これで実現できそうでしょうか。 【EXCEL VBA エクセルシートに写真(画像)を挿入する・写真(画像)を表示・写真(画像)を削除(Picture)】 https://akira55.com/image/

yopptommy
質問者

補足

ご回答いただきありがとうございます! 早速URL先のコードを参考にしてみたのですが、 挿入したい複数のPNGファイル名に規則性がないため、下記コードの編集方法が分かりませんでした。 With Sheets("Sheet1").Pictures.Insert("C:\DATA\Photo0" & P & ".png") もしお分かりになりましたら、お手すきの際にお教え頂けますと幸いです。 よろしくお願いいたします。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • フォルダ内の全ブックのシート名を変更したいです。

    同一フォルダ内に、ファイル名の違うエクセルブックが100個ほどあります。 その100個のそれぞれには、シートが1つ入っています。(シート名は、ブック毎に異なっています) それらのシート名を100個全部、「2013-07」という名前にしたいのですが、マクロで一括処理はできますでしょうか? データが多く、マクロ初心者なので、困っております。。 エクセルは2013を使用しています。 お教えいただければ幸いですm(_ _)m

  • EXCELのシートのマクロ操作について

    EXCELについて質問がありまして、よろしくお願いします。 複数のシートがあるブックがあり、それを、それぞれシートごとに別のブックにしたいと思っています。 マクロやVBAなどを使って簡単に出来るものでしょうか? マクロ集などのサイトを探してみましたが、上手く見つけることができませんでした。 シート名をブック名として引き継いで保存できればベターだと思っております。それが出来なくてもブックとして起こせれば大丈夫です。 何かわかられましたらお教えいただけますと幸いです。 どうぞよろしくお願いします。

  • エクセルのシートに挿入した画像を別シートに挿入している画像と差し替えマクロ

    表題の通り、 ある条件の元、エクセルのシートに挿入した画像の入れ替えが発生するのですが、そのようなマクロを組んだこともなく、 どこから手をつけていいのか分かりません。 シート上に貼り付けただけの画像の差し替えなどはできるのでしょうか?ご教授頂けると助かります。 よろしくお願い致します。

  • 複数ブックの印刷マクロを作成したいと思っています。

    2つのフォルダがあり、その中に20のブックがそれぞれあります。 20のブックの中にはシートが4つづつあり、シート3とシート4のみ印刷したい。 1つのフォルダでは あまり詳しくありませんのでお知恵をお借りしたいと思います。 まず、フォルダの中にある複数ブックの印刷を一括で管理できるマクロは可能なのでしょうか。 二つのフォルダの中に20個のブックがあり、その中にはそれぞれ4シートあるExcelファイルで構成されています。 毎回シート3とシート4のみの印刷をブックの数だけ行います。 40ブックを開け、約80シート印刷するのを簡素化できないかなと思っております。 まず Aフォルダの中 20のブックの中にはシートが4つずつあり、それぞれシート3は全て印刷。 ブック15~19のみシート4は印刷しません。 要約しますと ブック1~14とブック20はシート3.シート4を印刷 ブック15~19はシート3のみ印刷 Bフォルダも同様 ブックそれぞれにマクロシートがあればいいかなと思っているのですが。。。 PC環境はXPです。その他重要なソフトが入っているのであまりマクロが重い場合は諦めようかなと思っています。 簡単に印刷できるようなら教えていただけると幸いです。 初心者なのでコピペでOKぐらいにしていただけますと助かります。 よろしくお願いいたします。

  • エクセルのマクロの特定のシート名を検索したい

    1つのフォルダにエクセルのファイルが複数あります。 ブックを開かずに、それぞれのブックに「sheet1」が あるかどうかを確認する事ができますか?

  • エクセル2007 マクロ シート 移動

    マクロ学習中のものです。 エクセル2007 マクロの複数のブックのシートをひとつのブックにまとめたいです。 ふつうにコピペすると、コピー先ではマクロが走りません、 どのようにすればよいか、アドバイスください!! よろしくおねがいします。

  • 複数のシートで同じ作業をしたい

    エクセルを使って文書をたくさん作っています。1つのブックに10くらいのシートがあって、セル幅を変えるとか、同じ文章を挿入するとかしたいときに、一括してすべてのシートに同じ作業をさせるにはどうしたらいいのでしょうか、エクセルの初心者でよくわかりません。マクロの記録を使ってやってみるのですが、うまくいきません。教えてください。 エクセル2002を使っています。

  • pngファイルの挿入元を知りたい

    pngファイルでWord2007上に画像を挿入しました。が、その後、挿入元のファイルがどこに行ったか分からなくなってしまいました。pngの挿入元を知るにはどうすれば良いでしょうか??

  • エクセルの複数ブックをまとめて印刷したい

    お世話になります。 早速ですが、フォルダ内に複数のエクセルブックがあります。それらのブックには複数のシートがあります。 フォルダー内の複数のブックの複数のシートも含むものを一括印刷したいのですが可能でしょうか? フォルダー内を一括選択し、ファイルの印刷をした場合、 複数のブックを印刷することは可能なのですが、それらにあるはずの複数のシートが印刷されません。 「複数のブックの全てのシートも含むものを一括印刷」したいのですができるでしょうか? よろしくおねがいします。

  • 複数のシートを一枚のシートに反映させる方法

    windowsのOffice 2013を使用しています。 エクセルにて複数あるシート(添付画像のもの)を、一つのシート(添付画像で言いますと、まとめという名前のシート) に複数のシートに入力したものを反映させたいと思っております。 調べたところ、マクロを使用した方法でしか出来ないとのことで色々試したものの、 上手く行かずご質問させていただきました。 マクロは全くの初心者です。 どなたかご教授頂けますと幸いです。