Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Spaltenbreite in Word-Tabelle einstellen (https://www.delphipraxis.net/189188-spaltenbreite-word-tabelle-einstellen.html)

Sidi61 13. Mai 2016 22:30

Spaltenbreite in Word-Tabelle einstellen
 
Hallo zusammen,

es ist zum verzweifeln, ich versuche schon mehrere Stunden die Spaltenbreiten einer in Word eingefügten Tabelle zu ändern. Ich habe einige Lösungsansätze gefunden, erhalte bei der Ausführung jedoch immer eine Fehlermeldung.

Ein Beispiel dass ich auch hier im Forum gefunden habe ist wie folgt:

WordDoc.Tables.Item(1).Columns.Item(1).SetWidth(20 ,0);

Hier erhalte ich die Fehlermeldung: Die Methode Item wird vom Automatisierungsobjekt nicht unterstützt!

WordDoc ist vom Typ OleVariant und hat folgende Zuweisung:

WordApp := CreateOleObject('Word.Application');
WordDoc := WordApp.ActiveDocument;

Hat jemand eine Idee wo der Fehler liegt? Ich komme da nicht weiter :wall:

OK - ist schon spät - der Fehler kommt von einer anderen Stelle im Code - mal sehen ob dann die Spaltenbreiten funktionieren - Zeit fürs Bett ;-)

Gruß Sidi61

Sidi61 14. Mai 2016 17:24

AW: Spaltenbreite in Word-Tabelle einstellen
 
Hallo zusammen,

der Fehler lag tatsächlich in einem anderen Abschnitt des Codes, ist aber auch ein wenig knifflig da die IDE hier wenig Unterstützung bietet.

Also ich kann jetzt eine Tabelle einfügen und auch die Spaltenbreiten einstellen wobei ich hier mit Prozentangaben arbeite da ich die Funktion MillimetersToPoint nicht verwenden konnte - kennt er nicht - ist vielleicht besser so da ich damit gleichzeitig eine Scalierung geschaffen habe.

Delphi-Quellcode:
b := Round(BSeite / 100 * b); //prozentuale Breitenangabe in Punkte umrechnen
WordDoc.Tables.Item(1).Columns.Item(I).SetWidth(b,0);
Nun habe ich jedoch ein anderes Problem - es gibt ja die Möglichkeit an eine vorhandene Tabelle eine Tabellenzeile anzuhängen. Ich mache das wie folgt:

Delphi-Quellcode:
WordDoc.Tables.Item(1).rows.Add(emptyparam);


Seltsamer Weise hängt er beim ersten Aufruf 2 Tabellenzeilen an und bei jedem Weiteren nur eine :roll:

Hat jemand eine Idee woran das liegen mag??

Gruß
Sidi61

Luckie 14. Mai 2016 19:32

AW: Spaltenbreite in Word-Tabelle einstellen
 
Mach bitte für ein neues Problem auch einen neuen Thread auf. Das hat ja nichts mehr mit der Breite von Tabellenspalten zu tun.

Codix32 16. Mai 2016 11:09

AW: Spaltenbreite in Word-Tabelle einstellen
 
Zitat:

Zitat von Luckie (Beitrag 1338172)
Mach bitte für ein neues Problem auch einen neuen Thread auf. Das hat ja nichts mehr mit der Breite von Tabellenspalten zu tun.

Hallo Luckie,

erst mal schöne Pfingsten. :-D

Gibt es denn nirgends ein Tutorial, wo man ein bischen Word VBA und oder Word VB mit Delphi erlernen kann?
Was ich so im Netz bisher gefunden habe ist zwar schon brauchbar, aber sehr zeitaufwendig. Ich weiß, ich mag es mal wieder bequem, habe aber wirklich nur noch wenig Zeit für meine Hobbys.

Leider gibt es nirgends ein so gutes Forum wie das Hiesige für VB und Delphi.

Jumpy 17. Mai 2016 08:52

AW: Spaltenbreite in Word-Tabelle einstellen
 
Zitat:

Zitat von Sidi61 (Beitrag 1338170)
Nun habe ich jedoch ein anderes Problem - es gibt ja die Möglichkeit an eine vorhandene Tabelle eine Tabellenzeile anzuhängen. Ich mache das wie folgt:

Delphi-Quellcode:
WordDoc.Tables.Item(1).rows.Add(emptyparam);

Seltsamer Weise hängt er beim ersten Aufruf 2 Tabellenzeilen an und bei jedem Weiteren nur eine :roll:

Ist die Tabelle den vorher leer (ohne Zeile)? Hast du es mal in VBA versucht, wie es dann aussieht?

p80286 17. Mai 2016 10:54

AW: Spaltenbreite in Word-Tabelle einstellen
 
Zitat:

Zitat von Jumpy (Beitrag 1338246)
Ist die Tabelle den vorher leer (ohne Zeile)? Hast du es mal in VBA versucht, wie es dann aussieht?

hat er nicht weil der Recorder sich mal wieder von der besten Zickenseite zeigt.
Ich hab da mal was gebastelt:
Code:
ActiveDocument.Tables.Add Range:=Selection.Range, NumRows:=2, NumColumns:= _
        3, DefaultTableBehavior:=wdWord9TableBehavior, AutoFitBehavior:= _
        wdAutoFitFixed
    With Selection.Tables(1)
        If .Style <> "Tabellenraster" Then
            .Style = "Tabellenraster"
        End If
        .ApplyStyleHeadingRows = True
        .ApplyStyleLastRow = False
        .ApplyStyleFirstColumn = True
        .ApplyStyleLastColumn = False
        .ApplyStyleRowBands = True
        .ApplyStyleColumnBands = False
        .Rows.Add
        .Rows.Add
    End With
Bis auf die beiden .Rows.Add kommt das aus dem Macrorecorder. Da Add als Parameter "BeforeRow" erwartet, kann es durchaus sein, daß "emptyParam" und ein nicht vorhandener Parameter unterschiedliche Ergebnisse erzeugt.
Zitat:

Function Add([BeforeRow]) As Row
Element von Word.Rows
Gruß
K-H

P.S. VBA 7.1 / Word365


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