NonSoft

ワードファイルを入力(読込)するサンプル(C#.NET)


 サンプル(ソース/コード)
ワード(WORD)ファイル(.doc)のテキストを入力(読み込み)するサンプルです。
Word.Applicationを使用しています。

Wordを終了させる処理を忘れるとタスクマネージャに残ってしまうので、
try{}catch{}finally{}で確実に終了するようにしています。
このサンプルのテスト環境ではワードを確実に終了出来ましたが、終了しない場合は、
objDocument.Rangeも変数に代入して使用後に解放した方が良いかもしれません。


ワードファイルを読み込む方法は以下のようにしています。
1.ワード(Word.Application)起動
2.ワードファイルを開く
3.ワードのテキスト部分の選択
4.ワードのテキスト部分をクリップボードへコピー
5.クリップボードのテキストをペースト(貼り付け)して取得

VB.NETのワード入力のサンプルはこちらです。
ワードファイルを入力(読込)するサンプル(VB.NET)

★クラスモジュール(WordRead.cs)
using System.Runtime.InteropServices;
using Word = Microsoft.Office.Interop.Word;

class WordRead
{
    public static void RdWordText(String strPath, out String strDt)
    {
        // Word.Applicationを有効にするため参照の追加を行なってください
        // [参照の追加],[COM],[Microsoft Word *.* Object Library]
        Word.Application objWord = null;
        Word.Document objDocument = null;
        object oMis = System.Reflection.Missing.Value;
        object oTru = true;
        object oFal = false;

        try
        {
            // ワード起動
            objWord = new Word.Application();

            // ワード非表示
            objWord.Application.Visible = false;
            objWord.Application.DisplayAlerts = 
                Microsoft.Office.Interop.Word.WdAlertLevel.wdAlertsNone;

            // ワードファイルを開く
            object oPth = strPath;
            objDocument = objWord.Documents.Open(
                ref oPth, ref oMis, ref oTru, ref oMis, ref oMis, ref oMis,
                ref oMis, ref oMis, ref oMis, ref oMis, ref oMis, ref  oMis,
                ref oMis, ref oMis, ref oMis, ref oMis);

            // テキスト選択
            objDocument.Select();

            // Clipboardコピー
            object start = 0;
            object end = 0;
            objDocument.Range(ref oMis, ref oMis).Copy();

            // Clipboardペースト
            strDt = System.Windows.Forms.Clipboard.GetText();
        }
        catch (Exception ex)
        {
            throw ex;
        }
        finally
        {
            // ワード終了処理
            if (objDocument != null)
            {
                objDocument.Close(
                    ref oFal, ref oMis, ref oMis);      // ワードファイルを閉じる
                Marshal.ReleaseComObject(objDocument);  // オブジェクト参照を解放
                objDocument = null;                     // オブジェクト解放
            }
            if (objWord != null)
            {
                objWord.Quit(
                    ref oFal, ref oMis, ref oMis);      // ワードを終了する
                Marshal.ReleaseComObject(objWord);      // オブジェクト参照を解放
                objWord = null;                         // オブジェクト解放
            }
        }
    }
}

★フォームモジュール(Form1.cs)
public partial class Form1 : Form
{
    private void button1_Click(object sender, EventArgs e)
    {
        String AppPath = System.AppDomain.CurrentDomain.BaseDirectory;
        String strDt = "";
        WordRead.RdWordText(AppPath + "test.doc", out strDt);
        MessageBox.Show(strDt);
    }
}