
エクセル(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
No.1ベストアンサー
- 回答日時:
こんにちは、以下のコードをコメント部にいれてみて下さい。
'ここから
'この行はとりあえずコメントにしました
'''''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)
'ここまで
では頑張ってください
ありがとうございます!!
ご丁寧に、縦幅に合わせる場合、横幅に合わせる場合を記載いただいたり、
1箇所づつ動作の内容を記載してくださったり、本当に有難うございます!!!不要箇所も教えて頂けて助かりました。
まこちらをそのままコードの中に入れさせて頂きまして、
やりたいことができるようになりました!
無知ゆえに、説明の足りていない箇所などもあったかと思いますが
内容を汲みとっていただけて大変感謝しております。
本当に有難うございました!!!!
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) 【VBA】写真の貼り付けコードがうまく機能しません。 5 2022/09/01 18:43
- Visual Basic(VBA) 【VBA】写真の縦横比を変えずに貼り付ける 5 2023/06/13 11:42
- Visual Basic(VBA) 複数のcsvファイルをExcelに一括変換したい 2 2023/03/03 12:44
- Visual Basic(VBA) 別シートから年齢別の件数をカウントしたいの続き 5 2023/01/24 00:16
- Visual Basic(VBA) いつもお世話になっております、VBAで教えて頂きたいのですが 2 2022/05/05 22:20
- Excel(エクセル) 2つのVBAを一緒にしたら機能しなくなりました(エクセル) 7 2022/06/02 12:41
- Visual Basic(VBA) エクセルのマクロを使ってメールを送る方法について教えてください 2 2022/03/29 01:36
- Visual Basic(VBA) 貼り付けた値が消えていく 以下はソースファイルの2番目のシートのB6から最終行を取得 ターゲットファ 2 2023/07/27 12:23
- Visual Basic(VBA) ①ExcelVBAでカレンダーを作り、別のユザーフォームで日付を入力したいのですがエラーになります。 1 2023/02/17 18:39
- Visual Basic(VBA) excel vbaでvlooupの変数がわかりません。 7 2022/05/30 09:35
このQ&Aを見た人はこんなQ&Aも見ています
-
【VBA】写真の縦横比を変えずに貼り付ける
Visual Basic(VBA)
-
VBAエクセルに貼り付けた画像をセルにあった大きさにしたい(等倍)
Excel(エクセル)
-
エクセル 画像のプロパティで縦横比を固定する。 これをVBAでコードにできますか? 知ってる方おられ
Visual Basic(VBA)
-
-
4
エクセルVBAで縦向きの画像の挿入・回転
Excel(エクセル)
-
5
【VBA】写真の貼り付けコードがうまく機能しません。
Visual Basic(VBA)
-
6
EXCELに画像を貼り付けマクロの画像大きさ調整にについて教えてください。
その他(Microsoft Office)
-
7
VBAでエクセルのシート上の画像のリサイズと配置を行いたい
Excel(エクセル)
-
8
Excel マクロ 画像をリンクせずかつ圧縮して貼りつける方法を教えてください
Excel(エクセル)
-
9
Excelマクロ 選択画像の大きさを100%に
その他(Microsoft Office)
-
10
【エクセルVBA】シェイプのサイズとセルの縦横
Excel(エクセル)
-
11
Excel2019 マクロを使用し画像を貼り付けした際のリンク切れについて
Excel(エクセル)
-
12
VBAによるセル内の画像の位置調整
Excel(エクセル)
-
13
画像を結合セルの大きさで貼付(以前に回答されたマクロについて)
PowerPoint(パワーポイント)
-
14
マクロを実行すると画像がズレてしまいます
その他(Microsoft Office)
-
15
【ExcelVBA】図の縮小貼付時のトラブル
その他(Microsoft Office)
-
16
エクセルマクロでシート内にある画像のみを選択する
Excel(エクセル)
-
17
エクセルVBA 画像を貼り付けるセル位置を指定する方法
Excel(エクセル)
-
18
VBA セルに合わせて移動するが、サイズ変更はしない
Visual Basic(VBA)
-
19
【EXCEL VBA】ダブルクリックでセルのサイズに合わせて画像を挿入に機能を追加したいです。
Visual Basic(VBA)
-
20
EXCEL VBAで 図形を中央寄せに関して質問です
Excel(エクセル)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
vba テキストボックスとリフト...
-
セルをクリック⇒そのセルに入力...
-
(Excel)数字記入セルの数値の後...
-
貼り付けで複数セルに貼り付けたい
-
枠に収まらない文字を非表示に...
-
エクセルで指定したセルのどれ...
-
対象セル内(複数)が埋まった...
-
数式を残したまま、別のセルに...
-
Excelで数式内の文字色を一部だ...
-
エクセルの一つのセルに複数の...
-
excelの特定のセルの隣のセル指...
-
エクセルVBA、ファイル名をセル...
-
エクセルの書式設定の表示形式...
-
Excelでのコメント表示位置
-
エクセルのセルの枠を超えて文...
-
Excel 例A(1+9) のように番地の...
-
エクセル オートフィルタで絞...
-
EXCEL VBA セルに既に入...
-
【Excel】 セルの色での判断は...
-
【エクセル】IF関数 Aまたは...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Excelについての質問です 並べ...
-
【マクロ】アクティブセルの2...
-
スプレッドシートで複数のプル...
-
excelで日付関数の文字列変換の...
-
エクセルで指定したセルのどれ...
-
貼り付けで複数セルに貼り付けたい
-
枠に収まらない文字を非表示に...
-
セルをクリック⇒そのセルに入力...
-
エクセルの一つのセルに複数の...
-
数式を残したまま、別のセルに...
-
(Excel)数字記入セルの数値の後...
-
Excel 例A(1+9) のように番地の...
-
対象セル内(複数)が埋まった...
-
エクセルの書式設定の表示形式...
-
EXCEL VBA セルに既に入...
-
excelの特定のセルの隣のセル指...
-
エクセルのセルの枠を超えて文...
-
Excelでのコメント表示位置
-
エクセル オートフィルタで絞...
-
Excelで数式内の文字色を一部だ...
おすすめ情報