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