2016-09-12 8 views
0

Word文書から読み込もうとしています。文書に書かれている内容を他の場所に書き込まないようにしたいと考えています。だから私がキーワード "単語"を言うとき、私のプログラムはダイアログメニューを開き、単語ファイルを選択して、何が入っているか教えてください。他のキーワードは機能します。だから私のコードと私のエラーです。C#Word文書から読み取った

case "word": 
if (openFileDialog1.ShowDialog() == System.Windows.Forms.DialogResult.OK) { 
    Microsoft.Office.Interop.Word.Application app = new Microsoft.Office.Interop.Word.Application(); 
    object readFromPath = null; 
    Document doc = app.Documents.Open(ref readFromPath); 

    foreach (Paragraph objParagraph in doc.Paragraphs) 
    ss.SpeakAsync(objParagraph.Range.Text.Trim()); 

    ((_Document)doc).Close(); 
    ((_Application)app).Quit(); 
} 

そして、私のエラーがenter image description here

+1

ライン#5とライン# 5:readFromPathは 'null'リファレンスです。正しく埋めるようにしてください。 – Radinator

+0

@ radinatorが正しい場合は、開くファイル名を渡す必要があります。あなたのケースでは、ドキュメントが見つかるパスとドキュメントの名前を足したものです。 –

+0

@MaartenvanStam私はreadFromPath = "C:\ Users \ N.Horatiu \ Desktop" + "s.docx"を設定すると、この "/"は認識されないエスケープシーケンスであるとも言われています。場所、私はちょうどダイアログメニューが開いたときにドキュメントを選択したい –

答えて

1

Application.Documents.Openは完全なパスとファイル名をとります。

パスは\で終了し、@の文字列を接頭辞必要があります(または@を除外して、二重のバックスラッシュ\ 1つのバックスラッシュはエスケープ文字と見なされるよう)

object readFromPath = @"C:\Users\N.Horatiu\Desktop\s.docx" 

Document doc = app.Documents.Open(ref readFromPath); 
関連する問題