【VBA】セルに画像を挿入しましょう~VBA100本ノック_29~

  Рет қаралды 6,525

わちょんのゆっくりIT

わちょんのゆっくりIT

2 жыл бұрын

#VBA100本ノック 29本目
ファイル選択ダイアログで画像ファイルを指定し、その画像をアクティブセルにリンクしない図として貼り付けてください。
貼り付けた画像は、縦横比を維持したままセル内に収めてください。
セル内の位置はなるべく真ん中に。
※選択できる拡張子は適当に。
<動画内で紹介したコード>
Option Explicit
Sub test1()
ActiveSheet.Shapes.AddPicture "C:\29本目\部長.png", False, True, 0, 0, -1, -1
End Sub
Sub test2()
Dim rng As Range
Set rng = ActiveCell
Dim sPath As String
With Application.FileDialog(msoFileDialogFilePicker)
.Show
sPath = .SelectedItems(1)
End With
Dim sp As Shape
Set sp = ActiveSheet.Shapes.AddPicture(sPath, False, True, rng.Left, rng.Top, -1, -1)
If rng.Width > rng.Height Then
sp.Height = rng.Height
Else
sp.Width = rng.Width
End If
sp.Top = rng.Top + (rng.Height - sp.Height) / 2
sp.Left = rng.Left + (rng.Width - sp.Width) / 2
End Sub
◇◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆
<ブログ>
wachi-yon.jp/vba100/029/
次回の動画(30本目)
• 【VBA】ループを組み立てましょう!~VBA...
<チャンネル紹介>
ExcelやVBAを中心にゆるく紹介する素人チャンネルです
<参考サイト>
Excelの神髄さん 「VBA100本ノック29本目」
excel-ubara.com/vba100/VBA100...
<音楽・効果音>
甘茶の音楽工房 さん
amachamusic.chagasi.com/terms...
効果音ラボ さん
soundeffect-lab.info/sound/an...

Пікірлер: 9
@will-st1pb
@will-st1pb 2 жыл бұрын
仕事で写真をセルに挿入することが多いのですがこのマクロに出会えて劇的に仕事がスムーズになりました! ありがとうございます!
@dill-mame
@dill-mame Жыл бұрын
セルの幅に合わせてサイズ変更したときになんで縦横の比率が変わらないのかって考えて込んでしまったけどわからなかった… 真髄さんのリンク踏んだら28本目に飛んで更に混乱、模範解答にはアス比を変えないって記載があって更に大混乱w 色々なパターンがあるってことかな、うん!(ムリヤリ納得)
@rikiya62
@rikiya62 2 жыл бұрын
どんな業務で使うんだろうか...
@user-jd4er2xr5d
@user-jd4er2xr5d 2 жыл бұрын
sp.top=sp.top+(rng.height-sp.height)/2が何をしているのかさっぱり頭の悪い自分にはわかりません…
@zerocode9660
@zerocode9660 2 жыл бұрын
dim rng as range → rngはセル範囲である set rng = range(A1) → rngはセルA1である dim sp as shapes → spはシェイプ(図形)である set sp = activesheet~ → spは現在表示しているシート上に「新しく追加された画像」である sp.top = sp.top + ~ → 「新しく追加された画像」の画像左上の位置は「画像左上+(セルA1の高さ-画像の上下の幅)÷2」である
@user-jd4er2xr5d
@user-jd4er2xr5d 2 жыл бұрын
解説ありがとうございます。 なぜあれでセルの真ん中にくるのかがさっぱり分からなくて… 書き方が悪くて申し訳ないです。 さっぱり分からないので最悪覚えます。
@zerocode9660
@zerocode9660 2 жыл бұрын
@@user-jd4er2xr5d セル内に画像を納めたい場合のポイントは「画像の中心点がセルの中心点に合致する」必要がある。 けど、残念なことにVBAには画像の中心点というパラメータは存在しない。 なので「画像の左上位置をどうやって適切な位置に置くか」が重要になってくる。 そのためには「画像を除いたセルの空白部分」がちょうど半分になる必要がある。 例えば…「5cmの紙に3cmのシールを貼りたい」場合、「空白は左右に1cm」有れば良い。そうするとセル内のちょうど真ん中に貼れる。 その両端余白を割り出すために「セルの長さ(紙の長さ)-画像の長さ(シールの長さ)」を求め、それを2で割ってる。 すると、左右に同一の余白が出来るので結果的にセル内の中央に配置される。
@user-jd4er2xr5d
@user-jd4er2xr5d 2 жыл бұрын
@@zerocode9660 重ねてありがとうございます。 例えがスゴく分かりやすくて自分の頭でも理解することがができました! 感謝です
@user-vz8bd1ou9z
@user-vz8bd1ou9z Жыл бұрын
@@user-jd4er2xr5d さん、 @zero codeさん 助かりました〜
【VBA】ループを組み立てましょう!~VBA100本ノック_30~
9:30
わちょんのゆっくりIT
Рет қаралды 3,4 М.
One moment can change your life ✨🔄
00:32
A4
Рет қаралды 30 МЛН
Русалка
01:00
История одного вокалиста
Рет қаралды 7 МЛН
Best father #shorts by Secret Vlog
00:18
Secret Vlog
Рет қаралды 22 МЛН
エクセルモンスター #1 ~Excelで大切なこと~
10:48
わちょんのゆっくりIT
Рет қаралды 10 М.
【Excel×VBA】指定したセル範囲を画像にして保存する方法
5:56
Simple 〜プログラミング〜
Рет қаралды 2,4 М.
One moment can change your life ✨🔄
00:32
A4
Рет қаралды 30 МЛН