Excel über COM ansteuern

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • 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
    Code:
    $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
    Code:
    $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
    Code:
    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
    Zuletzt geändert von Scar; 28.03.2004, 13:00.
    :: BackTix - Textlink Marktplatz
    :: Online PHP Formular Manager & Generator
    :: PHP Gästebuch Script | PHP HTAccess Passwortschutz Generator

  • #2
    Hallo!
    Ich kann Dir leider kein PHP aus dem Ärmel schütteln.
    Ich komme aus der Compiler-Welt und habe (noch) wenig mit PHP zu tun,
    habe aber schon einiges mit COM und Excel über Compiler gemacht.
    Da hier niemand antwortet, versuch ich's...

    Was auffällt: Du wirbelst die Objekte durcheinander.

    Die funktionierende Variante:
    1. $border ist Range-Objekt
    2.. auf die Eigenschaften und Prozeduren des Range-Objekts wird zugegriffen

    Die nicht funktionierende Variante:
    1. $border ist Range-Objekt
    der Ausdruck &$border2 -> Borders("xlEdgeBottom"); setzt voraus, dass sich im Range-Objekt ein Button befindet !?!
    Die Zuweisung $border2 = &$border2 -> Borders("xlEdgeBottom"); weist einem Objekt vom Typ
    Range einen Button zu. Das geht in keinem Compiler, der Fehlermeldung nach im PHP auch nicht.
    Eine neue Variable ist fällig.

    Noch ein Tipp:
    Grundsätzlich ist man gut beraten, wenn man sich Schritt für Schritt durch die Objekthirarchie der COM-Schnitstelle hangelt,damit man Zugriff auf alle Hirarchieebenen hat.
    Also eine Variable pro
    Workbook
    Worksheet
    Range...

    Wenn Du dann ein anderes Sheet benutzen willst, kannst du eine neue Variable dem Objekt Workbook->Worksheet zuweisen.
    Oder wenn sich der Button eben im Objekt Workbook und nicht im Range befindet.

    Hoffe Du kannst was damit anfangen und schreibst ein paar Zeilen, wenn Du das zum laufen bringst.
    Bin echt überrascht, das so was im PHP geht...


    Nachtrag:
    Das Range-Objekt (das oben irreführend in der Variable $border ist) hat die Methode BorderAround zum Rahmen erstellen. Die oben verwendete Eigenschaft Border ist wahrscheinlich nur-lesen und kann somit auch gar nicht geändert werden.

    Quelle (VBA-wirr ):
    http://msdn.microsoft.com/library/de...rderAround.asp
    Zuletzt geändert von fuser; 05.05.2004, 13:41.

    Kommentar

    Lädt...
    X