2016-08-17 3 views
-1

Env: Windows 10 64 Bit, Visual Studio Express 2013. Ich habe Microsoft Office 2013 und 2003 installiert. Und fügen Sie Microsoft Office 11.0 object library hinzu und Microsoft Word 11.0 object library Referenzen. Aber funktioniert nicht. enter image description here enter image description hereDer Versuch, Microsoft.Office.Interop.Word über die Microsoft Word 11.0-Objektbibliothek zu verwenden, führt zu einem Kompilierungsfehler

Ich habe versucht, dass, wenn ich Microsoft Word 11.0 object library zu Microsoft Word 15.0 object library und alles ändern ist ok.but ich für Word 2003 arbeiten muß, ja, was soll ich tun?

Code:

using System; 
using System.IO; 
using System.Collections.Generic; 
using System.Text; 
using Word = Microsoft.Office.Interop.Word; 

namespace readDOC { 
    class Program { 
     static void Main(string[] args) { 

      string cd = Directory.GetCurrentDirectory(); 
      Word.Application word = new Word.Application(); 
      List<string> dirs = new List<string>(); 
      foreach (string dir in Directory.GetFiles(@".", "*.doc?")) { 
       if (dir.IndexOf('~') == -1) { 
        dirs.Add(cd + dir.Substring(1)); 
       } 
      } 
      foreach (string fn in dirs) { 
       Word.Document docs = word.Documents.Open(fn); 
       try { 
        docs.Protect(Word.WdProtectionType.wdAllowOnlyReading); 
        Console.WriteLine(@"OK:{0}.", fn); 
       } catch (Exception e) { 
        Console.WriteLine(@"NOT OK:{0}.", fn); 
       } finally { 
        docs.Close(); 
       } 
      } 
      word.Quit(); 
      Console.WriteLine("Press any key to finish"); 
      Console.ReadLine(); 
     } 
    } 
} 
+2

Was funktioniert nicht? Was ist der Fehler? Bitte posten Sie den * full * exception text, dh benutzen Sie 'Exception.ToString()'. Für alle, die wir wissen, erhalten Sie möglicherweise eine Datei nicht gefunden Fehler –

+0

BTW Sie * kann * nicht öffnen eine bestimmte Version, wie [hier erklärt] (http://stackoverflow.com/questions/12073152/how-to-open- spezifische-Version-des-Wortes-2007-2010-in-Excel). Dies ist nicht spezifisch für das Wort, so funktioniert COM/OLE. Jede COM-Anwendung registriert alle vorherigen Schnittstellen. Wenn Sie also nach 11.0 fragen, erhalten Sie die dafür registrierte Anwendung, dh Word 2013. –

+0

Warum möchten Sie trotzdem mit 2003 interoperieren? Sie brauchen das nicht, um 'doc' statt' docx' Dateien zu erzeugen - Sie können das Format angeben, in dem durch Interop gespeichert werden soll. Außerdem benutzen immer noch sehr wenige Leute das alte Format. 'docx' ist bereits 7 Jahre alt. Sie könnten 'docx' Dateien mit dem OpenXML SDK erzeugen, ohne dass Word installiert ist. –

Antwort

1

Nach der Überprüfung der Frage, die ich es glauben, weil Sie nicht die Interop (Extensions) verwenden.

Stellen Sie sicher, dass Sie Ihr Build-Plattformziel auf x86 setzen, seit Sie 2003 hinzufügen. Es gibt keine x64 Unterstützung für 2003. Das wäre meine Vermutung. Ich kann 2003 nicht testen, da dies meine Arbeitsmaschine ist.

Ich hoffe, mein Vorschlag weist Sie in die richtige Richtung.

Verwandte Themen