C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[1]: セルのサイズに合わせて画像を表示させたい(Excel)


(過去ログ 110 を表示中)

[トピック内 3 記事 (1 - 3 表示)]  << 0 >>

■65294 / inTopicNo.1)  セルのサイズに合わせて画像を表示させたい(Excel)
  
□投稿者/ kaori (1回)-(2013/02/16(Sat) 21:54:31)

分類:[VB.NET/VB2005 以降] 

Excelのセルの中に、画像ファイル(撮影された写真)のサイズを挿入するときに、セルのサイズに合わせて画像を表示させたいと考え、インターネット上でVBの下記のマクロを探してみました。

 セルをダブルクリックすると、画像ファイルの読み出しが行なわれるのですが、セルのサイズにピッタリと合わず、
「列」にわずかに隙間が空いてしまいます・・・。

 セルのサイズに合わせる為にはどうすればよいでしょうか?

 もう一つ質問させていただきたいのですが、一部の画像は読み出しだ際に、縦にして自動的に表示させたいです。
(これまではExcelの「図の書式設定」で-90度と手入力していました)

 何卒宜しくお願い致します。
 
 Excel2003
 Visual Basic 6.5







Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, _
Cancel As Boolean)
Dim myPic
Dim myRange As Range '画像を配置するセル範囲
Dim rX As Double, rY As Double


myPic = Application.GetOpenFilename("画像ファイル,*.jpg;*.jpeg;*.gif;*.tif")
If VarType(myPic) = vbBoolean Then Exit Sub

Set myRange = Target 'このセル範囲に収まるように画像を縮小する

Application.ScreenUpdating = False
With ActiveSheet.Pictures.Insert(myPic).ShapeRange
rX = myRange.Width / .Width
rY = myRange.Height / .Height
If rX > rY Then
.Height = .Height * rY
Else
.Width = .Width * rX
End If
.Left = .Left + (myRange.Width - .Width) / 2 '写真を横方向の中央に配置
.Top = .Top + (myRange.Height - .Height) / 2 '写真を縦方向に中央に配置


End With
Application.ScreenUpdating = True
Cancel = True
End Sub 

投稿日時 - 2013-02-16 16:40:26


引用返信 編集キー/
■65300 / inTopicNo.2)  Re[1]: セルのサイズに合わせて画像を表示させたい(Excel)
□投稿者/ namara (1回)-(2013/02/17(Sun) 08:31:57)
> If rX > rY Then
> .Height = .Height * rY
> Else
> .Width = .Width * rX
> End If

「セルのサイズにピッタリと合わせる」ということは、具体的にどういうことなのでしょうか。

・縦・横ともセルのサイズにぴったりと合わせたい(縦横で異なる圧縮比)
・縦・横のセルに対する比率を見て、圧縮が大きくなる方を縦横に適用する(縦横の圧縮比は同じ)

いずれの場合でも、上のコードには当てはまらないのですが、このコードのロジックはこれでいいのでしょうか。
引用返信 編集キー/
■65322 / inTopicNo.3)  Re[1]: セルのサイズに合わせて画像を表示させたい(Excel)
□投稿者/ shu (188回)-(2013/02/18(Mon) 14:14:03)
No65294 (kaori さん) に返信
> If rX > rY Then
> .Height = .Height * rY
> Else
> .Width = .Width * rX
> End If

If rX > rY Then
    .Width = .Width * rY
    .Height = .Height * rY
Else
    .Width = .Width * rX
    .Height = .Height * rX
End If

でどうでしょう?

引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -