【先着1,000名様!】1,000円分をプレゼント!

エクセルで写真の挿入

セルの中央に写真を挿入する方法を教えてください。

(画像挿入→画像選択→デカイ写真がドーーーンってなります。)

A 回答 (2件)

こんばんは!



セルの中央というコトではないのですが・・・
あらかじめ大きさを設定して画像を挿入するコトは可能です。

一例です。
メニュー → 挿入 → 図形 → 好みの形(四角形や、丸など)のオートシェイプを挿入し、好みの大きさに設定しておきます。
そのオートシェイプを選択した状態で、
メニュー → 図形の塗りつぶし → 図 → 挿入したい画像を選択!
これでオートシェイプ内に画像が収まります。

※ 枠線が邪魔であれば「枠線なし」にします。m(_ _)m
    • good
    • 5
この回答へのお礼

こんな技があったとは!
使えそうです。ありがとうございます。

お礼日時:2017/11/26 07:55

そのドーーーンの隅をマウスで掴み中央方向へドラッグして


小さくします。その後中央を掴んで位置を合わせます。
その繰り返しが基本なんです。
また本来セルはその中央に写真を表示して
見えるような大きさではありませんよね?
どういう状態を想定してのご意見なのか
はかりかねますけど?
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています

このQ&Aと関連する良く見られている質問

QExcelで挿入した図をセルの中央に配置したいです

よろしくお願いします
以前の質問を見ましたが
接合したセルの中央に配置したいので参考になりませんでした
EXCEL2000を利用しています
OSはXPです
16行4列を接合(左上がA26)しています
その位置に写真ファイルを挿入するのですが
中央に配置することができません
100シート近く挿入するので
簡単に出来ると助かります
よろしくお願いします

Aベストアンサー

マクロのサンプルを2つ書きました
picCenterは処理対象のセルを固定しています(この例ではアクティブなシートのA26セル)。
またselCenterは、シート上で選択されたセルを処理対象とします。(ただし選択されているのが結合セルでない場合は、先頭の1セルだけを処理対象範囲とします)

いずれも対象セル範囲にある画像を「対象セル範囲の中央」に配置します。ただし画像がセル範囲より大きいときは何もしません。

マクロはALT+F11でVBE画面を開き、左上のVBA Projectでシート名を右クリックし「挿入」→「標準モジュール」で表示される画面に貼り付けて下さい。マクロの実行はワークシート画面に戻ってALT+F8でマクロ一覧を開き、マクロ名を選択して「実行」ボタンです。

とりあえず「16行4列を接合(左上がA26)しています」の中に画像を貼り付けてマクロを動かしてみてください

Sub picCenter()
Dim p As Object
Dim rng, trg As Range
Const adr As String = "A26" '処理対象セルの左上のアドレス
  If Range(adr).MergeCells Then
    Set rng = Range(adr).MergeArea
  Else
    Set rng = Range(adr)
  End If
  For Each p In ActiveSheet.Pictures
    Set trg = Intersect(rng, p.TopLeftCell)
    If Not trg Is Nothing Then
      If p.Width < rng.Width Then
        p.Left = rng.Left + (rng.Width - p.Width) / 2
      End If
      If p.Height < rng.Height Then
        p.Top = rng.Top + (rng.Height - p.Height) / 2
      End If
    End If
  Next p
End Sub

Sub selCenter()
Dim p As Object
Dim rng, trg As Range
  If TypeName(Selection) = "Range" Then
    If Selection.MergeCells Then
      Set rng = Selection.Cells(1, 1).MergeArea
    Else
      Set rng = Selection.Cells(1, 1)
    End If
  End If
  For Each p In ActiveSheet.Pictures
    Set trg = Intersect(rng, p.TopLeftCell)
    If Not trg Is Nothing Then
      If p.Width < rng.Width Then
        p.Left = rng.Left + (rng.Width - p.Width) / 2
      End If
      If p.Height < rng.Height Then
        p.Top = rng.Top + (rng.Height - p.Height) / 2
      End If
    End If
  Next p
End Sub

マクロのサンプルを2つ書きました
picCenterは処理対象のセルを固定しています(この例ではアクティブなシートのA26セル)。
またselCenterは、シート上で選択されたセルを処理対象とします。(ただし選択されているのが結合セルでない場合は、先頭の1セルだけを処理対象範囲とします)

いずれも対象セル範囲にある画像を「対象セル範囲の中央」に配置します。ただし画像がセル範囲より大きいときは何もしません。

マクロはALT+F11でVBE画面を開き、左上のVBA Projectでシート名を右クリックし「挿入」...続きを読む

QExcelで挿入した図をセルの中央に配置したいのです。

Excel2000を利用しているのですけども先日保護したシートに図を挿入する方法をこちらで教えて頂きました。ありがとうございます。
今回は、その挿入した図をセルの中央に配置する方法をご教授お願したいのですが、よろしくお願いいたします。セルの書式設定で中央にしてもできませんでした。セルを保護しているからでしょうか?それとも全く検討違いの操作をしているのでしょうか。
下記マクロにその操作を追加する場合のマクロも教えて頂ければ大変助かります。

ActiveSheet.Unprotect
Application.Dialogs(xlDialogInsertPicture).Show
ActiveSheet.Protect
以上宜しく御願い致します。

Aベストアンサー

どこで、どのようなエラーが出たのでしょうか?

1.("Picture 1")と("A1")の部分は利用しているExcelの状態に合わせて変更する必要があります。
Set shp図 = ActiveSheet.Shapes("Picture 1")でエラーの場合。
Picture 1の名称が違っている可能性が高いです。
マクロの記録で対象の図を移動してみてください。
マクロに図の名称が記録されますので、それを利用する必要があります。

2."位置移動のエラー"
図の大きさよりA1セルの大きさが小さいです。
入りきらないのでエラーです。A1セルを大きくするか、別のセルに変更してください。

3.いきなりエラーとなる。
Option Explicitを指定していませんか?

Qエクセルで画像を真ん中に貼り付けたい

エクセルでデジカメで撮った画像データを真ん中に貼り付けたいのですが、やり方をお教えくださいませ。

周囲の余白をゼロにしても、貼り付けた場合にはどうしても右側の余白が大きくなります。

左右均等の余白にしたいのですが、お教えくださいませ。

Aベストアンサー

…それってExcelである必要ありますか?
Excelは表計算をするためのものです。
計算しないならWordを使うことを勧めます。

・・・本題・・・
余白だけでなく、印刷する紙の大きさと画像のサイズまで考慮する必要があります。

…面倒ですから、貼り付けた画像を右にずらしてはいかがでしょう。
画像を選択して矢印キー(→)で右へ少しずつずらすことができますから、
希望する位置へ調整しましょう。

Qエクセルで、セルのサイズに合わせて画像を挿入するには?

現在、データ等を記載した商品一覧表を作成しているおります。表のセルの中に商品画像を挿入しているのですが、画像を挿入してから、毎回その度に画像をセルのサイズに手動で変更するのが手間だなーと思っています。
指定したセルのサイズに、自動で画像をサイズ変換してくれる機能はないのでしょうか。
御存じの方おられましたら、よろしくお願いします。

Aベストアンサー

機能としては難しいですが、VBAを使えば結構簡単に出来るはずです。
1.イメージを置きたいセルの幅、高さの取得。
2.イメージの表示サイズの取得
3.後は比率などでのイメージの修正。
但し、画像の挿入でしたものをあとから変更するのではなく、貼り付けマクロを作成し先ほどのロジックをVBA化すれば可能。

QVBAによるセル内の画像の位置調整

Excel2007のVBAからShell関数で外部実行プログラムを起動します。
外部実行プログラムは画像データをクリップボードへデータを出力後、自動で終了します。
Shell関数とWin32APIを使用して外部プログラムを実行し、プログラムが終了するまで待つように処理して、
クリップボードから指定する複数の結合したセルへ画像を貼り付ける事は出来たのですが、
画像がセルの左上を基準に貼り付けられます。
この画像を、セルの中央に位置調整したいのですが可能なのでしょうか?
また画像の回転(1度単位)は可能でしょうか?

'指定セルへクリップボードの内容を貼り付け
ActiveSheet.Paste Destination:=Worksheets("Sheet1").Range("H53")

画像ファイルなどを読み込む訳ではないため、画像データ自体に名前がありません。
手動で位置調整は可能ですが、自動化出来ないかと色々調べ試してみたのですが、思う様に実現できません。
セルの結合は5行、列は結合していません。

どなたか御存知でしたら回答下さい。

Excel2007のVBAからShell関数で外部実行プログラムを起動します。
外部実行プログラムは画像データをクリップボードへデータを出力後、自動で終了します。
Shell関数とWin32APIを使用して外部プログラムを実行し、プログラムが終了するまで待つように処理して、
クリップボードから指定する複数の結合したセルへ画像を貼り付ける事は出来たのですが、
画像がセルの左上を基準に貼り付けられます。
この画像を、セルの中央に位置調整したいのですが可能なのでしょうか?
また画像の回転(1度単位)は可能で...続きを読む

Aベストアンサー

またまた登場,onlyromです。

百聞は一見に如かず、ということで新しいブックのSheet1で以下を実行してください。


 H53~H57 を結合して(画像より大分大きめに幅、高さを広げておく)

任意の場所に画像を貼り付け、又は 挿入

その後、下記コードをコピペして実行


'---------------------------------------
Sub test()
 With Selection
  .Top = (Range("H58").Top - Range("H53").Top - .Height) / 2 + Range("H53").Top
  .Left = (Range("I53").Left - Range("H53").Left - .Width) / 2 + Range("H53").Left
 End With
End Sub
'----------------------------------------

どうですか?
ど真ん中に移動したと思いますが。
 

またまた登場,onlyromです。

百聞は一見に如かず、ということで新しいブックのSheet1で以下を実行してください。


 H53~H57 を結合して(画像より大分大きめに幅、高さを広げておく)

任意の場所に画像を貼り付け、又は 挿入

その後、下記コードをコピペして実行


'---------------------------------------
Sub test()
 With Selection
  .Top = (Range("H58").Top - Range("H53").Top - .Height) / 2 + Range("H53").Top
  .Left = (Range("I53").Left - Range("H53").Left...続きを読む

Qエクセルで画像を自動的に挿入

エクセルは一般人程度の知識しかありません。
わたしは、デジカメの画像をエクセルに貼り付けて印刷しています。
(A4で、サイズ変更をして)
今までは、画像を貼り付けて、サイズ変更して、1画像ずつ配置していました。
しかし画像数が多いと配置の作業が大変です。画像を選択するだけでサイズ変更して自動的に配置してくれる機能なんてないですかね?
よろしくお願いします。

Aベストアンサー

検索すればそこかしこに情報があると思います。
我田引水ですが、
http://okwave.jp/qa3864319.html
更に、上記記事中のリンク先では、マクロの作り方も含めて説明してくれていますので、ご覧下さい。

QVBAエクセルに貼り付けた画像をセルにあった大きさにしたい(等倍)

エクセル貼り付けた画像をセルにあった大きさにしたいのですが、
その際、縦と横の比率を変更したくありません。

縦と横の比率を変更せず、セルにおさまる最大の大きさで画像のサイズを
変えることは可能でしょうか。

-----------------------------------------------------------------------------
縦と横の比率が関係なく、セルいっぱいのサイズに画像の大きさを変更するVBAは
下記URLから見つけられたのですが、、、、、
http://q.hatena.ne.jp/1240648036

Aベストアンサー

No.1です。

>画像が置いてあるセル上で処理を行う

画像のどこを基準にするか?によってコードは変わってきますが、
画像の左上端のセルにその画像を縦・もしくは横いっぱいに配置するコードにしてみました。

Sub Sample2()
Dim mySp As Shape, myRng As Range
Dim myHgt As Double, myWdt As Double

For Each mySp In ActiveSheet.Shapes
With mySp
Set myRng = .TopLeftCell
myHgt = myRng.Height
myWdt = myRng.Width
.Top = myRng.Top
.Left = myRng.Left
.Height = myHgt
If .Width > myWdt Then
.Width = myWdt
End If
End With
Next mySp
End Sub

こんな感じではどうでしょうか?m(_ _)m

No.1です。

>画像が置いてあるセル上で処理を行う

画像のどこを基準にするか?によってコードは変わってきますが、
画像の左上端のセルにその画像を縦・もしくは横いっぱいに配置するコードにしてみました。

Sub Sample2()
Dim mySp As Shape, myRng As Range
Dim myHgt As Double, myWdt As Double

For Each mySp In ActiveSheet.Shapes
With mySp
Set myRng = .TopLeftCell
myHgt = myRng.Height
myWdt = myRng.Width
.Top = myRn...続きを読む

Q複数の画像ファイルを挿入したい

工事の仕事をしています。
報告書をエクセルで書いて出すのですが、
現場の写真を大量に撮影して貼り付けなければなりません。

「挿入」→「ファイルから」で一枚一枚貼り付けているのですが手間でなりません。

デジカメで撮影した写真なのでファイル名は連番です。
一括でワークシートにズラッと並べて挿入することはできないのでしょうか?

週末1-200枚の写真を貼る為に残業するのは堪えます。
良い知恵をお貸し下さい。

Aベストアンサー

工事写真票の作成ですか?報告書の提出時期ですものね。(^^;)

工事写真ということで、次の点が重要になるかと思います。

1. 貼付けられる順番
  工事の様子を時間を追って撮影している場合、順番が重要です。
2. リサイズの問題
  工事写真は正確性が求められます。リサイズする場合、縦横比を固定すべきです。

1と2をクリアしつつ、貼付けを楽にするには、EXCELではマクロしか解決方法がありません。個人的にはVIXをお勧めしますが、一応EXCELでのマクロをアップします。貼付け後のサイズはセルの高さにあわせています。必要があれば、コードをカスタマイズして下さい。

ただ、他の方からもご指摘があるとおり、EXCELに200枚の画像は無茶ですね。複数のブックに切り分けましょう。

なお、マクロ[InsertPictures]は#2.papayukaさんのコードをかなり拝借しておりますし、配列のソートプログラムも以前どこかで教えて頂いたものです。クイックソートの方が早いのですが、長くなるので、バブルソートで済ませています。


以下コード。

Option Explicit
Sub InsertPictures()
  
  Dim fName As Variant
  Dim i As Long
  Dim Pict As Picture

  fName = Application.GetOpenFilename("JPGファイル, *.jpg", MultiSelect:=True)
  If IsArray(fName) Then
    Application.ScreenUpdating = False
    '配列に格納されたファイル名をソート
    BubbleSort fName, True
    For i = 1 To UBound(fName)
      Set Pict = ActiveSheet.Pictures.Insert(fName(i))
      With Pict
        .TopLeftCell = ActiveCell
        .ShapeRange.LockAspectRatio = msoTrue
        'どちらかをコメントアウト
        .ShapeRange.Height = ActiveCell.Height 'セルの高さリサイズ
        '.ShapeRange.Width = ActiveCell.Width 'セルの幅にリサイズ
        ActiveCell.Offset(0, 1) = fName(i) 'ファイル名書込み
      End With
      ActiveCell.Offset(2, 0).Activate
      Application.StatusBar = "処理中:" & i & "/" & UBound(fName) & "枚目"
    Next i
  End If
  With Application
    .StatusBar = False
    .ScreenUpdating = True
  End With
  Set Pict = Nothing
  MsgBox i & "枚の画像を挿入しました", vbInformation

End Sub

'値の入替え
Public Sub Swap(ByRef Dat1 As Variant, ByRef Dat2 As Variant)

  Dim varBuf As Variant
  varBuf = Dat1
  Dat1 = Dat2
  Dat2 = varBuf

End Sub

'配列のバブルソート
Public Sub BubbleSort(ByRef aryDat As Variant, _
  Optional ByVal SortAsc As Boolean = True)

  Dim i As Long
  Dim j As Long
  For i = LBound(aryDat) To UBound(aryDat) - 1
    For j = LBound(aryDat) To LBound(aryDat) + UBound(aryDat) - i - 1
      If aryDat(IIf(SortAsc, j, j + 1)) > aryDat(IIf(SortAsc, j + 1, j)) Then
        Call Swap(aryDat(j), aryDat(j + 1))
      End If
    Next j
  Next i

End Sub

工事写真票の作成ですか?報告書の提出時期ですものね。(^^;)

工事写真ということで、次の点が重要になるかと思います。

1. 貼付けられる順番
  工事の様子を時間を追って撮影している場合、順番が重要です。
2. リサイズの問題
  工事写真は正確性が求められます。リサイズする場合、縦横比を固定すべきです。

1と2をクリアしつつ、貼付けを楽にするには、EXCELではマクロしか解決方法がありません。個人的にはVIXをお勧めしますが、一応EXCELでのマクロをアップします。貼付け後のサイズはセ...続きを読む

QエクセルVBAで画像を貼り付ける座標設定方法は?

Sheets("Sheet1")に貼り付けたJ-pegの画像(=シンボルマーク)を別なシートに貼り付けるのは下記のVBAで出来ました。ただ、これでは貼り付け先のシートのセルK12が、貼り付け元のK12と同じ位置でないと思った場所に張り付きません。
そこでセルで場所を指定するのではなく、座標のようなもので指定する方法はないものかと考えた次第です。
オートシェイプなどは座標指定で作成できるのですが、J-pegのような画像はどうすればいいのでしょうか?

Sub TEST()
Sheets("FACE").Shapes("シンボルマーク").Copy
ActiveSheet.Range("K12").Select
ActiveSheet.Paste
End Sub

Aベストアンサー

#1です。
>この場合、ファイルをエクセルにくっつけて渡すなんてこと
>はできないものでしょうか?(別々にではなくあくまでエク
>セルのブックに付属した形で)
Excelのブックに付属した形にするなら、コピーペーストする方がいいと思います。一旦挿入した画像を別途保存するのは、簡単には出来ないと思います。

複数のシートで同じような作業をするなら、次のような方法も考えられます。
Function CpyMrk(MrkNM As String, myTop As Single, myLeft As Single)
Sheets("FACE").Shapes(MrkNM).Copy
ActiveSheet.Paste
ActiveSheet.Shapes(MrkNM).Top = myTop
ActiveSheet.Shapes(MrkNM).Left = myLeft
End Function

Sub test()
CpyMrk "シンボルマーク", 10, 10
End Sub

Qエクセル(2013)VBA-図の縦横比を変えずにセルにおさまる最大限の大きさにする

エクセル(2013)VBAを使って、画像を挿入し、挿入した画像を図として貼付けしているのですが、
その後、貼り付けた図をセルにおさまる最大限の大きさ(縦横比は変更しない)
に変更したいのですが、どのようなコードを書けば良いのかご教授頂きたいです。

今出来ているマクロは、ネットからコピーしてきたものの為、
私には知識が足りずカスタマイズができませんでした。。。
似たような質問があったのですが、そちらも私には理解できませんでした。。

以下が現在のコードです。”【質問】”と記載した箇所に入れるコードを教えて頂きたいです。

※画像を全て貼り付けてから、全ての画像のサイズをセルに合わせる。という方法は
 避けたく、都度取り込んだ画像のサイズを変えるようにしたいです。

何卒よろしくお願いいたします!!
------------------------------------------------------------------------------

Sub 画像とファイル名書き出し()

Dim fName As Variant
Dim i As Long
Dim Pict As picture
Dim mySp As Shape, myRng As Range
Dim myHgt As Double, myWdt As Double

'ファイル選択
fName = Application.GetOpenFilename("画像 ,*.emf; *.wmf; *.jpg; *.jpeg; *.jfif; *.jpe; *.png; *.bmp; *.dib; *.rle; *.gif; *.emz; *.wmz; *.pcz; *.tif; *.tiff; *.eps; *.pct; *.pict; *.wpg", MultiSelect:=True)

If IsArray(fName) Then
Application.ScreenUpdating = False
'配列に格納されたファイル名をソート
BubbleSort fName, True
For i = 1 To UBound(fName)
Set Pict = ActiveSheet.Pictures.Insert(fName(i))


With Pict
.TopLeftCell = ActiveCell
.ShapeRange.LockAspectRatio = msoTrue
.Cut
ActiveSheet.PasteSpecial Format:="図 (JPEG)", Link:=False, DisplayAsIcon:=False


' <<<【質問】ここでセルにおさまる最大限の大きさ(縦横比は固定)に変更したいです>>>
'
'
'
'
'

ActiveCell.offset(0, 1) = fName(i) '保存場所&ファイル名
ActiveCell.offset(0, 2) = Dir(fName(i)) 'ファイル名
End With
ActiveCell.offset(1, 0).Activate
Application.StatusBar = "処理中:" & i & "/" & UBound(fName) & "枚目"

Next i
End If
With Application
.StatusBar = False
.ScreenUpdating = True
End With

Set Pict = Nothing
If i < 1 Then
MsgBox "0枚の画像を挿入しました", vbInformation

Else
MsgBox i - 1 & "枚の画像を挿入しました", vbInformation
End If

End Sub
'値の入替え
Public Sub Swap(ByRef Dat1 As Variant, ByRef Dat2 As Variant)

Dim varBuf As Variant
varBuf = Dat1
Dat1 = Dat2
Dat2 = varBuf

End Sub

'配列のバブルソート
Public Sub BubbleSort(ByRef aryDat As Variant, _
Optional ByVal SortAsc As Boolean = True)

Dim i As Long
Dim j As Long
For i = LBound(aryDat) To UBound(aryDat) - 1
For j = LBound(aryDat) To LBound(aryDat) + UBound(aryDat) - i - 1
If aryDat(IIf(SortAsc, j, j + 1)) > aryDat(IIf(SortAsc, j + 1, j)) Then
Call Swap(aryDat(j), aryDat(j + 1))
End If
Next j
Next i

End Sub

エクセル(2013)VBAを使って、画像を挿入し、挿入した画像を図として貼付けしているのですが、
その後、貼り付けた図をセルにおさまる最大限の大きさ(縦横比は変更しない)
に変更したいのですが、どのようなコードを書けば良いのかご教授頂きたいです。

今出来ているマクロは、ネットからコピーしてきたものの為、
私には知識が足りずカスタマイズができませんでした。。。
似たような質問があったのですが、そちらも私には理解できませんでした。。

以下が現在のコードです。”【質問】”と記載した箇...続きを読む

Aベストアンサー

こんにちは、以下のコードをコメント部にいれてみて下さい。

'ここから
'この行はとりあえずコメントにしました
'''''ActiveSheet.PasteSpecial Format:="図 (JPEG)", Link:=False, DisplayAsIcon:=False

'変数設定はループの外(上の変数設定の部分)でして下さい
dim wWIDTH as long
dim wHIGHT as long
dim wRITU as double
dim MyShape as shape
dim oPIC as stdole.IPictureDisp

cells(i,1).select '<--- 画像を貼り付けるセルを選択しています

Set oPIC=LoadPicture(fName(i))

'指定したセルの高さに合わせる場合(今回は高さに合わせました)
wHIGHT=Selection.height 'セルの高さ
wRITU =wHIGHT/oPIC.height '比率=セルの高さ / 実画像の高さ
wWIDTH=int(oPIC.width*wRITU)

'指定したセルの横幅に合わせる場合
'' wWIDTH=Selection.width 'セルの幅
'' wRITU =wWIDTH/opic.width '比率=セルの幅 / 実画像の幅
'' wHIGHT=int(oPIC.height*wRITU)

Set MyShape=ActiveSheet.Shapes.AddPicture(Filename:=fName(i),LinkToFile:=False,SaveWithDocument:=True, _
Left:=Selection.Left,Top:=Selection.Top,Width:=wWIDTH,Height:=wHIGHT)
'ここまで

では頑張ってください

こんにちは、以下のコードをコメント部にいれてみて下さい。

'ここから
'この行はとりあえずコメントにしました
'''''ActiveSheet.PasteSpecial Format:="図 (JPEG)", Link:=False, DisplayAsIcon:=False

'変数設定はループの外(上の変数設定の部分)でして下さい
dim wWIDTH as long
dim wHIGHT as long
dim wRITU as double
dim MyShape as shape
dim oPIC as stdole.IPictureDisp

cells(i,1).select '<--- 画像を貼り付けるセルを選択しています

Set oPIC=LoadPicture(fName(i))

'指定したセ...続きを読む


このQ&Aを見た人がよく見るQ&A

人気Q&Aランキング