![]() |
Word Dokument fernsteuern, Tutorial?
Ich habe ein Programm, das Besprechungs-Protokolle verwalten soll. Zum Ausdrucken eines Protokolls wollte ich die Daten an ein Word-Dokument übergeben, damit der Benutzer selbst noch kleinere Änderungen vornehmen kann, bevor gedruckt wird. Aber wie kann ich die Daten in ein Word-Dok übertragen? Ich habe sowas noch nie gemacht. Bisher habe ich erfolgreich die Befehle WordDocument1.Connect usw. angewandt, aber wie fülle ich das Dok mit Inhalt? Gibts sowas wie WordDocument1.AddTable und .AddText(kursiv,größe20) oder sowas ähnliches? Insgesamt brauche ich jede Menge Tabellen, eine davon beinhaltet eine Grafik.
|
Re: Word Dokument fernsteuern, Tutorial?
Vielleicht hilft dier der
![]() |
Re: Word Dokument fernsteuern, Tutorial?
Den Link hatte ich eben schon gefunden, aber da steht nicht viel drin. Ich bräuchte etwas umfangreicherers, z.B. eine komplette Dokumentation über dieses WordApplication.
|
Re: Word Dokument fernsteuern, Tutorial?
Die Hilfe zu TWordApplicaton etc ist in Word enthalten. Es ist die VBA-Hilfe zu Word.
Oeffne "Extras : Makros : Visual Basic Editor" dort "Ansicht : Objekt-Katalog" oeffnen bzw F2 druecken. Das ist der COM-Objektbaum von Word. F1 liefert spezifische Hilfe. |
Re: Word Dokument fernsteuern, Tutorial?
OK, ich schau da mal rein. Ich habe jetzte "Hello World!" im Dokument stehen :D Aber nun möchte ich eine Tabelle erschaffen. Da läuft mir der Datentyp "Range" über den Weg, mit dem ich nichts anfangen kann. Hat jemand ein Beispiel, wie sowas aussieht? -> WordApplication1.Selection.Tables.Add(*range-datentyp*,2,2);
|
Re: Word Dokument fernsteuern, Tutorial?
Hi,
Habe hier einen Code, um ein TStringGrid in ein Worddokument zu exportieren. (Hab's ohne die Server Komponente gemacht) Vielleicht hilf's dir ja ein wenig weiter.
Delphi-Quellcode:
uses
ComObj; procedure TForm1.Button1Click(Sender: TObject); var WordApp, NewDoc, tabelle: OLEVariant; iRows, iCols, iGridRows, jGridCols: Integer; begin try // Word Instanz erzeugen WordApp := CreateOleObject('Word.Application'); except // Fehler.... Exit; end; // Word anzeigen WordApp.Visible := True; // Neues Dok einfügen NewDoc := WordApp.Documents.Add; // Spalten, Reihen ermitteln iCols := StringGrid1.ColCount; iRows := StringGrid1.RowCount; // Tabelle einfügen tabelle := NewDoc.Tables.Add(WordApp.Selection.Range, iCols, iRows); // Tabelle ausfüllen mit Stringgrid Daten for iGridRows := 1 to iRows do for jGridCols := 1 to iCols do tabelle.Cell(iGridRows, jGridCols).Range.Text := StringGrid1.Cells[jGridCols - 1, iGridRows - 1]; // Hier evtl Word beenden... // Cleanup... WordApp := Unassigned; NewDoc := Unassigned; tabelle := Unassigned; end; |
Re: Word Dokument fernsteuern, Tutorial?
Danke, das hilft mir sehr weiter :)
Trotzdem noch eine kleine Frage, vielleicht weiss es ja eben jemand: Wie kann ich die Tabellen-Grenzen grau machen, also so, dass sie nicht gedruckt werden? |
Re: Word Dokument fernsteuern, Tutorial?
Zitat:
Kannst aber mal das probieren:
Delphi-Quellcode:
const
{ wdLineStyleSingle = 1;} wdLineStyleNone = 0; begin //... tabelle := NewDoc.Tables.Add(WordApp.Selection.Range, iCols, iRows); //... tabelle.Borders.OutsideLineStyle := wdLineStyleNone ; tabelle.Borders.InsideLineStyle := wdLineStyleNone ; //... |
Re: Word Dokument fernsteuern, Tutorial?
for i := 1 to 100000000 do
showmessage('Danke!'); :) |
Re: Word Dokument fernsteuern, Tutorial?
Der zweite Trick ist es ein Word-Makro aufzuzeichnen und sich dann die Source im Makro-Editor anzuschauen.
|
Re: Word Dokument fernsteuern, Tutorial?
Da bin ich malwieder!
Diesmal frage ich mich, wie ich eine Tabellenzelle auf "Blocksatz" stellen kann. Laut Makro müsste so ähnlich aussehen:
Delphi-Quellcode:
Aber das klappt so nicht. Falls es über WordApp.Selection geht, wie bekomme ich dann den Cursur in diese Zelle?
WordApp.Selection.ParagraphFormat.Alignment:='wdAlignParagraphJustify';
|
Re: Word Dokument fernsteuern, Tutorial?
Neue Frage, neuer Thread!
|
Re: Word Dokument fernsteuern, Tutorial?
Hallo Zusammen,
ich hoffe, mir kann jemand helfen: Ich habe wie beschrieben versucht, die Daten aus einem StringGrid in eine WordTabelle zu exportieren. Auf den ersten Blick scheint es auch zu funktionieren - Word wird gestartet, eine Tabelle wird erstellt und die Spaltenüberschriften eingetragen. Und dann bricht das Programm ab mit dem Hinweis "Das angeforderte Element ist nicht in der Sammlung enthalten." Zugegeben, ich bin nur ein kleiner HobbyBastler, aber vielleicht ist es für Euch ein Klacks und Ihr könnte mir weiterhelfen, obwohl dieser Thread schon so alt ist. Ich habe die Prozedure unten noch einmal angehängt...
Delphi-Quellcode:
Vielen Dank im Voraus.
uses ComObj;
... procedure TProjekt_verlauf.Button1Click(Sender: TObject); var WordApp,NewDoc,WordTable:OLEVariant; iRows,iCols,iGridRows,jGridCols:Integer; begin try // Word Instanz erzeugen WordApp:=CreateOleObject( 'Word.Application'); except // Fehler . . . . Exit; end; // Word anzeigen WordApp.Visible:=True; // Neues Dok einfügen NewDoc:=WordApp.Documents.Add; // Spalten , Reihen ermitteln iCols:=StringGrid.ColCount; iRows:=StringGrid.RowCount; // Tabelle einfügen WordTable:=NewDoc.Tables.Add( WordApp.Selection.Range,iCols,iRows); // Tabelle ausfüllen mit Stringgrid Daten for iGridRows:=1 to iRows do for jGridCols:=1 to iCols do WordTable.Cell( iGridRows,jGridCols).Range.Text:= StringGrid.Cells[jGridCols-1,iGridRows-1]; WordApp:=Unassigned; NewDoc:=Unassigned; WordTable:=Unassigned; end; |
Re: Word Dokument fernsteuern, Tutorial?
@JPSelter:
Die Frage hatte ich mir auch schonmal gestellt, die Lösung ist die Methode "ParagraphFormat" auf Range (und .Range auf .Cell) zu beziehen! Bei mir sieht das dann folgendermaßen aus: T1.Cell(i, j).Range.ParagraphFormat.Alignment := wdAlignParagraphRight; T1 ist meine Tabelle, mit for-Schleifen kann man jetzt alle notwendigen Zellen ansprechen. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:24 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz