Dadurch stelle ich mir jetzt die frage
???Wie kann ich die Wordtabelle ansprechen so wie du hier???
Ähem, sag mal: mit
OLE-Automation kennst Du Dich offenbar nicht im geringsten aus, obwohl Du so etwas programmieren willst ? Könnte Dein Vorhaben womöglich eine Hausaufgabe sein ?
Versuche die Lösung Deines Problems doch erst einmal selber anhand meiner folgenden Hinweise anstatt durch reines Kopieren (m)eines fertigen Codes. Letzteres würde Dir keine wirkliche Erfahrung im Umgang mit der
OLE-Automation bringen.
Erledige alles Folgende unmittelbar aus Deinem Delphi-Programm heraus:
(1) Lade das von Dir gewünschte Dokument nach Winword:
Hinweis:
Code:
WordApp.Documents.Open(DocFileName)
(2) Springe im nun geöffneten Dokument zur Tabelle Nr.# (# = die lfd. Nummer der Tabelle im Dokument)
und setze damit gleichzeitig die 'Selection' des OLEObjects auf diese Tabelle
Hinweis:
Code:
WordApp.Selection.GoTo(wdGoToTable, wdGoToFirst, #);
(3) Sortiere die Spalte 1 der Tabelle wie zuvor gezeigt (auf- oder absteigend)
Hinweis: Code der Sortierung wie gehabt
(4) Falls erforderlich: springe zu einer weiteren Tabelle Nr.# und selektiere damit diese Tabelle
Hinweis: siehe (2)
(5) Sortiere die Spalte 1 (oder eine andere Spalte) der Tabelle wie zuvor gezeigt (auf- oder absteigend)
(..) wiederhole (4) und (5) für evt. weitere Tabellen des Dokuments
abschließend: Springe entweder an den Anfang oder aber an das Ende des Dokuments, wodurch auch die vorherige Selektion aufgelöst wird.
Hinweis:
(a) an den Anfang:
Code:
WordApp.Selection.GoTo(EmptyParam);
(b) an das Ende:
Code:
WordApp.ActiveDocument.ActiveWindow.Selection.EndKey(wdStory, EmptyParam);
Zugabe: speichere das geänderte Dokument per SaveAs(filename)-Anweisung des OleObjects
Hinweis:
Code:
WordApp.ActiveDocument.SaveAs(DocFileName);
Wichtig:
Kapsele den gesamten Block der verschiedenen Anweisungen mittels
Code:
WordApp := CreateOLEObject('Word.Application');
Try
{.. hier alle Anweisungen an das OLEObject..}
finally
WordApp.Quit;
WordApp := UnAssigned;
end;
damit bei einer evt. im Verlauf der Anweisungen auftretenden
Exception das Winword auf jeden Fall nicht (unsichtbar) im Speicher hängen bleibt.