Benutzer mit den meisten Antworten
Word in eigener Klasse öffnen und an Form zur weiteren Bearbeitung übergeben

Frage
-
Hallo Forum,
ich habe mir eine Klasse gemacht, in der ich ein Word Dokument öffne und bestimmte Tetxt bearbeite.
Nun möchte ich das Word Doc an die aufrufende Form wieder übergeben um es dort weiter zu bearbeiten odes es an eine
weitere Funktion in der Klasse übergeben.
Ich möchte das wenn irgend möglich machen, ohne das ich das Doc immer irgendwo speichern und wieder öffnen muss.
Hat mir da jemand einen Hinweis ?
Gruß Roland
Antworten
-
Du instanzierst hier die Application- und die Document-Instanz. Wenn du ohne Speichern diese Daten weiter bearbeiten willst, dann musst du diese an deine Form weiter geben bevor du sie schließt.
Nachfolgend nochmal eine Beispielklasse, wie du es machen könntest:
class MyWordEditor
Der Aufruf könnte dann so aussehen:
{
/// <summary>Ruft ddie Word-Instanz ab.</summary>
public Microsoft.Office.Interop.Word.Application WordApp { get; private set; }
/// <summary>Ruft das Worddokument ab.</summary>
public Microsoft.Office.Interop.Word.Document Document { get; private set; }
public object Missing = System.Reflection.Missing.Value;
/// <summary>Öffnet eine Word-Datei zum bearbeiten.</summary>
public void OpenFile(string fileName)
{
WordApp = new Microsoft.Office.Interop.Word.Application();
object file = fileName;
Document = WordApp.Documents.Open(ref file, ref Missing, ref Missing, ref Missing, ref Missing,
ref Missing, ref Missing, ref Missing, ref Missing, ref Missing, ref Missing,
ref Missing, ref Missing, ref Missing, ref Missing, ref Missing);
WordApp.Visible = true;
WordApp.Activate();
//Weitere Standardänderungen
}
/// <summary>Schließt eine Word-Datei.</summary>
public void Close()
{
object savechanges = true;
Document.Close(ref savechanges, ref Missing, ref Missing);
WordApp.Quit(ref savechanges, ref Missing, ref Missing);
}
}MyWordEditor editor = new MyWordEditor(); editor.OpenFile("Meine Datei");//Datei öffnen editor.Document.Paragraphs.Add(ref editor.Missing);//Datei ändern editor.Close();//Datei schließen
So könnte ich mir das zumindest vorstellen.Koopakiller [kuːpakɪllɐ] (Tom Lambert)
Webseite |
Code Beispiele |
Facebook |
Twitter |
Snippets
C# ↔ VB.NET Konverter
Markiert bitte beantwortende Posts als Antwort und bewertet Beiträge. Danke.- Als Antwort markiert Roland DE Montag, 2. Dezember 2013 08:53
Alle Antworten
-
Hallo,
je nachdem mit was genau du das Word-Dokument bearbeitest, müsstest du eine Instanz des Dopkuments haben. Über InterOp könnte das beispielsweise die Instanz der ApplicationClass-Klasse weiter reichen.Eventuell kannst du es auch so bauen, das du die jeweilige Instanz einfach von einer Methode zurück gibst oder als Eigenschaft der Klasse anlegst.
Koopakiller [kuːpakɪllɐ] (Tom Lambert)
Webseite |
Code Beispiele |
Facebook |
Twitter |
Snippets
C# ↔ VB.NET Konverter
Markiert bitte beantwortende Posts als Antwort und bewertet Beiträge. Danke. -
Hallo Tom,
Sorry das hab ich nicht ganz verstanden.
ich mache in der Class das Dokument so auf und auch wieder zu. Das zu möchte ich nicht mehr machen sondern wie beschrieben in der Form weiterbearbeiten
using System.Runtime.InteropServices; using Word = Microsoft.Office.Interop.Word;
object missing = System.Reflection.Missing.Value; object file = "C:\\temp\\TestDokument.docx"; Microsoft.Office.Interop.Word.Application WordApp = new Microsoft.Office.Interop.Word.Application(); Microsoft.Office.Interop.Word.Document aDoc = WordApp.Documents.Open(ref file, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing); WordApp.Visible = true; WordApp.Activate(); . . ... object savechanges = true; aDoc.Close(ref savechanges, ref missing, ref missing); WordApp.Quit(ref savechanges, ref missing, ref missing);
wie kann ich jetzt das aDoc an meine Form übergeben und wie muss ich dort den word Aufruf machen um es weiter bearbeiten zu können.
Gruß Roland
-
Du instanzierst hier die Application- und die Document-Instanz. Wenn du ohne Speichern diese Daten weiter bearbeiten willst, dann musst du diese an deine Form weiter geben bevor du sie schließt.
Nachfolgend nochmal eine Beispielklasse, wie du es machen könntest:
class MyWordEditor
Der Aufruf könnte dann so aussehen:
{
/// <summary>Ruft ddie Word-Instanz ab.</summary>
public Microsoft.Office.Interop.Word.Application WordApp { get; private set; }
/// <summary>Ruft das Worddokument ab.</summary>
public Microsoft.Office.Interop.Word.Document Document { get; private set; }
public object Missing = System.Reflection.Missing.Value;
/// <summary>Öffnet eine Word-Datei zum bearbeiten.</summary>
public void OpenFile(string fileName)
{
WordApp = new Microsoft.Office.Interop.Word.Application();
object file = fileName;
Document = WordApp.Documents.Open(ref file, ref Missing, ref Missing, ref Missing, ref Missing,
ref Missing, ref Missing, ref Missing, ref Missing, ref Missing, ref Missing,
ref Missing, ref Missing, ref Missing, ref Missing, ref Missing);
WordApp.Visible = true;
WordApp.Activate();
//Weitere Standardänderungen
}
/// <summary>Schließt eine Word-Datei.</summary>
public void Close()
{
object savechanges = true;
Document.Close(ref savechanges, ref Missing, ref Missing);
WordApp.Quit(ref savechanges, ref Missing, ref Missing);
}
}MyWordEditor editor = new MyWordEditor(); editor.OpenFile("Meine Datei");//Datei öffnen editor.Document.Paragraphs.Add(ref editor.Missing);//Datei ändern editor.Close();//Datei schließen
So könnte ich mir das zumindest vorstellen.Koopakiller [kuːpakɪllɐ] (Tom Lambert)
Webseite |
Code Beispiele |
Facebook |
Twitter |
Snippets
C# ↔ VB.NET Konverter
Markiert bitte beantwortende Posts als Antwort und bewertet Beiträge. Danke.- Als Antwort markiert Roland DE Montag, 2. Dezember 2013 08:53