いつもお世話になっております、macです。
開発環境
WindowsXP VC++6.0 msword9.h word2000 word2003
(word2000で開発し、その後word2003をインストールしました)
VC++でワードファイルを保存するプログラムを作成しています。
任意の位置に画像を貼り付けるために以下のようなコードを記述しました。
* 画像の貼り付け *****
Range cRange = m_cSelection.GetRange();
cRange.Select();
// 画像の作成
InlineShapes cInlineShapes = m_cDocWordFile.GetInlineShapes();
InlineShape cInlineShape = cInlineShapes.AddPicture(
F:\\image.jpg,
&_variant_t(true),
&_variant_t(true),
&_variant_t(cRange));
// 移動する
cInlineShape.Select();
Shape cShape = cInlineShape.ConvertToShape();
cShape.SetLeft(100);
cShape.SetTop(200);
****************************
貼り付ける画像は、ワードファイル保存後に削除します。
ファイルに貼り付けないと消えてしまうので、InlineShapeを使用しています。
word2000では問題なく動作しますが、word2003ではConvertToShapeを行うと
エラーが起き終了します。
そのエラーもメッセージが表示されず、どのようなエラーが起こっているのか
わかりません。
2000と2003では、画像の貼り付け方法が異なるのでしょうか?
どなたかご教授お願いします。
ITO様、回答ありがとうございます。
word2000用のmsword9.hではなく、word2003用のmsword.hを使用して
見ましたが、結果は変わらず、ConvertToShapeでエラーが起きてしまいます。
word2003で「描画キャンバス」上に画像を貼り付けると、位置を固定しない
図形として貼り付けられます。
この「描画キャンバス」はどのように作成するのでしょうか?
私の環境ではマクロが見れません。
僕は、この件は実際に組んだことがないのでよくわかりません。
Office関連は、「サポート情報」を調べると何か情報があるかもしれません。
ITO様、回答ありがとうございます。
以下のように描画キャンバスを追加し、イメージファイルを追加したところ
うまく動作しました。
ありがとうございました。
** ここから *****************
Selection cSelection = m_cAppliWord.GetSelection();
Range cRange = cSelection.GetRange();
// 描画キャンバスを作成 ------------
Shapes cShapes = m_cDoc.GetShapes();
Shape cShape = cShapes.AddCanvas(0, 0, 300, 200, &_variant_t(cRange));
// 描画キャンバス内に画像を作成 ----
// キャンバスアイテムを取得
CanvasShapes cCanvasItems = cShape.GetCanvasItems();
// キャンバスに画像を追加
cShape = cCanvasItems.AddPicture(F:\\image.bmp,
&_variant_t(false), &_variant_t(true),
&_variant_t((float)0), &_variant_t((float)0),
&_variant_t((float)100), &_variant_t((float)150));
** ここまで *****************