ホテルを選ぶとき、これだけは譲れない条件TOP3は?

VBAでエクセルシートにフレームを設定して、画像を挿入したところRotation=0の時はうまく挿入できるが、Rotation=90の時は大きく右方向にずれてしまいます。様々な方法を試しましたがうまくいきません。どなたかよい方法を教えてください。なお、その状況とプログラムを別添しています。サムネイル作成しようとしています。

「VBAで写真を設定したフレームに挿入しよ」の質問画像

質問者からの補足コメント

  • どう思う?

    画像がつぶれているとのことですが、フレーム(Top:0 Left:0 W:381.5 H:252)の中央に画像(W:577 H:432 Rotation:90)を挿入する内容です。処理の結果はフレームから大きく右にづれて、画像のLeftが387になっています。
    処理の式はRotation=0の時の
     画像.Top=画像.Top+(フレーム.Height - 画像.Height)/2
    画像.Left=画像.Left+(フレーム.Width - 画像.Width)/2 をRotation=90のため画像.Heightを画像.Widthに画像.Widthを画像.Heightに変更して実行しました。
     よろしくお願いします。

    No.2の回答に寄せられた補足コメントです。 補足日時:2023/12/16 00:50
  • つらい・・・

    No2様 回答ありがとうございます。おっしゃる通りフレームと言っているのはShapeのことです。
    ただ、Rotationが90の画像(写真)のため高さと幅が逆転していると考え
    画像.Left=画像.Left+(フレーム.Width - 画像.Height)/2としましたが間違いでしょうか?

      補足日時:2023/12/16 18:51

A 回答 (3件)

こんにちは



添付の画像はほぼ読み取れませんので、ご質問の文章からだけですが・・・

>Rotation=90の時は大きく右方向にずれてしまいます。
画像のサイズ等の計算をする際は、縦・横の大きさは元のサイズ(=回転していない状態)になります。
90度回転で表示されている場合には、見た目では、縦・横のサイズが逆転することになりますので、それを考慮した計算方法にしておく必要があります。

以前、似た様な質問がありましたので、ご参考までに。
https://oshiete.goo.ne.jp/qa/13123440.html
この回答への補足あり
    • good
    • 0

No2です。



>フレーム(Top:0 Left:0 W:381.5 H:252)の中央に
>画像(W:577 H:432 Rotation:90)を挿入する内容です。
情報がないのでよくわからないけれど、「フレーム」と言っているものはどうやらShapeらしいので、両方の中心の位置を揃えれば良いのでは?

中心合わせということは
 フレーム.Left + フレーム.Width/2 = 画像.Left + 画像.Width/2
になるということなので、
  画像.Left = フレーム.Left + フレーム.Width/2 - 画像.Width/2
となるはず。
ご提示の計算方法は考え方がおかしくないですか?

※ 回転量を一般化して計算しているのが、No2で挙げた質問への回答です。
※ 90°単位で回転をした場合の各プロパティの関係を、そちらでの回答のNo2様(=ここでもNo1で回答をなさっています)が図示してくださっています。
    • good
    • 0

添付やされる画像は500×500ピクセルに縮小されるから、添付した画像の文字は潰れて見えないよ。



90度と270度の時は、別処理が必要。
回転してても画像のトップレフトが左上ではなく、
0度にした時のトップレフトになってるからかな。

セル枠に埋め込む時は、
縦横比を取得しで、
縦横比を1:1にして、
貼り付けたい位置に移動して、
縦横比を戻す、
みたいな手法で処理してました。

寝る前のスマホ回答なので、ザックリした内容ですがヒントになれば。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています


おすすめ情報