Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   WORD: Tabellenspaltenbreite automatisch setzen... (https://www.delphipraxis.net/70111-word-tabellenspaltenbreite-automatisch-setzen.html)

alzaimar 25. Mai 2006 10:32


WORD: Tabellenspaltenbreite automatisch setzen...
 
Hi

bitte nicht peitschen :oops: . Ja, ich muss eine DB-Doku in Word schreiben.

Es handelt sich nur um 100 Tabellen, die ich einzeln formatieren muss. Ich will aber auch, das die Spalten der Tabellen jeweils gleich breit sind. Die 1.Spalte aller Tabellen soll z.B. immer 2 cm breit sein, die 2.Spalte immer 2,5 cm, und die 3.Spalte immer 8 cm.

Wie mach ich das? Ob ich das mit Delphi per OLE mache, oder als Word-VBA-Script, ist mir egal, aber wie kann ich mir die sch**** Arbeit ersparen?

Und sag mir keiner: Nimm doch LaTeX (denn damit wäre das ja kein Problem).

Danke und schönen Vatertag :cheers:

toms 25. Mai 2006 10:39

Re: WORD: Tabellenspaltenbreite automatisch setzen...
 
Hallo,

ungetestet etwa in dieser Art:

Delphi-Quellcode:
uses
  ComObj;

procedure TForm1.Button1Click(Sender: TObject);
const
  FILE_WORD_DOC = 'C:\TestDoc.doc';
  wdDoNotSaveChanges = 0;
var
  MSWord, Table, SaveChanges: OLEVariant;
begin
  try
    MSWord := CreateOleObject('Word.Application');
  except
    // Error....
    Exit;
  end;
  // Word anzeigen
  try
    MSWord.Visible := True;
    MSWord.Documents.Open(FILE_WORD_DOC);
    // 1 Tabelle auswählen...
    Table := MSWord.ActiveDocument.Tables.Item(1);
    try
      // Für Spalte 1 Breite setzen
      Table.Columns.Item(1).SetWidth(20, 0);
      // der 2. Param. kann laut VBA Help folgende Konstanten
      // einnehmen:
      {
        wdAdjustFirstColumn = 2
        wdAdjustNone = 0
        wdAdjustProportional = 1
        wdAdjustSameWidth = 3
      }
    except
    end;
    //..
  finally
   // MSWord.ActiveDocument.Close(wdDoNotSaveChanges);
   // MSWord.Quit;
     MSWord := nil;
     Table := nil;
  end;
end;

alzaimar 25. Mai 2006 11:50

Re: WORD: Tabellenspaltenbreite automatisch setzen...
 
Super! Danke!

Die Einheit bei 'SetWidth' ist zwar etwas komisch (mm*2,7), aber was solls. Jetzt kann ich den Rest des Tages mit meinen Kindern verbringen!

:dp: und toms auch!

Keldorn 25. Mai 2006 12:12

Re: WORD: Tabellenspaltenbreite automatisch setzen...
 
Hallo, Word will da immer "Punkt"-Angaben. Zum Umrechnen kannst du z.B. (MSword).CentimetersToPoints nutzen, liest sich besser und du kannst richtig cm angeben.

Mfg Frank

alzaimar 25. Mai 2006 16:33

Re: WORD: Tabellenspaltenbreite automatisch setzen...
 
Ah, dann ist der Faktor 2.83, weil 72pt pro inch und 25.4 mm pro inch.

Alles klar.


Alle Zeitangaben in WEZ +1. Es ist jetzt 00:46 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