Word 2000 und 2003: Problem beim öffnen einer XML-Datei

13/11/2008 - 17:36 von Nadia Vranken | Report spam
Hallo!

Ich habe folgendes Problem.
Auf meinem PC habe ich Word 2000 und Word 2003 installiert. Beide
funktionieren und sollten auch weiterhin funktionieren.
Nun habe ich eine Word-XML Datei die ich in meiner C#-Applikation öffnen
möchte. Dies mache ich so:

Microsoft.Office.Interop.Word.ApplicationClass WordApp = new
Microsoft.Office.Interop.Word.ApplicationClass();

Microsoft.Office.Interop.Word.Document aDoc = WordApp.Documents.Open(ref
fileName, ref missing, ref readOnly, ref missing, ref missing,
ref missing, ref missing, ref missing, ref missing,
ref missing, ref missing, ref isVisible, ref missing, ref missing, ref
missing, ref missing);

Wenn ich nun als letztes Word 2003 benutzt habe und die dll's und dot
Dateien von Word 2003 als letzes geladen wurden, öffnet sich meine XML Datei
auch mit word 2003. wenn ich jedoch Word 2000 als letztes geöffnet hatte und
diese dll's und dot Dateien als letztes geladen wurden, so erhalte ich einen
Fehler, denn meine Applikation versucht die XML Datei nun mit word 2000 zu
öffnen, was natürlich nicht funktioniert( Word 2000 unterstützt XML nicht).

Meine Frage nun, wie ist es möglich dass ich in meiner Applikation Word 2003
aufrufe auch wenn 2000 als letztes benutzt wurde. Ist das irgendwie möglich?

Ich hoffe jemand kann mir helfen.

Vielen Dank
Nadia
 

Lesen sie die antworten

#1 Frank Dzaebel
13/11/2008 - 22:10 | Warnen spam
Hallo Nadia,

Meine Frage nun, wie ist es möglich dass ich in meiner Applikation
Word 2003 aufrufe auch wenn 2000 als letztes benutzt wurde. Ist das
irgendwie möglich?



ja, Du kannst eine spezielle Word-Version öffnen, indem Du
das Word.ApplicationClass-Objekt latebind instanziierst.
Zum Beispiel:


Word.ApplicationClass word;
object m = Type.Missing;

private void Form1_Load(object sender, EventArgs e)
{
word = ErzeugeWordInstanz(OfficeVersion.Office2007);
MessageBox.Show("Word: " + word.Version);
// ...
WordBeenden();
}

private Word.ApplicationClass ErzeugeWordInstanz(
OfficeVersion officeVersion)
{
string progID = ProgID.Word(officeVersion);
Type wordType = Type.GetTypeFromProgID(progID.ToString());
if (wordType == null)
throw new Exception(progID + " nicht installiert!");
return Activator.CreateInstance(wordType) as Word.ApplicationClass;
}

private void WordBeenden()
{
word.Quit(ref m, ref m, ref m);
Marshal.ReleaseComObject(word);
GC.Collect();
GC.WaitForPendingFinalizers();
}

class ProgID
{
static public string Word(OfficeVersion officeID)
{
return "Word.Application." + (int)officeID;
}
}

enum OfficeVersion
{
Office97 = 8, Office2000, Office2002, Office2003, Office2007
}



ciao Frank
Dipl.Inf. Frank Dzaebel [MCP/MVP C#]
http://Dzaebel.NET

Ähnliche fragen