• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:互換モードで描画キャンバスにフリーフォーム)

互換モードで描画キャンバスにフリーフォーム

このQ&Aのポイント
  • Word VBAで作成したプログラムで互換モード文書でフリーフォームの描画がうまくいかない場合の対処方法を教えてください。
  • 互換モード文書で正常にフリーフォームの描画を行うためにはどうすればよいでしょうか?
  • 互換モードでの描画には時間がかかるので、効率的に実行する方法を教えてください。

質問者が選んだベストアンサー

  • ベストアンサー
  • DreamyCat
  • ベストアンサー率56% (295/524)
回答No.2

調べてみたところおよそ5行というのは余白の高さに相当する値ですね。 2013版では描画キャンバスの左上を原点として描画され、描画キャンバスからはみだす位置への描画でもエラーにならず描画されますが 互換モードだと計算方法がまったく違っていて、、 用紙の左上角を原点として描画され、 描画位置が描画キャンバス内に入っていないとエラーになりました。 (上・左余白の値+描画キャンバスの左上のtop,left値+キャンバス左上を起点としたときのフリーフォームのtop,left位置を指定しなければならない) というわけで、互換モードだとページ設定を変えてもキャンバス内に描画されるようにコードを書かなくてはいけないので面倒です。 

krmr
質問者

お礼

ありがとうございます。 互換モードでは、キャンバスをページ先頭部に置いて、かつ、ページ間を開いた状態で実行した時だけは、目的位置に描画されるようなので、当面はそのやり方で行くことにします。キャンバスをどの位置に置いても目的位置に描画されるようにするのは面倒そうなので。

その他の回答 (1)

  • DreamyCat
  • ベストアンサー率56% (295/524)
回答No.1

キャンバスを選択してから実行すればどちらの形式でも実行できますし 選択していなければどちらの形式でもエラーになりますが 何か操作ミスしていませんか。 手動操作しないでということなら、キャンバスを選択するコートを追加しておけばいいのかもしれません。

krmr
質問者

お礼

回答ありがとうございます。 こちらでは、互換モードの場合、きちんとキャンバスを選択してもエラーになります。 そちらでは互換モードでも出来たとのことですが、ひょっとすると、キャンバスを文書の先頭部に置いて実行されたのではありませんか。キャンバスを文書の先頭部や先頭部から5行以内の位置に置いて実行した場合は、こちらでも、エラーは出ず、一応、フリーフォームはキャンバスに乗りますが、コードで指定した位置からずれた位置に描画されます。キャンバスを文書先頭部から6行以上あけた位置に置いて実行した場合はエラーが出るようです。

関連するQ&A