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