AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Stringgrid in Word

Ein Thema von netscanner · begonnen am 25. Feb 2007 · letzter Beitrag vom 9. Mär 2007
Antwort Antwort
Benutzerbild von netscanner
netscanner

Registriert seit: 2. Dez 2005
Ort: Dieburg
280 Beiträge
 
Delphi 6 Enterprise
 
#1

Stringgrid in Word

  Alt 25. Feb 2007, 12:06
Hallo,
ich habe folgende Codes bei gefunden...

Der hier "kopiert" ein Stringgrid in ein Worddokument.
Delphi-Quellcode:
uses
  ComObj;

procedure TForm1.Button1Click(Sender: TObject);
var
  WordApp, NewDoc, WordTable: OLEVariant;
  iRows, iCols, iGridRows, jGridCols: Integer;
begin
  try
    // Create a Word Instance
    // Word Instanz erzeugen
    WordApp := CreateOleObject('Word.Application');
  except
    // Error...
    // Fehler....
    Exit;
  end;

  // Show Word
  // Word anzeigen
  WordApp.Visible := True;

  // Add a new Doc
  // Neues Dok einfügen
  NewDoc := WordApp.Documents.Add;

  // Get number of columns, rows
  // Spalten, Reihen ermitteln
  iCols := StringGrid1.ColCount;
  iRows := StringGrid1.RowCount;

  // Add a Table
  // Tabelle einfügen
  WordTable := NewDoc.Tables.Add(WordApp.Selection.Range, iCols, iRows);

  // Fill up the word table with the Stringgrid contents
  // Tabelle ausfüllen mit Stringgrid Daten
  for iGridRows := 1 to iRows do
    for jGridCols := 1 to iCols do
      WordTable.Cell(iGridRows, jGridCols).Range.Text :=
        StringGrid1.Cells[jGridCols - 1, iGridRows - 1];

  // Here you might want to Save the Doc, quit Word...
  // Hier evtl Word Doc speichern, beenden...

  // ...
  
  // Cleanup...
  WordApp := Unassigned;
  NewDoc := Unassigned;
  WordTable := Unassigned;
end;

und spricht eine Textmarke an:
Delphi-Quellcode:
uses
  ComObj;

procedure TForm1.Button1Click(Sender: TObject);
const
  // Word Document to open
  // Dein Word Dokument
  YourWordDocument = 'c:\test\worddoc.doc';
var
  BookmarkName, Doc, R: OleVariant;
begin
  // Start a Word instance
  // Word Instanz Starten
  try
    WordApp := CreateOleObject('Word.Application');
  except
    ShowMessage('Could not start MS Word!');
  end;
  // Open your Word document
  // Dok. öffnen
  WordApp.Documents.Open(YourWordDocument);
  Doc := WordApp.ActiveDocument;

  // name of your bookmark
  // Name der Textmarke
  BookmarkName := 'MyBookMark';

  // Check if bookmark exists
  // Überprüfen, ob Textmarke vorhanden
  if Doc.Bookmarks.Exists(BookmarkName) then
  begin
    R := Doc.Bookmarks.Item(BookmarkName).Range;
    // Add text at our bookmark
    // Text bei Textmarke einfügen
    R.InsertAfter('Text bei Textmarke');
    // You make a text formatting like changing its color
    // Man kann nun auch den Text formatieren. z.B die Farbe wechseln.
    R.Font.Color := clRed;
  end;

  // Save your document and quit Word
  // Dokument Speichern und Word beenden.
  if not VarIsEmpty(WordApp) then
  begin
    WordApp.DisplayAlerts := 0;
    WordApp.Documents.Item(1).Save;
    WordApp.Quit;
    BookmarkName := Unassigned;
    R := Unassigned;
    WordApp := Unassigned;
  end;
end;


Nun zu meiner Frage: Wie bekomme ich es hin, dass das Stringgrid (Code1) in an die steller einer Textmarke(Code2) kopiert wird und nicht an den Dokumentenanfang?
Martin
  Mit Zitat antworten Zitat
Keldorn

Registriert seit: 6. Mär 2003
Ort: Meißen
876 Beiträge
 
Delphi 10.1 Berlin Professional
 
#2

Re: Stringgrid in Word

  Alt 25. Feb 2007, 12:49
Hallo

was hast du denn bisher probiert? Die 2 Beispielcodes für dein Problem abzuändern und die relavanten codebausteine aus dem ersten codebsp ins 2. einzufügen sollte doch nicht die Schwierigkeit sein.

Delphi-Quellcode:
  // Tabelle einfügen
  WordTable := NewDoc.Tables.Add(WordApp.Selection.Range, iCols, iRows);
wordselection.range--> damit fügst du die Tabelle immer an der aktuellen Stelle ein. Also wenn du zuerst zu Bookmark gesprungen bist oder diese Range-angibst, wird die Tabelle auch dort eingefügt. Wo liegt dein Problem??

Mfg Frank

Lükes Grundlage der Programmierung:
Es wird nicht funktionieren
(Murphy)
  Mit Zitat antworten Zitat
Benutzerbild von netscanner
netscanner

Registriert seit: 2. Dez 2005
Ort: Dieburg
280 Beiträge
 
Delphi 6 Enterprise
 
#3

Re: Stringgrid in Word

  Alt 25. Feb 2007, 13:06
okey danke...das mit range hatte ich nicht kappiert. jetzt geht's!

dankeschön
Martin
  Mit Zitat antworten Zitat
Christoph Frank

Registriert seit: 6. Mär 2007
26 Beiträge
 
#4

Re: Stringgrid in Word

  Alt 8. Mär 2007, 17:59
Ich habe Deinen Beitrag mit Interesse gelesen, aber genau da setzt meine Frage an:


WordTable.Cell(iGridRows, jGridCols).Range.Text :=
StringGrid1.Cells[jGridCols - 1, iGridRows - 1];

Woher kennst Du die Befehle und deren Parameter, die Du in Word verwenden darsft? Ich möchte auch eine Tabelle aus meinem Programm in Word erstellen. Diese Tabelle soll anschließend in einen Serienbrief "gemergt" werden, d.h. also die Einträge aus der Tabelle an die entsprechenden Platzhalter des Dokuments bringen.
Ich habe schon versucht aus Makros mir Befehle zusammenzubauen.

Das einzige was mir gelungen ist, ist MSWord.CreateTable; das entspricht dem Menüausgang in Word/Tabelle Zeichnen/. Bei allen anderen Versuchen erhalte ich immer die Meldung:

'Die Methode 'xxxxxxxx' wird vom Automatisierungsobjekt nicht unterstützt' Exception EOleError

Hast Du vielleicht 'nen Tipp für mich?

Gruß Christoph
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#5

Re: Stringgrid in Word

  Alt 8. Mär 2007, 18:46
Herzlich willkommen in der Delphi-PRAXiS, Christoph.

Das Programmiermodell für die Word-Automation findest du in der Word-Online-Hilfe, welche du - wenn du kein MS Office installiert hast - bei Microsoft herunterladen kannst: Word VBA Language Reference

Freundliche Grüße
  Mit Zitat antworten Zitat
matashen

Registriert seit: 29. Jan 2007
Ort: daheim
460 Beiträge
 
Delphi XE2 Enterprise
 
#6

Re: Stringgrid in Word

  Alt 8. Mär 2007, 19:05
Hallo zusammen,

Du kannst auch unter Excel die Befehle der VBA sehr schön ausprobieren indem du z.B. auf Makro aufzeichnen gehst und dann irgendwas machst. Anschließend öffnest du Visual Basic und schon kannst du die Befehle ablesen. mußt nur noch so kleinigkeiten umbauen.

Gruß Matthias
Matthias
  Mit Zitat antworten Zitat
Christoph Frank

Registriert seit: 6. Mär 2007
26 Beiträge
 
#7

Re: Stringgrid in Word

  Alt 9. Mär 2007, 09:35
Wow,

kleine Ursache, große Wirkung, herzlichen Dank.

Erstmals eine Anfrage gestellt und sofort Antworten erhalten, super!!! Wenn ich weitere Probleme habe, werde ich mich wieder an Euch wenden. Anbei noch eine Frage, kann ich immer nur innerhalb eines Beitrags antworten oder gibt es hier auch ein chat?
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#8

Re: Stringgrid in Word

  Alt 9. Mär 2007, 12:58
Den Chat hast du bestimmt schon entdeckt, er ist aber mehr dem social engineering gewidmet. "Fachbeiträge" gehören ins Forum - schon alleine wegen deren Lebensdauer.

Freundliche Grüße
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 00:04 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz