hi richard,
 
currently there is no way of calling a function with named arguments. your
proposed array syntax wouldn't allow for passing arrays. on the other hand
variant arrays can only be indexed arrays and not hash arrays so i could treat
all string indices as named parameters. this would be a possibility though i
still find it very confusing. if anybody has a good suggestion that is
feasable on top of the engine (meaning without modifying the scanner/parser)
don't hesitate to post it to the list.
 
back to your actual problem:
you still can call all functions without naming parameters, though you have to
specify the full list of parameters up to at least the last optional parameter
that should not be set to its default value (uuh, does this make sence ?
actually its exactly the same as calling a php function with optional
parameters). you can look up the default values for optional parameters in the
components typelibrary which is browsable using the oleview tool. 
 
i hope that helps.
 

regards,
Harald Radi
--
nme - we can heal you
http://www.nme.at <http://www.nme.at/> 

Ortner Radi Schwenk GnbR
Tumpenweg 528
5084 Grossgmain, Salzburg
Austria 

-----Original Message-----
From: Richard Quadling [mailto:[EMAIL PROTECTED] 
Sent: Tuesday, February 25, 2003 5:53 PM
To: '[EMAIL PROTECTED]'; '[EMAIL PROTECTED]'; '[EMAIL PROTECTED]';
'[EMAIL PROTECTED]'
Subject: PHP, Windows and COM.


Hi.
 
As authors of the COM.c within the PHP Source code, I am hoping one of you
clever people can help me.
 
I am trying to use PHP to control MS Word.
 
Simple stuff like opening a document, writing and saving I have no problem
with, and many of the online tutorials on this show this and very little else.
 
My problem is that I want to use functions from within Word where the
parameters would be named.
 
e.g.
 
In VBA, the GoTo function is defined as;
 
expression.GoTo(What, Which, Count, Name)
 
The following examples are all valid.
 
Selection.GoTo What:=wdGoToHeading, Which:=wdGoToFirst
Selection.GoTo What:=wdGoToHeading, Which:=wdGoToAbsolute, Count:=1
Selection.GoTo What:=wdGoToField, Name:="Date"
 
The What parameter can be ...
 
wdGoToBookmark 
wdGoToComment 
wdGoToEndnote 
wdGoToEquation 
wdGoToField 
wdGoToFootnote 
wdGoToGrammaticalError 
wdGoToGraphic 
wdGoToHeading 
wdGoToLine 
wdGoToObject 
wdGoToPage 
wdGoToPercent 
wdGoToProofreadingError 
wdGoToRevision 
wdGoToSection 
wdGoToSpellingError 
wdGoToTable 
 
The Which parameter can be ...
 
wdGoToAbsolute 
wdGoToFirst 
wdGoToLast 
wdGoToNext 
wdGoToPrevious 
wdGoToRelative 

 
All the parameters are optional. Not all work together. For example, you can't
say goto the page named "fred" as pages don't have names!
 
The problem I have within PHP is I can't work out how to use any function that
has optional parameters.
 
e.g.
 

$word->Documents[1]->GoTo(array("What"=>"wdGoToBookmark","Name"=>"YourName"));

$word->Documents[1]->GoTo("wdGoToBookmark","YourName");
etc.
 
The function seems to have been defined as requiring 4 parameters from PHP's
pov.
 
Is there any known method within PHP to support named parameters for COM
functions that have optional parameters.
 
Search and Replace is another one I can get working, which is why I tried
using bookmarks, but still no joy.
 
Now, if I've lost the plot, then let me know.
 
Alternatively/also, how do I know what typelibrary to load?
 
Is ...
 
com_load_typelib("C:\\Program Files\\Common Files\\Microsoft
Shared\\Office10");
 
correct when ...
 
<?php
set_time_limit(0);
error_reporting(E_ALL);
 
com_load_typelib("C:\\Program Files\\Common Files\\Microsoft
Shared\\Office10");
$word = new COM("word.application") or die("Unable to create Word");
print "Loaded Word, version {$word->Version}\n";

$word->Documents->Open("C:\\Empty.DOC");
print "Document loaded";

$word->Documents[1]->GoTo(array("What"=>-1,"Name"=>"YourName"));
print "Goto 1 done";

$word->Selection->TypeText("{$_GET['YourName']}");
print "Typetext 1 done";

$word->Documents[1]->GoTo(array("What"=>-1,"Name"=>"YourAge"));
print "Goto 2 done";

$word->Selection->TypeText("{$_GET['YourAge']}");
print "Typetext 2 done";

$word->Documents[1]->SaveAs("C:\\filled.doc");
print "New saved document";

$word->Quit();
$word->Release();
$word = null;
print "Word closed.\n";
?>


The word document has 2 bookmarks. I called "YourName" and one called
"YourAge".
 
The above script is called as word.php?YourName=Richard&YourAge=35
 
Please help!
 
Regards,
 
Richard Quadling

 

Reply via email to