みんなの「教えて(疑問・質問)」にみんなで「答える」Q&Aコミュニティ

こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

締切り済みの質問

エクセルのマクロ

エクセルに画像を貼りつけるマクロを教えてください。
エクセルにたくさんの数字が入っています。
その数字と同じファイル名の画像を貼りつけたいです。

数字は何度も同じものが出てくるので、エクセルのシートに入っている数字すべてに張り付けたいです。

よろしくお願いいたします。

投稿日時 - 2019-07-09 13:52:21

QNo.9633551

困ってます

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(3)

ANo.3

コアな部分は、マクロの記録を取ればわかる。
開発ーマクロの記録ーマクロ名はMacro1になるが、そのままで「OK」。
シートで挿入ー画像―画像ファイルを指定ー挿入
でシートに指定画像が挿入される。
シート画面で、開発ーマクローMacro1を指定ー編集
コードは、
Sub Macro1()
'
' Macro1 Macro
'
'
ActiveSheet.Pictures.Insert("C:\Users\??\Pictures\XXXXXXXXXXXXxxxxx.JPG").Select
End Sub
のようになる。これの( )内のファイル名の終りの部分を、多分、セルの数字と関連させて変えて、繰り返し処理(For Next利用)すればよいと推察する。
 それを2-3個のファイルで繰り返して、ファイル名の部分の終りの部分で、少し変化している箇所に注目して、どう変化するのか、文章で表現してみること。
そして、行き詰まった箇所を中心に質問するならやむを得ないが。
何のことを言っているかわからないようなら、VBAでやるのは早すぎるということ。
ーー
丸写しで済む、VBAのコードを回答者に作らせようにも、シートのデータ(数字らしい)のあり様(行と列が判るように)の例示と、ファイル名の変化の仕方の例が、回答者に、わからないと、完成形のコードは、誰にも書きようがない、はず。
その他に写真の表示位置を、シート上で、ずらして表示しないとならないが。
Selection.Top = 200
Selection.Left = 200
Selection.Width = 300
Selection.Height = 200
を加える。
そして、2つ目、3つ目・・は、これらをn番目という、nの数字から計算して
指定しないとならない。縦に1列に並べるならTOPの値は(nー1)*220
+200などと、やさしいが、多列なら、中学校の級数の知識が必要かと。
10-20個なら手動操作の方が早い。
VBAを少しやれるには、最少でも数か月の勉強が必要と思う。
サムネイル的に表示するのが目的なら、そういう出来合いのソフトを探したら。
エクセルは、写真表示ソフトとして、最適とは言えないと思う。

投稿日時 - 2019-07-09 16:24:31

ANo.2

画像がどのフォルダに入っているのか、画像名がシートのどのセルに入っているのか、画像名はどのような形で入っているのか(拡張子は付いているのか)、複数のシート・ブックに対して行いたいのか、不明な点が多いので、そのままずばりのコードは書けません。

一応、参考になるだろうコードを下に書いておきます。
ファイル名が入ったセル範囲やパス名、ファイル名等を適宜変更して下さい。


Sub PasteImage()
 Dim TargetPath As String
 Dim TargetRange As Range
 Dim myCell As Range
 Dim myShp As Shape

 TargetPath = "C:" '画像ファイルが入っているフォルダのパス。ThisWorkbook.Pathでもよいか?
 Set TargetRange = Selection '貼り付けたい画像名が入力されているセル範囲。

 On Error Resume Next '画像がない等エラーが出た時にスキップする。
 For Each myCell In TargetRange
  Set myShp = ActiveSheet.Shapes.AddPicture(Filename:=TargetPath & myCell.Value & ".png", _
             LinktoFile:=False, SaveWithDocument:=True, _
             Left:=0, Top:=0, Width:=0, Height:=0)
  myShp.ScaleHeight 1, msoTrue
  myShp.ScaleWidth 1, msoTrue
  myShp.Left = myCell.Left + myCell.Width / 2 - myShp.Width / 2
  myShp.Top = myCell.Top + myCell.Height / 2 - myShp.Height / 2
 Next myCell
 On Error GoTo 0
End Sub

投稿日時 - 2019-07-09 15:03:11

ANo.1

ツッコミどころ満載の質問です。

>数字と同じファイル名の画像を貼りつけたい

 何処のワークシートに画像を挿入 ?
何処の位置に画像を挿入しますか ?
 画像のサイズは?
  (オリジナルサイズ? リサイズした画像 ? サイズは全て同じサイズ ?)

もう少し具体的な条件などを明らかにしたほうがイメージしやすい。

投稿日時 - 2019-07-09 15:01:31

あなたにオススメの質問