
A 回答 (1件)
- 最新から表示
- 回答順に表示
No.1
- 回答日時:
Wordのファイルの内容さえ取得できれば,他はテキストファイルの場合と同じです。
なので,Wordのファイルの本文の取得方法について書きます。
# 他にもヘッダ・フッタやシェイプなど,考慮すべき事はありますが……。
Wordのファイルの本文の取得は,
1. 参照設定でMicrosoft Wordへの参照を追加する (COMタブ)
2. Applicationをnewする (バージョン,IAかPIAかで名前空間の違いあり)
3. 2.で作ったApplicationオブジェクトからDocumentsを取得する
4. 3.で取得したDocumentsオブジェクトのOpenメソッドを呼び出して,Documentを取得する
5. 4.で取得したDocumentオブジェクトのRangeメソッドを,引数2つともにSystem.Reflection.Missing.Valueで呼び出して,Rangeを取得する
6. 5.で取得したRangeオブジェクトのTextプロパティを参照して,本文を取得する
7. 5.で取得したRangeオブジェクトを引数にして,System.Runtime.InteropServices.Marshal.ReleaseComObjectメソッドを呼び出して,Rangeオブジェクトを解放する
8. 4.で取得したDocumentオブジェクトのCloseメソッドを呼び出して,ドキュメントを閉じる
9. 4.で取得したDocumentオブジェクトを引数にして,System.Runtime.InteropServices.Marshal.ReleaseComObjectメソッドを呼び出して,Documentオブジェクトを解放する
10. 3.で取得したDocumentsオブジェクトを引数にして,System.Runtime.InteropServices.Marshal.ReleaseComObjectメソッドを呼び出して,Documentsオブジェクトを解放する
11. 2.で作ったApplicationオブジェクトのQuitメソッドを呼び出して,Wordを終了させる
12. 2.で作ったApplicationオブジェクトを引数にして,System.Runtime.InteropServices.Marshal.ReleaseComObjectメソッドを呼び出して,Applicationオブジェクトを解放する
という手順になります。
とにかくReleaseComObjectが面倒なのですが,それ以外はほぼWord VBAのノリでいけます。
なお,シェイプだのテーブルだのがあると,テキスト中に変な文字が混じります。
MSDN: Marshal.ReleaseComObject メソッド (System.Runtime.InteropServices)
http://msdn.microsoft.com/ja-jp/library/system.r …
MSDN: Missing.Value フィールド (System.Reflection)
http://msdn.microsoft.com/ja-jp/library/system.r …
MSKB: Visual C# を使用して Microsoft Word で新規文書を自動的に作成する方法
http://support.microsoft.com/kb/316384/ja
注)サポートオンライン情報ですが,COMオブジェクトの解放を行っていないという問題があります。
回答ありがとうございます。
早速この方法を試してみようと思います。
取り急ぎ、御礼を。
無事できましたら改めてご報告します。
ありがとうございました!
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Word(ワード) パソコン内にあるwordファイルを探したいです。word内に、ある単語が利用されている(書かれている 1 2022/10/11 16:38
- Word(ワード) 正の文字 4 2022/08/23 16:06
- Android(アンドロイド) Pixelのレコーダーで文字起こしした英文を検索する方法 4 2022/10/21 07:45
- Word(ワード) Wordで作った資料の修正方法 2 2023/06/19 00:51
- Visual Basic(VBA) WordのVBAについて 5 2023/01/11 14:38
- Excel(エクセル) 【Excel】指定のセル内容を基に別シートのセルを検索して選択する【VBA】 1 2022/06/16 16:16
- Word(ワード) wordで文字の感覚を設定したい。 3 2023/02/04 17:30
- ドライブ・ストレージ Windows10でのファイル内の文字列検索 SSDに寿命? 4 2022/07/12 03:25
- その他(Microsoft Office) Windows Update 後、Office2019(Word、Excelなど)が消えた 4 2023/01/14 10:28
- Windows 10 別ユーザーでログインした際、表示されないのソフトの探し方 1 2022/07/15 10:26
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
アクセスVBAのMe!と[ ]
-
VBA エンターキーでイベントに...
-
GDIオブジェクトが増える……
-
日本語の文字化けを直す方法
-
現在アクティブになっているオ...
-
Accessのフォーム上にエクセル...
-
サブルーチンにオブジェクト名...
-
ChexBox1等の「1」を変数にで...
-
文字列で小数点以下の0を削除し...
-
コードでオブジェクトを最前面に
-
エクセルのデータをwebフォーム...
-
PowerpointVBAで指定のShapeオ...
-
エクセルで、日付を入力すると...
-
「ご処理進めて頂きますようお...
-
VBAでループ内で使う変数名を可...
-
Googleフォーム・複数人の申し...
-
エクセルVBAで、MsgBox やInput...
-
Excelシート上のマクロを登録し...
-
EXCEL VBA マクロ 実行する度に...
-
インタラクティブの反対語は?
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
VBA エンターキーでイベントに...
-
アクセスVBAのMe!と[ ]
-
エクセルVBAでセル番地を指定し...
-
Excel VBAでマウスの左クリック...
-
Accessのフォーム上にエクセル...
-
日本語の文字化けを直す方法
-
文字列で小数点以下の0を削除し...
-
コードでオブジェクトを最前面に
-
Excel2007 でのチェックボック...
-
ExcelのシートをAccessで表示し...
-
【エクセルのマクロ】クリップ...
-
LoadImage関数について(VC++)
-
【エクセル】複数のTextBoxに共...
-
[C#] DataGridViewの項目名
-
現在アクティブになっているオ...
-
Webbrowserで完全にHPを表示さ...
-
サブルーチンにオブジェクト名...
-
ユーザーフォームのインポート...
-
ビデオキャプチャについて
-
代入しているのになぜnullのま...
おすすめ情報