RE: Help with COM

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



First I would like to reply to this with an update on how I got it to work.  Learned some very interesting things.  Second, I have another question.

1)---------
I did not end up using a macro, but instead translated the statements to the following based on your help Neil:

(example)
$this->xlEdgeBottom = 9;
$this->xlContinuous = 1;

$range = $sheet->Range("A5:E5");
com_propput($range->Borders($this->xlEdgeBottom),LineStyle,$this->xlContinuous);

Notice that I defined the variables for xlEdgeBottom and xlContinuous.  The reason is that these are constants in excel and if you use the constant names, everything freaks out.  I actually had to lookup the constants by name and get their values in excel.  Running the values through the PHP COM functions did the trick.  If there is a shorter way to do this, please let me know.

The other thing is that the "Borders" property in excel does not appear to return an object.  Therefore, given the syntax limitations, I could not do the following:

$range->Borders($this->xlEdgeBottom)->LineStyle = $this->xlContinous;
or
$border = $range->Borders($this->xlEdgeBottom);
$border->LineStyle = $this->xlContinous;

I therefore had to use the com_propput function as stated above.

2)---------
Now, I have the following syntax in VB that I need to convert to PHP:

Range("A7:E20").Select
Selection.Sort Key1:=Range("A7"), Order1:=xlAscending, Header:=xlGuess, OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom

It looks you can specify multiple key paramaters as you can sort by more than one column.  I think you might be able to see my difficulty here... some of that syntax is pretty weird.

-Ethan Nelson,
Modulus, LLC


-----Original Message-----
Why not try to execute the macro,

$Excel->application->run("book.xls!macro");

but if this is not possible / desirable, the with statement: 

   With Selection.Borders(xlEdgeBottom)
        .LineStyle = xlContinuous
        .Weight = xlThin
        .ColorIndex = xlAutomatic
   End With

is only a shorthand way of specifying

   Selection.Borders(xlEdgeBottom).LineStyle = xlContinuous
   Selection.Borders(xlEdgeBottom).Weight = xlThin
   Selection.Borders(xlEdgeBottom).ColorIndex = xlAutomatic

Hope this helps,
Regards,
Neil Morgan

-----Original Message-----
From: Ethan Nelson [mailto:enelson@modulusgroup.com]
Sent: 28 October 2003 22:13
To: php-windows@lists.php.net
Subject:  Help with COM


Hello,

I am trying to write some excel functions in PHP 4.3.3 using the COM
interface.  The objective it to create a "BottomEdge" border with regular
line styles etc...  The actual visual basic code that the macro recorder in
excel writes goes as follows:

Range("A13:E13").Select
   Selection.Borders(xlDiagonalDown).LineStyle = xlNone
   With Selection.Borders(xlEdgeBottom)
        .LineStyle = xlContinuous
        .Weight = xlThin
        .ColorIndex = xlAutomatic
    End With

Now my code is in object and looks something like:

$this->sheet->column->EntireColumn->Font->Bold=true;

That would be an example of how I would make an entire column bold (I
think).  Anyway... how the heck do I do a "with" statement using this PHP
syntax?  I tried separating each line into objects but tells me it can't
find function "Border":

$range = $this->sheet->Range("A13:E13");
$selection = $range->Select;
$diagdown = $selection->Borders(xlDiagonalDown);
$diagdown->LineStyle = xlNone;

...

with?

Thanks for the help... I'm pretty new at trying to translate VB syntax into
a compatible PHP code.

-Ethan Nelson,

Modulus, LLC

-- 
PHP Windows Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php



[Index of Archives]     [PHP Home]     [PHP Users]     [PHP Database Programming]     [PHP Install]     [Kernel Newbies]     [Yosemite Forum]     [PHP Books]

  Powered by Linux