2016-09-12 3 views
0

Ich versuche, aus einem Word-Dokument zu lesen, und ich möchte, dass der Computer mir sagt, was im Dokument geschrieben wird, um sich nicht an anderer Stelle zu schreiben. Also, wenn ich das Schlüsselwort "Wort" sage, sollte mein Programm ein Dialogmenü öffnen und mich eine Wortdatei auswählen lassen und mir sagen, was drin ist. Die anderen Schlüsselwörter funktionieren. Also hier ist mein Code und auch mein Fehler.C# aus einem Word-Dokument lesen

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(); 
} 

Und mein Fehler ist enter image description here

+1

Zeile # 5 und Zeile # 5: readFromPath ist eine 'Null'-Referenz. versuchen Sie, es richtig zu füllen – Radinator

+0

@radinator ist korrekt, Sie müssen den Dateinamen übergeben, den Sie öffnen möchten. In Ihrem Fall der Pfad, in dem das Dokument gefunden wird, und der Name des Dokuments. –

+0

@MaartenvanStam Wenn ich readFromPath = "C: \ Benutzer \ N.Horatiu \ Desktop" + ".docx" setze, heißt es, dass diese "/" unerkannte Escape-Sequenz ist und ich will auch nicht jedesmal den Dateinamen und der Ort, ich möchte nur das Dokument auswählen, wenn das Dialogfeld geöffnet wird –

Antwort

1

Application.Documents.Open den vollständigen Pfad und Dateinamen führt.

Der Pfad muss mit \ und Präfix die Zeichenfolge mit @ Ende (@ oder wegzulassen und die doppelte Schrägstriche \ als ein umgekehrter Schrägstrich ein Escape-Zeichen wird in Betracht gezogen werden)

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

Document doc = app.Documents.Open(ref readFromPath);