word2003のConvertToShape – プログラミング – Home

通知
すべてクリア

[解決済] word2003のConvertToShape


mac
 mac
(@mac)
ゲスト
結合: 22年前
投稿: 37
Topic starter  

いつもお世話になっております、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
 ITO
(@ITO)
ゲスト
結合: 22年前
投稿: 1235
 

msword9.hが違うのでは、

http://support.microsoft.com/kb/178749/JA
を参照してみてください。


返信引用
mac
 mac
(@mac)
ゲスト
結合: 22年前
投稿: 37
Topic starter  

ITO様、回答ありがとうございます。

word2000用のmsword9.hではなく、word2003用のmsword.hを使用して
見ましたが、結果は変わらず、ConvertToShapeでエラーが起きてしまいます。

word2003で「描画キャンバス」上に画像を貼り付けると、位置を固定しない
図形として貼り付けられます。
この「描画キャンバス」はどのように作成するのでしょうか?

私の環境ではマクロが見れません。


返信引用
ITO
 ITO
(@ITO)
ゲスト
結合: 22年前
投稿: 1235
 

僕は、この件は実際に組んだことがないのでよくわかりません。
Office関連は、「サポート情報」を調べると何か情報があるかもしれません。


返信引用
mac
 mac
(@mac)
ゲスト
結合: 22年前
投稿: 37
Topic starter  

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));
** ここまで *****************


返信引用

返信する

投稿者名

投稿者メールアドレス

タイトル *

プレビュー 0リビジョン 保存しました
共有:
タイトルとURLをコピーしました