Chris: Excel über COM ansteuern

hallo,

ich will via COM auf excel zugreifen und verschiedene "Cell" eigenschaften ändern.
wenn ich den border versuche zu ändern kommt es aber ständig zu fehlern.

diese variante klappt

$border = &$excel -> Workbooks[1] -> Worksheets["Test"] -> Range("B1");
$border -> activate;
$border -> Borders -> ColorIndex = 1;
$border -> Borders -> Weight = 3;
$border -> Borders -> LineStyle = 1;

wenn ich allerdings etwas detailiertere border erstellen will

$border2 = &$excel -> Workbooks[1] -> Worksheets["Test"] -> Range("B3");
$border2 = &$border2 -> Borders("xlEdgeBottom"); // zeile 71

bekomm ich bereits hier nen fehler und weiss nicht wie ich den syntax anpassen muss um ihn zu vermeiden bzw überhaupt zu erreicehn was ich will

fehler lautet

Warning: (null)(): Invoke() failed: Typkonflikt. Argument: 2 in D:\inetpub\htdocs\CVS\xlstest\test4.php on line 71

wäre toll, wenn mir jemand nen tip bzw gleich nen syntax bsp für das bordersetzten geben könnte.

thx, Chris

  1. Hallo,

    wenn ich allerdings etwas detailiertere border erstellen will

    $border2 = &$excel -> Workbooks[1] -> Worksheets["Test"] -> Range("B3");
    $border2 = &$border2 -> Borders("xlEdgeBottom"); // zeile 71

    ^Das ist kein String, sondern eine Konstante, welche im Excel-Umfeld definiert ist. Sie hat dort den Integer-Wert 9.

    fehler lautet

    Warning: (null)(): Invoke() failed: Typkonflikt. Argument: 2 in D:\inetpub\htdocs\CVS\xlstest\test4.php on line 71

    Klar. Du übergibtst als 2. Argument einen String. Erwartet wird eine Ganzzahl.

    Lösung:
    Definiere die Konstanten im PHP-Umfeld oder arbeite mit den Zahlenwerten direkt.

    Du bekommst die Werte durch Ausgaben im VBA in Excel

    Sub test()
      Range("B1").Borders(xlEdgeBottom).LineStyle = xlDashDot
      MsgBox (xlEdgeBottom)
      MsgBox (xlDashDot)
      Range("B2").Borders(9).LineStyle = 4
    End Sub

    viele Grüße

    Axel

    1. tausend dank für deine hilfe, hat mir sehr geholfen!

      danke und gruss Chris