Office Automatisierung mit C#/.Net



  • Hi,

    ich komme von C++/MFC und habe vor, nun C#/.NET zu lernen. Mein erstes Projekt soll eine kleine Anwendung mit Office Automatisierung sein. Dabei soll ein Word 2000 ferngesteuert werden.

    In "Handbuch der .NET-Programmierung" von Rolf Wenger lese ich jetzt, dass man dazu irgendwelche Interop-Dateien benötigt, die bei der Installation von Office installiert werden müssen. Das wird am Beispiel von Office 2003 gezeigt.

    Da frage ich mich, ob diese Interop-Dateien bei Office 2000 überhaupt schon dabeigewesen sein können und wenn nein, ob dann Automatisierung mit .Net und Office 2000 (oder noch älter) überhaupt möglich ist...

    Tschüss,
    Riky



  • http://www.tsql.de/csharp/csharp_word_office.php

    Das nächste mal bitte einfach google anwerfen.

    "c# word"



  • Hallo,

    ich habe jetzt mit Visual Studio 2008 Standard ein normales Windows-Forms Projekt erstellt. Habe dann genau wie in dem Tutorial erklärt den Verweis zugefügt. Dann noch einen Button, und wenn man drauf klickt wird dieser Code aus dem Tutorial ausgeführt:

    Word.ApplicationClass myWordApp = new Word.ApplicationClass();

    Das Ergebnis ist eine unbehandelte Ausnahme in der Anwendung:

    ************** Ausnahmetext **************
    System.IO.FileNotFoundException: Die COM-Klassenfactory für die Komponente mit CLSID {000209FF-0000-0000-C000-000000000046} konnte aufgrund des folgenden Fehlers nicht abgerufen werden: 8007007e.
    bei WordFernsteuerung.Form1.button1_Click(Object sender, EventArgs e) in C:\Projekte\Visual C++ 9\Tests\WordFernsteuerung\Form1.cs:Zeile 22.
    bei System.Windows.Forms.Control.OnClick(EventArgs e)
    bei System.Windows.Forms.Button.OnClick(EventArgs e)
    bei System.Windows.Forms.Button.OnMouseUp(MouseEventArgs mevent)
    bei System.Windows.Forms.Control.WmMouseUp(Message& m, MouseButtons button, Int32 clicks)
    bei System.Windows.Forms.Control.WndProc(Message& m)
    bei System.Windows.Forms.ButtonBase.WndProc(Message& m)
    bei System.Windows.Forms.Button.WndProc(Message& m)
    bei System.Windows.Forms.Control.ControlNativeWindow.OnMessage(Message& m)
    bei System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message& m)
    bei System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)

    ************** Geladene Assemblys **************
    mscorlib
    Assembly-Version: 2.0.0.0.
    Win32-Version: 2.0.50727.1433 (REDBITS.050727-1400).
    CodeBase: file:///C:/WINDOWS/Microsoft.NET/Framework/v2.0.50727/mscorlib.dll.
    ----------------------------------------
    WordFernsteuerung
    Assembly-Version: 1.0.0.0.
    Win32-Version: 1.0.0.0.
    CodeBase: file:///C:/Projekte/Visual%20C++%209/Tests/WordFernsteuerung/bin/Release/WordFernsteuerung.exe.
    ----------------------------------------
    System.Windows.Forms
    Assembly-Version: 2.0.0.0.
    Win32-Version: 2.0.50727.1433 (REDBITS.050727-1400).
    CodeBase: file:///C:/WINDOWS/assembly/GAC_MSIL/System.Windows.Forms/2.0.0.0__b77a5c561934e089/System.Windows.Forms.dll.
    ----------------------------------------
    System
    Assembly-Version: 2.0.0.0.
    Win32-Version: 2.0.50727.1433 (REDBITS.050727-1400).
    CodeBase: file:///C:/WINDOWS/assembly/GAC_MSIL/System/2.0.0.0__b77a5c561934e089/System.dll.
    ----------------------------------------
    System.Drawing
    Assembly-Version: 2.0.0.0.
    Win32-Version: 2.0.50727.1433 (REDBITS.050727-1400).
    CodeBase: file:///C:/WINDOWS/assembly/GAC_MSIL/System.Drawing/2.0.0.0__b03f5f7f11d50a3a/System.Drawing.dll.
    ----------------------------------------
    Interop.Word
    Assembly-Version: 8.1.0.0.
    Win32-Version: 8.1.0.0.
    CodeBase: file:///C:/Projekte/Visual%20C++%209/Tests/WordFernsteuerung/bin/Release/Interop.Word.DLL.
    ----------------------------------------
    mscorlib.resources
    Assembly-Version: 2.0.0.0.
    Win32-Version: 2.0.50727.1433 (REDBITS.050727-1400).
    CodeBase: file:///C:/WINDOWS/Microsoft.NET/Framework/v2.0.50727/mscorlib.dll.
    ----------------------------------------
    System.Windows.Forms.resources
    Assembly-Version: 2.0.0.0.
    Win32-Version: 2.0.50727.1433 (REDBITS.050727-1400).
    CodeBase: file:///C:/WINDOWS/assembly/GAC_MSIL/System.Windows.Forms.resources/2.0.0.0_de_b77a5c561934e089/System.Windows.Forms.resources.dll.
    ----------------------------------------

    Vielleicht ist es noch wichtig zu erwähnen, dass ich Word 2003 und Word 2000 installiert habe. Word 2000 soll ferngesteuert werden.

    Tschüss,
    Riky



  • Hast du die Word References eingebunden?

    Ich arbeite zur Zeit auch an einem Projekt zur Office Automatisierung und benutze die References "Microsoft.Office.Core" und "Microsoft.Office.Interop.Word".

    Der nachfolgende Ablauf ist eigentlich wie gehabt:

    Microsoft.Office.Interop.Word.ApplicationClass wordApp = new Microsoft.Office.Interop.Word.ApplicationClass();
    
    object fileName = Environment.CurrentDirectory + "\\Rechnung.dot";
    object readOnly = false;
    object isVisible = true;
    
    object missing = System.Reflection.Missing.Value;
    
    Microsoft.Office.Interop.Word.Document wordDoc = 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);
    
    wordDoc.Activate();
    
    // Hier stellst du mit deinem Dokument etwas an....
    
    object saveChanges = true;
    
    wordDoc.Close(ref missing, ref missing, ref missing);
    wordApp.Quit(ref saveChanges, ref missing, ref missing);
    

Log in to reply