Thema: Delphi Stringgrid in Word

Einzelnen Beitrag anzeigen

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