{"id":1588,"date":"2018-01-19T19:23:01","date_gmt":"2018-01-19T19:23:01","guid":{"rendered":"http:\/\/goofy-trucks.flywheelsites.com\/interfacing-with-com-objects-under-windows-page-7\/"},"modified":"2018-01-19T19:24:54","modified_gmt":"2018-01-19T19:24:54","slug":"interfacing-with-com-objects-under-windows-page-7","status":"publish","type":"post","link":"https:\/\/phpbuilder.com\/interfacing-with-com-objects-under-windows-page-7\/","title":{"rendered":"Interfacing with COM objects under Windows Page 7"},"content":{"rendered":"<div class=\"phpbuilder-content\">\n<div class=\"phpbuilder-meta\">\n<div class=\"\">By Siddharth Venkatesan<\/div>\n<div class=\"\">on May 1, 2003<\/div>\n<\/p><\/div>\n<div id=\"overflow-content\">\n<h2>Running the Test Script <\/h2>\n<div class=\"articlePara\">\nNow, we come back to the work of Alain M. Samoun, as mentioned at the start of this article.<br \/>\nA nice quick example of verifying whether this has worked is by doing this example:\n<\/div>\n<div class=\"articlePara\">\n<a href=\"alain20001003.html\" target=\"_blank\">https:\/\/phpbuilder.com\/columns\/alain20001003.php3<\/a>\n<\/div>\n<div class=\"articlePara\">\nAn abbreviated example would be to run this:<br \/>\nPlease note that I&#8217;ve lifted this directly from page 3 of the above tutorial.\n<\/div>\n<div class=\"articlePara\">\nHope this helps.\n<\/div>\n<div class=\"articlePara\">\n\/Sid\n<\/div>\n<div class=\"articlePhpEx\">\n<font face=\"courier\"><code><span style=\"color: #000000\"><\/p>\n<p><span style=\"color: #0000BB\">&lt;?php<\/p>\n<p><\/span><span style=\"color: #FF8000\">#Set\u00a0the\u00a0workbook\u00a0to\u00a0use\u00a0and\u00a0its\u00a0sheet.\u00a0In\u00a0this\u00a0example\u00a0we\u00a0use\u00a0a\u00a0spreadsheet\u00a0that<br \/>\n<br \/>#comes\u00a0with\u00a0the\u00a0Excel\u00a0installation\u00a0called:\u00a0SOLVSAMP.XLS<\/p>\n<p><\/span><span style=\"color: #0000BB\">$workbook\u00a0<\/span><span style=\"color: #007700\">=\u00a0<\/span><span style=\"color: #DD0000\">\"C:Program\u00a0FilesMicrosoft\u00a0officeOfficeSamplesSOLVSAMP.XLS\"<\/span><span style=\"color: #007700\">;<br \/>\n<br \/><\/span><span style=\"color: #0000BB\">$sheet\u00a0<\/span><span style=\"color: #007700\">=\u00a0<\/span><span style=\"color: #DD0000\">\"Quick\u00a0Tour\"<\/span><span style=\"color: #007700\">;<\/p>\n<p><\/span><span style=\"color: #FF8000\">#Instantiate\u00a0the\u00a0spreadsheet\u00a0component.<br \/>\n<br \/>\u00a0\u00a0\u00a0\u00a0<\/span><span style=\"color: #0000BB\">$ex\u00a0<\/span><span style=\"color: #007700\">=\u00a0new\u00a0<\/span><span style=\"color: #0000BB\">COM<\/span><span style=\"color: #007700\">(<\/span><span style=\"color: #DD0000\">\"Excel.sheet\"<\/span><span style=\"color: #007700\">)\u00a0or\u00a0Die\u00a0(<\/span><span style=\"color: #DD0000\">\"Did\u00a0not\u00a0connect\"<\/span><span style=\"color: #007700\">);<\/p>\n<p><\/span><span style=\"color: #FF8000\">#Get\u00a0the\u00a0application\u00a0name\u00a0and\u00a0version\u00a0\u00a0\u00a0\u00a0<br \/>\n<br \/>\u00a0\u00a0\u00a0\u00a0<\/span><span style=\"color: #007700\">print\u00a0<\/span><span style=\"color: #DD0000\">\"Application\u00a0name:{$ex-&gt;Application-&gt;value}&lt;BR&gt;\"\u00a0<\/span><span style=\"color: #007700\">;\u00a0<br \/>\n<br \/>\u00a0\u00a0\u00a0\u00a0print\u00a0<\/span><span style=\"color: #DD0000\">\"Loaded\u00a0version:\u00a0{$ex-&gt;Application-&gt;version}&lt;BR&gt;\"<\/span><span style=\"color: #007700\">;\u00a0<\/p>\n<p><\/span><span style=\"color: #FF8000\">#Open\u00a0the\u00a0workbook\u00a0that\u00a0we\u00a0want\u00a0to\u00a0use.<br \/>\n<br \/>\u00a0\u00a0\u00a0\u00a0<\/span><span style=\"color: #0000BB\">$wkb\u00a0<\/span><span style=\"color: #007700\">=\u00a0<\/span><span style=\"color: #0000BB\">$ex<\/span><span style=\"color: #007700\">-&gt;<\/span><span style=\"color: #0000BB\">application<\/span><span style=\"color: #007700\">-&gt;<\/span><span style=\"color: #0000BB\">Workbooks<\/span><span style=\"color: #007700\">-&gt;<\/span><span style=\"color: #0000BB\">Open<\/span><span style=\"color: #007700\">(<\/span><span style=\"color: #0000BB\">$workbook<\/span><span style=\"color: #007700\">)\u00a0or\u00a0Die\u00a0(<\/span><span style=\"color: #DD0000\">\"Did\u00a0not\u00a0open\"<\/span><span style=\"color: #007700\">);<\/p>\n<p><\/span><span style=\"color: #FF8000\">#Create\u00a0a\u00a0copy\u00a0of\u00a0the\u00a0workbook,\u00a0so\u00a0the\u00a0original\u00a0workbook\u00a0will\u00a0be\u00a0preserved.<br \/>\n<br \/>\u00a0\u00a0\u00a0\u00a0<\/span><span style=\"color: #0000BB\">$ex<\/span><span style=\"color: #007700\">-&gt;<\/span><span style=\"color: #0000BB\">Application<\/span><span style=\"color: #007700\">-&gt;<\/span><span style=\"color: #0000BB\">ActiveWorkbook<\/span><span style=\"color: #007700\">-&gt;<\/span><span style=\"color: #0000BB\">SaveAs<\/span><span style=\"color: #007700\">(<\/span><span style=\"color: #DD0000\">\"Ourtest\"<\/span><span style=\"color: #007700\">);\u00a0\u00a0<br \/>\n<br \/>\u00a0\u00a0\u00a0\u00a0<\/span><span style=\"color: #FF8000\">#$ex-&gt;Application-&gt;Visible\u00a0=\u00a01;\u00a0#Uncomment\u00a0to\u00a0make\u00a0Excel\u00a0visible.<\/p>\n<p>#\u00a0Read\u00a0and\u00a0write\u00a0to\u00a0a\u00a0cell\u00a0in\u00a0the\u00a0new\u00a0sheet<br \/>\n<br \/>#\u00a0We\u00a0want\u00a0to\u00a0read\u00a0the\u00a0cell\u00a0E11\u00a0(Advertising\u00a0in\u00a0the\u00a04th.\u00a0Quarter)<br \/>\n<br \/>\u00a0\u00a0\u00a0\u00a0<\/span><span style=\"color: #0000BB\">$sheets\u00a0<\/span><span style=\"color: #007700\">=\u00a0<\/span><span style=\"color: #0000BB\">$wkb<\/span><span style=\"color: #007700\">-&gt;<\/span><span style=\"color: #0000BB\">Worksheets<\/span><span style=\"color: #007700\">(<\/span><span style=\"color: #0000BB\">$sheet<\/span><span style=\"color: #007700\">);\u00a0\u00a0\u00a0\u00a0<\/span><span style=\"color: #FF8000\">#Select\u00a0the\u00a0sheet<br \/>\n<br \/>\u00a0\u00a0\u00a0\u00a0<\/span><span style=\"color: #0000BB\">$sheets<\/span><span style=\"color: #007700\">-&gt;<\/span><span style=\"color: #0000BB\">activate<\/span><span style=\"color: #007700\">;\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/span><span style=\"color: #FF8000\">#Activate\u00a0it<br \/>\n<br \/>\u00a0\u00a0\u00a0\u00a0<\/span><span style=\"color: #0000BB\">$cell\u00a0<\/span><span style=\"color: #007700\">=\u00a0<\/span><span style=\"color: #0000BB\">$sheets<\/span><span style=\"color: #007700\">-&gt;<\/span><span style=\"color: #0000BB\">Cells<\/span><span style=\"color: #007700\">(<\/span><span style=\"color: #0000BB\">11<\/span><span style=\"color: #007700\">,<\/span><span style=\"color: #0000BB\">5<\/span><span style=\"color: #007700\">)\u00a0;\u00a0\u00a0\u00a0\u00a0<\/span><span style=\"color: #FF8000\">#Select\u00a0the\u00a0cell\u00a0(Row\u00a0Column\u00a0number)<br \/>\n<br \/>\u00a0\u00a0\u00a0\u00a0<\/span><span style=\"color: #0000BB\">$cell<\/span><span style=\"color: #007700\">-&gt;<\/span><span style=\"color: #0000BB\">activate<\/span><span style=\"color: #007700\">;\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/span><span style=\"color: #FF8000\">#Activate\u00a0the\u00a0cell<br \/>\n<br \/>\u00a0\u00a0\u00a0\u00a0<\/span><span style=\"color: #007700\">print\u00a0<\/span><span style=\"color: #DD0000\">\"Old\u00a0Value\u00a0=\u00a0{$cell-&gt;value}\u00a0&lt;BR&gt;\"<\/span><span style=\"color: #007700\">;\u00a0\u00a0\u00a0\u00a0<\/span><span style=\"color: #FF8000\">#Print\u00a0the\u00a0value\u00a0of\u00a0the\u00a0cell:10000<br \/>\n<br \/>\u00a0\u00a0\u00a0\u00a0<\/span><span style=\"color: #0000BB\">$cell<\/span><span style=\"color: #007700\">-&gt;<\/span><span style=\"color: #0000BB\">value\u00a0<\/span><span style=\"color: #007700\">=\u00a0<\/span><span style=\"color: #0000BB\">15000<\/span><span style=\"color: #007700\">;\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/span><span style=\"color: #FF8000\">#Change\u00a0it\u00a0to\u00a015000<br \/>\n<br \/>\u00a0\u00a0\u00a0\u00a0<\/span><span style=\"color: #007700\">print\u00a0<\/span><span style=\"color: #DD0000\">\"New\u00a0value\u00a0=\u00a0{$cell-&gt;value}&lt;BR&gt;\u00a0\"<\/span><span style=\"color: #007700\">;<\/span><span style=\"color: #FF8000\">#Print\u00a0the\u00a0new\u00a0value=15000<\/p>\n<p>#Eventually,\u00a0recalculate\u00a0the\u00a0sheet\u00a0with\u00a0the\u00a0new\u00a0value.<br \/>\n<br \/>\u00a0\u00a0\u00a0\u00a0<\/span><span style=\"color: #0000BB\">$sheets<\/span><span style=\"color: #007700\">-&gt;<\/span><span style=\"color: #0000BB\">Calculate<\/span><span style=\"color: #007700\">;\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/span><span style=\"color: #FF8000\">#Necessary\u00a0only\u00a0if\u00a0calc.\u00a0option\u00a0is\u00a0manual<br \/>\n<br \/>#And\u00a0see\u00a0the\u00a0effect\u00a0on\u00a0total\u00a0cost(Cell\u00a0E13)<br \/>\n<br \/>\u00a0\u00a0\u00a0\u00a0<\/span><span style=\"color: #0000BB\">$cell\u00a0<\/span><span style=\"color: #007700\">=\u00a0<\/span><span style=\"color: #0000BB\">$sheets<\/span><span style=\"color: #007700\">-&gt;<\/span><span style=\"color: #0000BB\">Cells<\/span><span style=\"color: #007700\">(<\/span><span style=\"color: #0000BB\">13<\/span><span style=\"color: #007700\">,<\/span><span style=\"color: #0000BB\">5<\/span><span style=\"color: #007700\">)\u00a0;\u00a0\u00a0\u00a0\u00a0<\/span><span style=\"color: #FF8000\">#Select\u00a0the\u00a0cell\u00a0(Row\u00a0Column\u00a0number)<br \/>\n<br \/>\u00a0\u00a0\u00a0\u00a0<\/span><span style=\"color: #0000BB\">$number\u00a0<\/span><span style=\"color: #007700\">=\u00a0<\/span><span style=\"color: #0000BB\">Number_format<\/span><span style=\"color: #007700\">(<\/span><span style=\"color: #0000BB\">$cell<\/span><span style=\"color: #007700\">-&gt;<\/span><span style=\"color: #0000BB\">value<\/span><span style=\"color: #007700\">);<br \/>\n<br \/>\u00a0\u00a0\u00a0\u00a0print\u00a0<\/span><span style=\"color: #DD0000\">\"New\u00a0Total\u00a0cost\u00a0=$$number\u00a0-\u00a0was\u00a0$47,732\u00a0before.&lt;BR&gt;\"<\/span><span style=\"color: #007700\">;<br \/>\n<br \/><\/span><span style=\"color: #FF8000\">#Should\u00a0print\u00a0$57,809\u00a0because\u00a0the\u00a0advertising\u00a0affects\u00a0the\u00a0Corporate\u00a0overhead\u00a0in\u00a0the<br \/>\n<br \/>#\u00a0cell\u00a0formula.<\/p>\n<p>#Example\u00a0of\u00a0use\u00a0of\u00a0the\u00a0built-in\u00a0functions\u00a0in\u00a0Excel:<br \/>\n<br \/>#Function:\u00a0PMT(percent\/12\u00a0months,Number\u00a0of\u00a0payments,Loan\u00a0amount)<br \/>\n<br \/>\u00a0\u00a0\u00a0\u00a0<\/span><span style=\"color: #0000BB\">$pay\u00a0<\/span><span style=\"color: #007700\">=\u00a0<\/span><span style=\"color: #0000BB\">$ex<\/span><span style=\"color: #007700\">-&gt;<\/span><span style=\"color: #0000BB\">application<\/span><span style=\"color: #007700\">-&gt;<\/span><span style=\"color: #0000BB\">pmt<\/span><span style=\"color: #007700\">(<\/span><span style=\"color: #0000BB\">0.08<\/span><span style=\"color: #007700\">\/<\/span><span style=\"color: #0000BB\">12<\/span><span style=\"color: #007700\">,<\/span><span style=\"color: #0000BB\">10<\/span><span style=\"color: #007700\">,<\/span><span style=\"color: #0000BB\">10000<\/span><span style=\"color: #007700\">);\u00a0<br \/>\n<br \/>\u00a0\u00a0\u00a0\u00a0<\/span><span style=\"color: #0000BB\">$pay\u00a0<\/span><span style=\"color: #007700\">=\u00a0<\/span><span style=\"color: #0000BB\">sprintf<\/span><span style=\"color: #007700\">(<\/span><span style=\"color: #DD0000\">\"%.2f\"<\/span><span style=\"color: #007700\">,<\/span><span style=\"color: #0000BB\">$pay<\/span><span style=\"color: #007700\">);<br \/>\n<br \/>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0print\u00a0<\/span><span style=\"color: #DD0000\">\"Monthly\u00a0payment\u00a0for\u00a0$10,000\u00a0loan\u00a0@8%\u00a0interest\u00a0\/10\u00a0months:\u00a0$\u00a0$pay&lt;BR&gt;\"<\/span><span style=\"color: #007700\">;\u00a0<br \/>\n<br \/><\/span><span style=\"color: #FF8000\">#Should\u00a0print\u00a0monthly\u00a0payment\u00a0=\u00a0$\u00a0-1,037.03\u00a0\u00a0\u00a0\u00a0<br \/>\n<br \/>\u00a0\u00a0\u00a0\u00a0<br \/>\n<br \/>#Optionally,\u00a0save\u00a0the\u00a0modified\u00a0workbook<br \/>\n<br \/>\u00a0\u00a0\u00a0\u00a0<\/span><span style=\"color: #0000BB\">$ex<\/span><span style=\"color: #007700\">-&gt;<\/span><span style=\"color: #0000BB\">Application<\/span><span style=\"color: #007700\">-&gt;<\/span><span style=\"color: #0000BB\">ActiveWorkbook<\/span><span style=\"color: #007700\">-&gt;<\/span><span style=\"color: #0000BB\">SaveAs<\/span><span style=\"color: #007700\">(<\/span><span style=\"color: #DD0000\">\"Ourtest\"<\/span><span style=\"color: #007700\">);\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<br \/>\n<br \/><\/span><span style=\"color: #FF8000\">#Close\u00a0all\u00a0workbooks\u00a0without\u00a0questioning<br \/>\n<br \/>\u00a0\u00a0\u00a0\u00a0<\/span><span style=\"color: #0000BB\">$ex<\/span><span style=\"color: #007700\">-&gt;<\/span><span style=\"color: #0000BB\">application<\/span><span style=\"color: #007700\">-&gt;<\/span><span style=\"color: #0000BB\">ActiveWorkbook<\/span><span style=\"color: #007700\">-&gt;<\/span><span style=\"color: #0000BB\">Close<\/span><span style=\"color: #007700\">(<\/span><span style=\"color: #DD0000\">\"False\"<\/span><span style=\"color: #007700\">);\u00a0\u00a0\u00a0\u00a0<br \/>\n<br \/>\u00a0\u00a0\u00a0\u00a0unset\u00a0(<\/span><span style=\"color: #0000BB\">$ex<\/span><span style=\"color: #007700\">);<\/p>\n<p><\/span><span style=\"color: #0000BB\">?&gt;<\/span>\u00a0<br \/>\n<br \/><\/span><br \/>\n<\/code><\/font><\/div>\n<\/div>\n<p><\/p>\n<div style=\"float: left; padding:15px; color:#17AAF3\">\n<div style=\"float:left; padding:2px;\"><a class=\"paginationPageLink\" href=\"venkatesan20030501c575.html?page=6\">\u00ab Previous Page<\/a><\/div>\n<div style=\"float:left; padding:2px 4px 2px 4px;\"><a class=\"pageNumber\" href=\"venkatesan20030501.html\">1<\/a> <\/div>\n<div style=\"float:left; font-size:16px; color:#FF7A22; padding:2px 2px 2px 2px; \">| <\/div>\n<div style=\"float:left; padding:2px 4px 2px 4px;\"><a class=\"pageNumber\" href=\"venkatesan200305014658.html?page=2\">2<\/a> <\/div>\n<div style=\"float:left; font-size:16px; color:#FF7A22; padding:2px 2px 2px 2px; \">| <\/div>\n<div style=\"float:left; padding:2px 4px 2px 4px;\"><a class=\"pageNumber\" href=\"venkatesan200305019ba9.html?page=3\">3<\/a> <\/div>\n<div style=\"float:left; font-size:16px; color:#FF7A22; padding:2px 2px 2px 2px; \">| <\/div>\n<div style=\"float:left; padding:2px 4px 2px 4px;\"><a class=\"pageNumber\" href=\"venkatesan20030501fdb0.html?page=4\">4<\/a> <\/div>\n<div style=\"float:left; font-size:16px; color:#FF7A22; padding:2px 2px 2px 2px; \">| <\/div>\n<div style=\"float:left; padding:2px 4px 2px 4px;\"><a class=\"pageNumber\" href=\"venkatesan20030501af4d.html?page=5\">5<\/a> <\/div>\n<div style=\"float:left; font-size:16px; color:#FF7A22; padding:2px 2px 2px 2px; \">| <\/div>\n<div style=\"float:left; padding:2px 4px 2px 4px;\"><a class=\"pageNumber\" href=\"venkatesan20030501c575.html?page=6\">6<\/a> <\/div>\n<div style=\"float:left; font-size:16px; color:#FF7A22; padding:2px 2px 2px 2px; \">| <\/div>\n<div style=\"background-color:#B6E5FC; font-size:16px; margin-top:1px; padding:1px 4px 1px 4px; color:#000; font-style:bold; float:left;\">7<\/div>\n<\/div><\/div>\n","protected":false},"excerpt":{"rendered":"<p>Siddharth Venkatesan walks you through interfacing with COM objects under Windows<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[3],"tags":[],"class_list":["post-1588","post","type-post","status-publish","format-standard","hentry","category-tutorials"],"_links":{"self":[{"href":"https:\/\/phpbuilder.com\/wp-json\/wp\/v2\/posts\/1588","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/phpbuilder.com\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/phpbuilder.com\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/phpbuilder.com\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/phpbuilder.com\/wp-json\/wp\/v2\/comments?post=1588"}],"version-history":[{"count":1,"href":"https:\/\/phpbuilder.com\/wp-json\/wp\/v2\/posts\/1588\/revisions"}],"predecessor-version":[{"id":3412,"href":"https:\/\/phpbuilder.com\/wp-json\/wp\/v2\/posts\/1588\/revisions\/3412"}],"wp:attachment":[{"href":"https:\/\/phpbuilder.com\/wp-json\/wp\/v2\/media?parent=1588"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/phpbuilder.com\/wp-json\/wp\/v2\/categories?post=1588"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/phpbuilder.com\/wp-json\/wp\/v2\/tags?post=1588"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}