![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?5a7ff87)
Excelの指定したセルの、
(セル左上座標を基準に)座標を指定して
GIFやBMPなどの画像を表示させたいのですが、
分からなくて困っています。
セル内での座標指定またはセル内でのセンタリングの方法が分かる方は居ないでしょうか?
今の時点では指定したセルの左上に表示されてしまいます。
ソースはこんな感じなのですが・・・
with sheet
.Cells(2,3).Select
img="c:\test.gif"
.Pictures.Insert(img).Select
.Selection.Left =50
end with
A 回答 (3件)
- 最新から表示
- 回答順に表示
No.2
- 回答日時:
右クリックで画像が貼り付けられるようにしたみました。
Private Sub Workbook_SheetBeforeRightClick(ByVal Sh As Object, ByVal Target As Range, Cancel As Boolean)
Dim picFilenmn As Variant '画像ファイル
Dim compwk1 As Double
Dim compwk2 As Double
picFilenmn = Application.GetOpenFilename( _
"jpgファイル (*.jpg), *.jpg, bmpファイル (*.bmp), *.bmp", , "ファイルの選択", , False)
If picFilenmn <> False Then
ActiveSheet.Pictures.Insert(picFilenmn).Select
compwk1 = (Target.Height - Selection.ShapeRange.Height) / 2
compwk2 = (Target.Width - Selection.ShapeRange.Width) / 2
Selection.ShapeRange.IncrementTop compwk1
Selection.ShapeRange.IncrementLeft compwk2
Cancel = True '既定の右クリックメニューを抑制
End Sub
この回答への補足
回答してくださった方々、ありがとうございました。
結局は別の方法で解決してしまったのですが、
せっかくできたので、残しておきます。
動作確認も行いました。
ちょっと拡張したので、前提条件と動作の説明を加えます。
6行目のセルは、2こずつセルを結合している状態です。
つまり、(6,0)と(6,1)、(6,2)と(6,3)、・・・というふうに結合しています。
動作としては
6行目の左端から順に、8個の画像を表示します。
画像はセルの中央に表示します。
各セルに表示する画像の番号(数値型)は、配列IMG_DATAに格納してあります。
横座標を2回呼び出しているのは、セルを結合しているからです。
なお、体裁の都合により、行頭の空白は全角空白に変換してあります。
with sheet
<% For int_cnt=0 To 8 %>
img = "c:\/img/" + "<%=IMG_DATA(int_cnt)%>" + ".gif"
'アクティブセル指定
.cells(6,<%=int_cnt%>*2+1).Select
'画像貼り付け
.Pictures.Insert(img).Select
'左のセルの横座標
selw1 = .Cells(6,<%=int_cnt%>*2+1).Width
'右のセルの横座標
selw2 = .Cells(6,<%=int_cnt%>*2+2).Width
'左右のセルの横座標の合計
selw = selw1 + selw2
'セルの縦座標
shph = objExcelApp.Selection.ShapeRange.Height
'アクティブセルの座標(単位:ポイント)
selh = .Cells(6,<%=int_cnt%>*2+1).Height
shpw = objExcelApp.Selection.ShapeRange.Width
'画像を最初にセットした位置から移動させる
objExcelApp.Selection.ShapeRange.IncrementTop (selh - shph) / 2
objExcelApp.Selection.ShapeRange.IncrementLeft (selw - shpw) / 2
<% Next %>
'アクティブセルを左上端にもどす
.cells( 1, 1).Select
end with
No.1
- 回答日時:
途中まで作りました。
画像を貼付けて移動します。しかしながら画像のサイズとエクセルのセルの幅の相関関係をちょっと違うような気がして再計算中です。
Dim x, y, xx, yy, x1, y1 As Single
'セルの幅指定
x = 32
'セルの高さ指定
y = 32
'幅の設定
Columns("B:B").Select
Selection.ColumnWidth = x
Rows("2:2").Select
Selection.ColumnWidth = y
img = "c:\test.gif" '
Range("B2").Select
ActiveSheet.Pictures.Insert(img).Select
'xx = imgの幅
xx = Selection.ShapeRange.Width
' yy= imgの高さ
yy = Selection.ShapeRange.Height
xx = xx * 2.54 / 72
yy = yy * 2.54 / 72
'センタリングの位置
'移動距離の計算
x1 = (x - xx) / 2
y1 = (y - yy) / 2
x1 = x1 * 2.54
y1 = y1 * 2.54
Selection.ShapeRange.IncrementLeft x1
Selection.ShapeRange.IncrementTop y1
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) 【VBA】写真の貼り付けコードがうまく機能しません。 5 2022/09/01 18:43
- Excel(エクセル) エクセル VBA For Next 繰り返しの書き方を教えてください 6 2022/09/01 14:11
- Visual Basic(VBA) Excelのマクロコードについて教えてください。 1 2022/03/27 13:25
- Excel(エクセル) excelで検索した商品の画像(ネットワーク上の)を表示させたい。 3 2023/06/28 00:32
- Visual Basic(VBA) エクセルのメモについて教えてください。 1 2022/06/23 11:32
- Visual Basic(VBA) 3つのプロシージャをまとめたら実行時エラー発生で対応不能 6 2022/05/17 01:47
- Excel(エクセル) Excelのマクロについて教えてください。 4 2022/05/31 14:07
- Visual Basic(VBA) ExcelのVBAコードについて教えてください。 3 2022/06/10 09:24
- Visual Basic(VBA) Excelのマクロについて教えてください。 3 2022/06/30 09:36
- Excel(エクセル) 【Excel】指定のセル内容を基に別シートのセルを検索して選択する【VBA】 1 2022/06/16 16:16
関連するカテゴリからQ&Aを探す
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Excel 範囲指定スクショについ...
-
VBAマクロ実行時エラーの修正に...
-
エクセルVBA 配列からセルに「...
-
VBAコードについて教えてくださ...
-
【VBA】写真の貼り付けコードが...
-
Excelで空白セル直前のセルデー...
-
VBAのソースコードについて
-
エクセルのカーソルを非表示に...
-
EXCELのフォーム上でリアルタイ...
-
複数指定セルの可視セルのみを...
-
エクセルVBA ダブルクリックし...
-
VB DataGridViewについて
-
FlexGridのセル内文字を点滅さ...
-
Excel VBAでCheckboxの名前を変...
-
Excel UserForm の表示位置
-
特定の色のついたセルを削除
-
VBA deleteをクリックすると型...
-
VBA にて、条件付き書式で背景...
-
excelで結合セルの場合にエラー...
-
エクセルの値を範囲指定で取得...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
VBAマクロ実行時エラーの修正に...
-
エクセルVBA 配列からセルに「...
-
Excel UserForm の表示位置
-
Excelで空白セル直前のセルデー...
-
【Excel VBA】一番右端セルまで...
-
EXCEL VBA 文中の書式ごと複写...
-
VBA にて、条件付き書式で背景...
-
特定の色のついたセルを削除
-
【VBA】【ユーザーフォーム_Lis...
-
VBA 複数条件の分岐処理の上手...
-
入力規則のリスト選択
-
【VBA】写真の貼り付けコードが...
-
Excel VBA IF文がうまく動作し...
-
VBAでユーザーフォームにセル値...
-
VBA:日付を配列に入れ別セルに...
-
Excel VBAでCheckboxの名前を変...
-
エクセルの合計を自動で表示さ...
-
関数の引数でrangeを指定したとき
-
複数指定セルの可視セルのみを...
-
DataGridViewでグリッド内に線...
おすすめ情報