Clever-Excel-Forum

Normale Version: Code auf Formatieren einer Tabelle in Word reagiert "komisch"
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Ha((o

Bin am verzweifeln. Formatiere von Excel aus in Word eine Tabelle.
Bin in Foren gewesen und Hilfe und meine Paramter müssten passen, aber das Verhalten ist sehr komisch. D.h. auf einige Parameter reagiert es richtig auf andere nicht. Ich vermute einen Fehler im System. Folgende Diskrepanzen:
1. Rechtsbündigkeit in Spalte 8 bringt einen Fehler.
Code:
.Columns(8).ParagraphFormat.Alignment = wdAlignParagraphRight

2. oberer Rahmen erste Zeile läßt sich nicht mit "xlEdgeTop" ansprechen. Aber mit einer 1. Im Code unten nun mit einer 1.
Code:
With wdtable.Rows(1).Borders(1) 'oberste Umrandung der ersten Zeile
       .LineStyle = xlContinuous
       .Weight = xlThick
   End With

3. Und das verrücksteste für mich ist der gleiche Code wie oben. "LineStyle" wird akzeptiert, aber "Weight" bringt einen Fehler. Wieso?

Und nun der gesamte Code:
Code:
Sub Tabelle_Fuellen(ByRef wddoc As Word.Document)

Dim z1 As Integer
Dim z2 As Integer
Dim rabatt As Boolean
Dim wdtable As Object

   Call Rechnungsbereich_Festlegen(z1, z2, rabatt)
   
   If rabatt = True Then
       Set wdtable = wddoc.Tables.Add(Range:=wddoc.Bookmarks("Tabelle").Range, NumRows:=z2 - z1 + 1, NumColumns:=8)
       With wdtable
           .Columns(1).PreferredWidth = CentimetersToPoints(0.9) 'Position
           .Columns(2).PreferredWidth = CentimetersToPoints(2)   'Art.Nr.
           .Columns(3).PreferredWidth = CentimetersToPoints(6.5) 'Bezeichnung
           .Columns(4).PreferredWidth = CentimetersToPoints(0.8) 'Menge
           .Columns(5).PreferredWidth = CentimetersToPoints(1.2) 'Einheit
           .Columns(6).PreferredWidth = CentimetersToPoints(2)   'Originalpreis
           .Columns(7).PreferredWidth = CentimetersToPoints(1.6) 'Rabatt
           .Columns(8).PreferredWidth = CentimetersToPoints(2)   'Gesamtpreis
       
'            .Columns(8).ParagraphFormat.Alignment = wdAlignParagraphRight
       End With
   Else
       'Set wdtable = wddoc.Tables.Add(Range:=wddoc.Bookmarks("Tabelle").Range, NumRows:=z2 - z1 + 1, NumColumns:=7, defaulttablebehavior:=wdWord8TableBehavior, AutoFitBehavior:=WdAutoFitBehavior)
   End If
   
   With wdtable.Rows(1).Borders(1) 'oberste Umrandung der ersten Zeile
       .LineStyle = xlContinuous
       .Weight = xlThick
   End With
   With wdtable.Rows(1).Borders(3) 'untere Umrandung der ersten Zeile
       .LineStyle = xlContinuous
       .Weight = 2
   End With
End Sub

Weiß jemand wo das Problem ist? Wie gesagt, ich vermute ein Systemproblem.
Danke Euch
Grüße
(24.12.2018, 19:48)Nyn007 schrieb: [ -> ]Folgende Diskrepanzen:
1. Rechtsbündigkeit in Spalte 8 bringt einen Fehler.
Code:
.Columns(8).ParagraphFormat.Alignment = wdAlignParagraphRight

2. oberer Rahmen erste Zeile läßt sich nicht mit "xlEdgeTop" ansprechen. Aber mit einer 1. Im Code unten nun mit einer 1.
Code:
With wdtable.Rows(1).Borders(1) 'oberste Umrandung der ersten Zeile
       .LineStyle = xlContinuous
       .Weight = xlThick
   End With

3. Und das verrücksteste für mich ist der gleiche Code wie oben. "LineStyle" wird akzeptiert, aber "Weight" bringt einen Fehler. Wieso?

Hab es selber versucht zu lösen kriege es aber auch nicht hin
LG
Hallo,

ist das hier nur ein Schreibfehler im Posting für "Width" oder meinst Du das im ernst?
Zitat:3. Und das verrücksteste für mich ist der gleiche Code wie oben. "LineStyle" wird akzeptiert, aber "Weight" bringt einen Fehler. Wieso?
steht im Code auch falsch. Also passe das mal an auf width.
könnte sein, dass das andere Gründe hat, als nur Schreibfehler.
Hast du den Verweis auf Word gesetzt?
Wenn nein, bekommst du einen Fehler wenn du
Code:
wdAlignParagraphRight
aufrufst. Das ist Excel nicht bekannt, nimm statt dessen den Zahlenwert. (Bemühe Tante Google, ich weiß das auch nicht anders, oder gib im Direktbereich von ?wdalignparagraphright ein und du bekommst den Zahlenwert)

das gleiche ist hier:

Code:
With wdtable.Rows(1).Borders(1) 'oberste Umrandung der ersten Zeile
      .LineStyle = xlContinuous
      .Weight = xlThick
  End With
Du rufst Excelkonstanten auf, die können zufällig auch mal passen, aber im Regelfall eher nicht.
Hier gilt das gleiche: Zahlewerte einfügen, wenn du Word-Sachen in Excel aufrufst.