- ベストアンサー
エクセルのマクロでワードの文字を挿入する方法とセルのサイズに合わせる方法
- エクセルのマクロを使ってワードの文字を挿入する方法について解説します。また、選択されているセルのサイズに合わせる方法も説明します。
- エクセルのマクロを使ってワードの文字を挿入する方法と、選択されているセルのサイズに合わせる方法について詳しく解説します。
- マクロ初心者のためのエクセルでワードの文字を挿入する方法と、選択されているセルのサイズに合わせる方法について説明します。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
>Selection.ShapeRange.ScaleHeight h, msoFalse, msoScaleFromTopLeft この場合の h はShapeの高さではなく もとの高さと貼り付ける高さの比率を入れる様です ですので 1.貼り付けたShapeの高さを取得する 2.貼り付けるセルの高さを取得する 3.高さの比率を計算して、H に入れ Selection.ShapeRange.ScaleHeight H, msoFalse, msoScaleFromTopLeft 等を実行する、という手順になると思います (幅についても同様)
その他の回答 (2)
- ASIMOV
- ベストアンサー率41% (982/2351)
たぶん.. >H = Selection.Height >w = Selection.Width は H = Selection.ColumnHeight w = Selection.ColumnWidth 原因判りませんが、Columnを付けないとWが6.4倍くらいの値になります Hの方は付けても付けなくても同じ値になるのに? さらに >Selection.ShapeRange.ScaleHeight w, msoFalse, msoScaleFromTopLeft は、 Selection.ShapeRange.ScaleHeight H, msoFalse, msoScaleFromTopLeft じゃないですか? >Selection.ShapeRange.ScaleWidth H, msoFalse, msoScaleFromTopLeft も、同様に Selection.ShapeRange.ScaleWidth w, msoFalse, msoScaleFromTopLeft じゃないでしょうか?
お礼
たびたびありがとうございます。 色々試行錯誤してみて下記のコードにしてみましたがエラーは出ないもののサイズが (オブジェクトの高さ×セルの高さ=変更後のオブジェクトの高さ) のように設定されているようです。 Sub 形式選択貼付() w = Selection.ColumnWidth h = Selection.RowHeight ActiveSheet.PasteSpecial Format:="Microsoft Office Word 文書 オブジェクト", Link:=False, DisplayAsIcon:=False Selection.ShapeRange.ScaleHeight h, msoFalse, msoScaleFromTopLeft Selection.ShapeRange.ScaleWidth w, msoFalse, msoScaleFromTopLeft End Sub WとHは試しに入れ替えてみた時のなごりで元に戻し忘れてました。
- ASIMOV
- ベストアンサー率41% (982/2351)
Sub TEST() w = Selection.ColumnWidth h = Selection.RowHeight MsgBox "W=" & w & " H=" & h End Sub で、どうでしょう
お礼
ありがとうございます。 何をしたいかが伝えきれてませんでした。 前述のマクロはエクセルで縦横変倍可能な文字を使用したい為に考えたもので、 1、wordの起動 2、wordのマクロを使用して文字をコピー後終了 3、エクセルに形式を選択して貼付(ここまでは成功) 4、貼り付けたworddocumentのサイズをセルに合わせる(前述のマクロはセルにサイズを合わせる動作をマクロで記録したもの) という工程で作りましたが最後のところを数値ではなく選択しているセルのサイズに合わせたいのです。 教えてもらったコードを参考にいろいろ試してみましたがやはりうまくいきません 3と4を合体させて下記のように直してみましたがサイズ変更は成功するものの選択したセルのサイズとはかけ離れた巨大なものが出来てしまします。 Sub 形式選択貼付() H = Selection.Height w = Selection.Width ActiveSheet.PasteSpecial Format:="Microsoft Office Word 文書 オブジェクト", Link:=False, DisplayAsIcon:=False Selection.ShapeRange.ScaleHeight w, msoFalse, msoScaleFromTopLeft Selection.ShapeRange.ScaleWidth H, msoFalse, msoScaleFromTopLeft End Sub 解決方法はありませんでしょうか?
お礼
ありがとうございました。 ちょと時間もなかった為、強引ですが下記のようにしてなんとか思い通りの操作になりました。 Sub () w = Selection.Width / 6.45 h = Selection.Height / 1.03 ActiveSheet.PasteSpecial Format:="Microsoft Office Word 文書 オブジェクト", Link:=False, DisplayAsIcon:=False Selection.ShapeRange.ScaleHeight h /18,msoFalse,msoScaleFromTopLeft Selection.ShapeRange.ScaleWidth w / 9.95, msoFalse,msoScaleFromTopLeft