2016-05-26 26 views
0

タイトルに記載されていることを実行しようとしています。私のサブが、​​この含まれています:PowerPoint VBAインポートイメージ、その後一定のアスペクト比でサイズ変更

Set oPic = oSld.Shapes.AddPicture(FileName:=strPath & strTemp, _ 
            LinkToFile:=msoFalse, _ 
            SaveWithDocument:=msoTrue, _ 
            Left:=35, _ 
            Top:=260, _ 
            Width:=-1, _ 
            Height:=245) 

oPic.LockAspectRatio = msoCTrue 
oPic.Height = 255 

をしかし、いくつかの理由で、アスペクト比は、実際にロックされていません - 画像の高さが255ポイントに縮小されているが、幅は同じまま。私が間違っている何かアイデア?

答えて

1

使用

oPic.LockAspectRatio = msoTrue 

ない、msoCTrue

は、私はあなたのコードを使用して問題を再現することができ、そして私は絵をロードする際に画像が高さを指定しないで動作するように取得することができます:

Set oPic = oSld.Shapes.AddPicture(FileName:=strPath & strTemp, _ 
            LinkToFile:=msoFalse, _ 
            SaveWithDocument:=msoTrue, _ 
            Left:=35, _ 
            Top:=260, _ 
            Width:=-1, _ 
            Height:=-1) 

oPic.LockAspectRatio = msoTrue 
oPic.Height = 255 

アスペクト比は写真の現在のスケーリングではなく、ピクチャデータから来ているようです。これはまだ何が必要達成しない場合、私は2つのパスを参照することができます

  1. をあなたが本当に必要なアスペクト比を満たすためにあなたの写真ファイルを更新した後、上記の方法を使用します。

  2. 高さ/幅を計算し、.lockaspectratioの代わりに設定することによって、プログラムでアスペクト比を設定します。

+0

回答ありがとうございますが、画像の高さを低くするとアスペクト比が変わることはありません。他のアイデア? –

+0

@NilsGudatもっと答えて答えを更新しました。これは役に立ちますか? –

+0

はい、完璧で、単純に高さを指定せず、画像を読み込んだ後に変更すると効果的です!なぜ、本当に理解していないが、私はそれを取るよ! –

関連する問題