C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[4]: WORDのテキストボックス内の文字列読み込み


(過去ログ 87 を表示中)

[トピック内 5 記事 (1 - 5 表示)]  << 0 >>

■51997 / inTopicNo.1)  WORDのテキストボックス内の文字列読み込み
  
□投稿者/ なかお (1回)-(2010/07/28(Wed) 18:50:52)

分類:[C/C++] 

開発環境
Microsoft WindowsXP
Microsoft Visual Studio 2008
Office 2007

いつもお世話になっております。
C++でOLEオートメーションを利用して、Wordの文章とその文章内のテキストボックスの中身を
読み込みたいのですが、テキストボックスの中身を取得する処理がうまく行かずに困っています。

ExcelにはCTextBoxクラスがあり、このクラスからテキストボックスの中身が取得できます。

またPowerPointではCShapeクラスを取得して、CShape.Get_TextFrame()を実行してCTextFrameクラスを取得。
更に、CTextFrame.Get_TextRange()を実行して、CTextRangeクラスを取得し、このクラスから取得することが
できました。

ですがWordには、CTextBoxクラスもTextRangeクラスもありません。(CTextFrameクラスはWordにも存在します。)
インターネットを利用して調べても情報がとても少なく、とても困っている状態です。


どなたか分かる方がいらっしゃいましたら、ご教授宜しくお願い致します。

引用返信 編集キー/
■52025 / inTopicNo.2)  Re[1]: WORDのテキストボックス内の文字列読み込み
□投稿者/ なかお (3回)-(2010/07/29(Thu) 13:36:11)
質問しておいて申し訳ありませんが、自己解決いたしました。

PowerPointと同様にCShapeクラスを取得し、CShape.get_AlternativeText()メソッドを使用すれば
シェイプの中身の文字列(テキスト)を取得できました。
(ただし、取得した文字列にはオートシェイプの種類が日本語でくっついてきますが、、、)


また何かあった時はご利用させていただきます。ありがとうございました。
解決済み
引用返信 編集キー/
■52028 / inTopicNo.3)  Re[2]: WORDのテキストボックス内の文字列読み込み
□投稿者/ 魔界の仮面弁士 (1722回)-(2010/07/29(Thu) 14:22:16)
# 回答に非ず。

No52025 (なかお さん) に返信
> PowerPointと同様にCShapeクラスを取得し、CShape.get_AlternativeText()メソッドを使用すれば
> シェイプの中身の文字列(テキスト)を取得できました。
> (ただし、取得した文字列にはオートシェイプの種類が日本語でくっついてきますが、、、)

それは、たまたま似たような文字列が入っていたというだけであって、シェイプ内の
テキストとは別物だと思います。その方法で取得できるのは、あくまでも
[テキスト ボックスの書式設定]ダイアログの「代替テキスト」の文字列かと。

C++ から制御したことはありませんが、VBA だと、
  Shape オブジェクトの TextFrame プロパティ
 → TextFrame オブジェクトの TextRange プロパティ
 → Range オブジェクトの Text プロパティ
にて取得できます。
解決済み
引用返信 編集キー/
■52072 / inTopicNo.4)  Re[3]: WORDのテキストボックス内の文字列読み込み
□投稿者/ なかお (4回)-(2010/07/30(Fri) 11:25:09)
No52028 (魔界の仮面弁士 さん) に返信

魔界の仮面弁士さん 返信ありがとうございます。

> それは、たまたま似たような文字列が入っていたというだけであって、シェイプ内の
> テキストとは別物だと思います。その方法で取得できるのは、あくまでも
> [テキスト ボックスの書式設定]ダイアログの「代替テキスト」の文字列かと。

 指摘されて気づきました。。これじゃ、確かにまずいですね。。

> C++ から制御したことはありませんが、VBA だと、
>   Shape オブジェクトの TextFrame プロパティ
>  → TextFrame オブジェクトの TextRange プロパティ
>  → Range オブジェクトの Text プロパティ

 一番初めの投稿にも記載しましたが(分かりにくかったかもしれないですね。。)PowerPointでは上記の
 方法で取得することはできました。
 しかし、office 2007のWord、ExcelにはTextRangeが存在しないのです。。。
 (もしかしたら私のヘッダ作り方がまずいのかも知れませんが)
 
 TextFrameクラスまでは取得できるのですが、そこからTextRangeが取得できなくて困っています。
 やはり、VBAとC++ではインターフェース等が違うのでしょうか。。
引用返信 編集キー/
■52075 / inTopicNo.5)  Re[4]: WORDのテキストボックス内の文字列読み込み
□投稿者/ なかお (5回)-(2010/07/30(Fri) 11:58:11)
2010/07/30(Fri) 11:58:31 編集(投稿者)

No52072 (なかお さん) に返信
> ■No52028 (魔界の仮面弁士 さん) に返信

 すいません、RangeとTextRangeを見間違えてました。。

>>C++ から制御したことはありませんが、VBA だと、
>>  Shape オブジェクトの TextFrame プロパティ
>> → TextFrame オブジェクトの TextRange プロパティ
>> → Range オブジェクトの Text プロパティ

 上記方法で、Wordのオブジェクトのテキストが取得できました。
 PowerPointはTextRange→TextRangeだったので、ずっとWordにもTextRangeがあるのではないかと考えていました。。
 
 とても助かりました!!また機会があったら、よろしくお願いいたします。
 ありがとうございました。
解決済み
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -