レポート セット用のマクロ ライブラリを作成していますが、多くの場合、レポートに例として示す画像は、次のいずれかのピクセル幅にサイズ変更する必要があります。
- 300px
- 400px
- 500px
- 600px
- 700px
各画像の正確な幅をピクセル幅で変更するマクロを作成してみましたが、縦横比を無視して画像を引き伸ばすようです。マクロでアスペクト比をロックすることはできますか?
現実的に私が欲しいのは、画像の幅を [X] ピクセル単位でサイズ変更し、他に何もしない非常に短いマクロだけですが、他のサイズ変更マクロと同様に、高さが奇妙になります。
ピクセル幅のみのサイズ変更マクロ言語はありますか?
これは、私が取り組んできたパーセント サイジング コードの例です。
Sub FNG_setsize75percent()
'
' FNG_setsize75percent Macro
'
'
Selection.Find.ClearFormatting
With Selection.Find
.Text = "^g"
.Replacement.Text = "^p"
.Forward = True
.Wrap = wdFindAsk
.Format = False
.MatchCase = False
.MatchWholeWord = False
.MatchWildcards = False
.MatchSoundsLike = False
.MatchAllWordForms = False
Dim PercentSize As Integer
PercentSize = 75
If Selection.InlineShapes.Count > 0 Then
Selection.InlineShapes(1).ScaleHeight = PercentSize
Selection.InlineShapes(1).ScaleWidth = PercentSize
Else
Selection.ShapeRange.ScaleHeight Factor:=(PercentSize / 100), _
RelativeToOriginalSize:=msoCTrue
Selection.ShapeRange.ScaleWidth Factor:=(PercentSize / 100), _
RelativeToOriginalSize:=msoCTrue
End If
End With
Selection.InlineShapes(1).LockAspectRatio = msoTrue
End Sub
さて、実際に似たようなものを使用できる場合、私の推測では、これに似たものを使用できると思います:
Sub Img500px
Selection.InlineShapes(1).LockAspectRatio = msoTrue
Selection.InlineShapes(1).Width = 375#
Selection.InlineShapes(1).Height = (Selection.InlineShapes(1).AbsoluteWidth / 375#) * Selection.InlineShapes(1).Height
End Sub
1 つの小さな問題を除いて: まだ動作しません。
Sub Img500px
With Selection.Find
.Text = "^g"
.Replacement.Text = "^p"
.Forward = True
.Wrap = wdFindAsk
.Format = False
.MatchCase = False
.MatchWholeWord = False
.MatchWildcards = False
.MatchSoundsLike = False
.MatchAllWordForms = False
Selection.InlineShapes(1).Width = 375#
Selection.InlineShapes(1).Height = (Selection.InlineShapes(1).Width / 375#) * Selection.InlineShapes(1).Height
End With
Selection.InlineShapes(1).LockAspectRatio = msoTrue
End Sub
これもうまくいきません。
そのため、「単純な数学の問題」で解決しているように見えるかもしれませんが、それでも意図したとおりに機能していません。
それは本当に簡単です:
500 ピクセル / インチ / 縦横比をロックし、縦横比に従って高さを変更します。
これは「単純な数学の問題」であることに同意しますが、コードはまだ、あなたが想定していることを実行していません。
もちろん、私はこれ以上これで混乱しようとするのではなく、外部マクロ プログラムを使用することもできます。