<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://wiki.openoffice.org/w/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Npower</id>
	<title>Apache OpenOffice Wiki - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.openoffice.org/w/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Npower"/>
	<link rel="alternate" type="text/html" href="https://wiki.openoffice.org/wiki/Special:Contributions/Npower"/>
	<updated>2026-10-19T08:02:00Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.35.14</generator>
	<entry>
		<id>https://wiki.openoffice.org/w/index.php?title=DomainDeveloper&amp;diff=147033</id>
		<title>DomainDeveloper</title>
		<link rel="alternate" type="text/html" href="https://wiki.openoffice.org/w/index.php?title=DomainDeveloper&amp;diff=147033"/>
		<updated>2009-11-17T09:45:35Z</updated>

		<summary type="html">&lt;p&gt;Npower: /* Developers */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;A mapping of names to OOo accounts.&lt;br /&gt;
&lt;br /&gt;
Abbrev.:&lt;br /&gt;
&lt;br /&gt;
* PL : Project Lead&lt;br /&gt;
* CL : Project Co-Lead&lt;br /&gt;
* CC : Community Council Member&lt;br /&gt;
* ESC : Engineering Steering Committee Member &lt;br /&gt;
* CVS : has write access to the OOo CVS repository&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
=== Developers ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;prettytable sortable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Name || CVS || @openoffice.org || [[IRC Communication]] || Notes || Affiliation&lt;br /&gt;
|-&lt;br /&gt;
| [[User:Agerskov|Claus Agerskov]]||   || cs||Agerskov, cagerskov||PL Project Management Tool ([http://oopm.openoffice.org oopm])||AgerCon&lt;br /&gt;
|-&lt;br /&gt;
| Volker Ahrendt|| X || va||||||Sun Microsystems&lt;br /&gt;
|-&lt;br /&gt;
| Kai Ahrens|| X || ka || Kai_Ahrens ||PL Graphic Applications||Sun Microsystems&lt;br /&gt;
|-&lt;br /&gt;
| Rail Aliev || X  || rail || rail ||  Ru and Tr NL Co-lead || Infra-Resource &lt;br /&gt;
|-&lt;br /&gt;
| Gene Anaya||   || ganaya||||||&lt;br /&gt;
|-&lt;br /&gt;
| [[User:JoostAndrae|Joost Andrae]]|| X || ja||ja_||CL qa, release testing en-US builds and releasing/uploading builds and releases||Sun Microsystems&lt;br /&gt;
|-&lt;br /&gt;
| [[User:ericb|Eric Bachard]] || X || ericb||ericb2|| PL Education, Mac OSX/Linux PPC port and vcl/impress hacker || [http://education.openoffice.org Education project], unaffiliated&lt;br /&gt;
|-&lt;br /&gt;
| Kai Backman||  || kaib ||KaiB||||&lt;br /&gt;
|-&lt;br /&gt;
| Sascha Ballach|| X || sab||||||&lt;br /&gt;
|-&lt;br /&gt;
| Jayant Balraj Madavi||   || jayant_madavi||aZEN_JM||Connectivity / Database||Novell, Inc.&lt;br /&gt;
|-&lt;br /&gt;
| Jörg Barfurth|| X || jb||JoergB||Configuration Util||Sun Microsystems&lt;br /&gt;
|-&lt;br /&gt;
| Omer Bar-or|| X || cremlae||cremlae||Mac porting||Google Summer of Code&lt;br /&gt;
|-&lt;br /&gt;
| Mathias Bauer|| X || mba||||PL Writer, CL Framework, XML||Sun Microsystems&lt;br /&gt;
|-&lt;br /&gt;
| Thorsten Behrens|| X || thb||thorsten||vcl/impress/toolkit visionary||Novell, Inc.&lt;br /&gt;
|-&lt;br /&gt;
| Thomas Benisch|| X || tbe||||Scripting framework||Sun Microsystems&lt;br /&gt;
|-&lt;br /&gt;
| Stephan Bergmann|| X || sb||||CL UDK||Sun Microsystems&lt;br /&gt;
|-&lt;br /&gt;
| Andreas Bille|| X || abi||||||&lt;br /&gt;
|-&lt;br /&gt;
| Éric Bischoff|| X || ebischoff||ebischoff||KDE A/B driver||Bureau Cornavin&lt;br /&gt;
|-&lt;br /&gt;
| Nick Blievers|| X || nick||||IRIX||&lt;br /&gt;
|-&lt;br /&gt;
| Daniel Boelzle|| X || dbo||||UNO core/bridges/packages||Sun Microsystems&lt;br /&gt;
|-&lt;br /&gt;
| Oliver Bolte|| X || obo||||RE||Sun Microsystems&lt;br /&gt;
|-&lt;br /&gt;
| [[User:Cedricbosdo|Cédric Bosdonnat]]|| X || cedricbosdo || cbosdonnat || Writer Filters, ooeclipse integration || Novell, Inc.&lt;br /&gt;
|-&lt;br /&gt;
| Rafaella Braconi||   || coni||Rafaella ||PL l10n, Globalization Program Manager||Sun Microsystems&lt;br /&gt;
|-&lt;br /&gt;
| Michael Brauer|| X || mib||||PL XML||Sun Microsystems&lt;br /&gt;
|-&lt;br /&gt;
| Oliver Braun|| X || obr||obr||System Integration/Accessibility Hacker||Sun Microsystems&lt;br /&gt;
|-&lt;br /&gt;
| Andreas Bregas|| X || ab||||StarBasic||Sun Microsystems&lt;br /&gt;
|-&lt;br /&gt;
| Jörg Brunsmann||   || jbrunsmann||||UDK||&lt;br /&gt;
|-&lt;br /&gt;
| Jörg Budischewski||   || jbu||PyUNO hacker||||&lt;br /&gt;
|-&lt;br /&gt;
| Peter Burow|| X  || pb||plumbumm||UI||Sun Microsystems&lt;br /&gt;
|-&lt;br /&gt;
| Aidan Butler||   || aidan||||XML filters||&lt;br /&gt;
|-&lt;br /&gt;
| [[User:ScottCarr|Scott Carr]] || X  || kcarr||kcarr||PL Documentation||Progbits&lt;br /&gt;
|-&lt;br /&gt;
| Giuseppe Castagno || X || beppec56 || beppec56_  or beppe_c || PDF output&lt;br /&gt;
|-&lt;br /&gt;
| Colin Charles||   || drbyte||bytee||Malaysian native-lang project||bytebot.net&lt;br /&gt;
|-&lt;br /&gt;
|Jian Hong Cheng || X || chengjh ||  || Writer || IBM Corp.&lt;br /&gt;
|-&lt;br /&gt;
| Xiuzhi Cheng|| X || xzcheng || xiuzhi|| ESC,Xml,ODF|| OOo community&lt;br /&gt;
|-&lt;br /&gt;
| [[User:jza|Alexandro Colorado]]|| X || jza || jza|| CL [[OOoES|ES]] || &lt;br /&gt;
|-&lt;br /&gt;
| Behrend Cornelius|| X || bc||||Wizards||Sun Microsystems&lt;br /&gt;
|-&lt;br /&gt;
| [[User:ccornell|Clayton Cornell]] || X || ccornell || ccornell || Documentation Project co-lead ||Sun Microsystems&lt;br /&gt;
|-&lt;br /&gt;
| Michael Cziebalski||   || mci||||||&lt;br /&gt;
|-&lt;br /&gt;
| [[User:pdefilippis|Pierre de Filippis]]|| X || pdefilippis||aliscafo||Mac OSX native porting||&lt;br /&gt;
|-&lt;br /&gt;
| Yuri Dario ||   || ydario || Paperino || OS/2 Port || Serenity Systems intl&lt;br /&gt;
|-&lt;br /&gt;
| Andrew Dent|| X ||ace_dent||ace_dent||ui/custom_images||&lt;br /&gt;
|-&lt;br /&gt;
| Naren Devaiah||   || ||ndev||Performance||Intel Corporation&lt;br /&gt;
|-&lt;br /&gt;
| Nitin Dongre||   || ||nitin_BITS||||Novell, Inc.(intern)&lt;br /&gt;
|-&lt;br /&gt;
| Radek Doulik||   || radekdoulik||rodo_||Canvas hacker||Novell, Inc.&lt;br /&gt;
|-&lt;br /&gt;
| Carsten Driesner|| X || cd|| cd_oo ||PL Framework||Sun Microsystems&lt;br /&gt;
|-&lt;br /&gt;
| Herbert Duerr|| X || hdu||hdu_hh||GSL||Sun Microsystems&lt;br /&gt;
|-&lt;br /&gt;
| [[User:bei|Bernd Eilers]]|| X || bei||rfc821||[[EIS]]||Sun Microsystems&lt;br /&gt;
|-&lt;br /&gt;
| René Engelhard|| X || rene||_rene_||config_office, Debian packager||Debian&lt;br /&gt;
|-&lt;br /&gt;
| [[User:Pereriksson|Per Eriksson]] || || pereriksson || || CL, MarCon Sweden ||&lt;br /&gt;
|-&lt;br /&gt;
|[[User:Jbfaure|Jean-Baptiste Faure]]||X||jbfaure||jbfaure ||PL FR native-lang project|| &lt;br /&gt;
|-&lt;br /&gt;
| Hubert Figuière|| X || hub || hub || PPTX || Novell, Inc.&lt;br /&gt;
|-&lt;br /&gt;
| Claudio F Filho||   || filhocf||filhocf||Brazilian portuguese Localization||BrOffice.org&lt;br /&gt;
|-&lt;br /&gt;
| Andre Fischer|| X || af||||Impress||Sun Microsystems&lt;br /&gt;
|-&lt;br /&gt;
| Uwe Fischer || X || ufi || ufiooo || Application Help || Sun Microsystems&lt;br /&gt;
|-&lt;br /&gt;
| Ken Foskey||   || waratah||waratah||config_office/dmake man||slug.org.au&lt;br /&gt;
|-&lt;br /&gt;
| Duncan Foster||   || dfoster||||||&lt;br /&gt;
|-&lt;br /&gt;
| David Fraser||   || davidfraser||davidfraser||South African translations, multilingual builds||translate.org.za&lt;br /&gt;
|-&lt;br /&gt;
| [[User:Nf|Nils Fuhrmann]]||   || nf||SunNF||||Sun Microsystems&lt;br /&gt;
|-&lt;br /&gt;
| Martin Gallwey|| X || mtg||marty_||XML/Writer/packaging||&lt;br /&gt;
|-&lt;br /&gt;
| Pierre-Andre Galmes || || pagalmes || pagalmes || Chart2 ||StarXpert&lt;br /&gt;
|-&lt;br /&gt;
| Tony Galmiche|| X || tonygalmiche||||FR native-lang project||&lt;br /&gt;
|-&lt;br /&gt;
| Sunil Gandhi||   || ||tyro||||NOSIP&lt;br /&gt;
|-&lt;br /&gt;
|Zemin Gao ||  || gaozemin|| gaozm || Calc || [[Beijing Redflag Chinese 2000 Software Co., Ltd.|Beijing Redflag CH2000]]&lt;br /&gt;
|-&lt;br /&gt;
| Sophie Gautier|| X || sgauti|| sophi || ||.&lt;br /&gt;
|-&lt;br /&gt;
| Vladimir Glazounov|| X || vg||||RE||Sun Microsystems&lt;br /&gt;
|-&lt;br /&gt;
| Laurent Godard || X || laurentgodard || lgodard || CC, PL Extensions, Fr Native-lang Project || inDesko/Nuxeo &lt;br /&gt;
|-&lt;br /&gt;
| Jody Goldberg|| X || jodygoldberg||jody||[[Calc]] spreadsheet-ness||&lt;br /&gt;
|-&lt;br /&gt;
| Dirk Grobler|| X || dg|||| ||Sun Microsystems&lt;br /&gt;
|-&lt;br /&gt;
| [[User:Sg|Steffen Grund]]|| X || sg|| || NetBeans Integration ||Sun Microsystems&lt;br /&gt;
|-&lt;br /&gt;
| Bettina Haberer||   || bh||||RFEOwner||Sun Microsystems&lt;br /&gt;
|-&lt;br /&gt;
| Bo Han || X || hanbo || hanbo || VBA Interop || [[Beijing Redflag Chinese 2000 Software Co., Ltd.|Beijing Redflag CH2000]]&lt;br /&gt;
|-&lt;br /&gt;
| Ingrid Halama|| X || iha||||Chart||Sun Microsystems&lt;br /&gt;
|-&lt;br /&gt;
| Chris Halls|| X || haggai||haggai||Debian packager&amp;amp;amp;misc. hacker||Credativ Ltd., Debian&lt;br /&gt;
|-&lt;br /&gt;
| Gregor Hartmann|| X || gh|| Lachs ||Testtool, gsicheck, buildbot||Sun Microsystems&lt;br /&gt;
|-&lt;br /&gt;
| Bustamam Harun||   || bustamam||||Malaysian stuff||&lt;br /&gt;
|-&lt;br /&gt;
| Kevin Hendricks|| X || khendricks||||PL Lingucomponent, PowerPC||&lt;br /&gt;
|-&lt;br /&gt;
| Con Hennessy||   || cphennessy||cph2 or cph_||hacker &amp;amp;amp; former council person||OpenApp&lt;br /&gt;
|-&lt;br /&gt;
| Ivo Hinkelmann|| X || ihi||ivo||l10n tooling/general/RE||Sun Microsystems&lt;br /&gt;
|-&lt;br /&gt;
| Eric Hoch|| X || maveric||mav_eric||Mac Porting||&lt;br /&gt;
|-&lt;br /&gt;
| [[User:Lutz_Hoeger|Lutz Hoeger]]|| X || lh ||lutzh||||Sun Microsystems&lt;br /&gt;
|-&lt;br /&gt;
| Michael Hönnig|| X || mi||||PL API||&lt;br /&gt;
|-&lt;br /&gt;
| Ilko Höpping|| X || ih||||||Sun Microsystems&lt;br /&gt;
|-&lt;br /&gt;
| Jan Holešovský|| X || kendy||kendy||KDE integration||Novell, Inc.&lt;br /&gt;
|-&lt;br /&gt;
| Martin Hollmichel|| X || mh||Ratte/Nesshof||PL External, Tools, Porting, CC||Sun Microsystems&lt;br /&gt;
|-&lt;br /&gt;
| Karl Hong|| X || khong||||i18n, CJK expert||&lt;br /&gt;
|-&lt;br /&gt;
| [[User:icobgr|Hristo Hristov]] ||   || icobgr || icobgr || PL Bulgarian native-lang project ||&lt;br /&gt;
|-&lt;br /&gt;
| Matthias Huetsch|| X || mhu||||Performance/strategy, PL UCB, CC, ESC||Sun Microsystems&lt;br /&gt;
|-&lt;br /&gt;
| Sven Jacobi|| X || sj||||Escherwizard||Sun Microsystems&lt;br /&gt;
|-&lt;br /&gt;
| Jörg Jahnke||   || jj||||tooling||Sun Microsystems&lt;br /&gt;
|-&lt;br /&gt;
| Pavel Janík|| X || pjanik||paveljanik||PL Czech native-lang project, CL l10n, CC, ESC, l10n builds||&lt;br /&gt;
|-&lt;br /&gt;
| Sunil Amitkumar Janki || || sjanki || sjanki || GNU Linux mipsel porter || &lt;br /&gt;
|-&lt;br /&gt;
| Christian Jansen||   || cj ||||Menu and Toolbar?||Sun Microsystems&lt;br /&gt;
|-&lt;br /&gt;
| Ocke Janssen|| X || oj||Base||||Sun Microsystems&lt;br /&gt;
|-&lt;br /&gt;
| Berry Jia|| X || berryjia||||||&lt;br /&gt;
|-&lt;br /&gt;
| Mingfei Jia || X  || jiamingfei ||   || Lotus Smart Suite filter,MS Word encryption || IBM Corp.&lt;br /&gt;
|-&lt;br /&gt;
| Chuang Jiang ||   || jiangc ||   || || [[Beijing Redflag Chinese 2000 Software Co., Ltd.|Beijing Redflag CH2000]]&lt;br /&gt;
|-&lt;br /&gt;
| Pascal Junck||   || pjunck||||||&lt;br /&gt;
|-&lt;br /&gt;
| [[User:pj@openoffice.org|Peter Junge]]|| X || pj|| peter13j|| OOo community contact for my Chinese Employer, QA||[[Beijing Redflag Chinese 2000 Software Co., Ltd.|Beijing Redflag CH2000]]&lt;br /&gt;
|-&lt;br /&gt;
| Christian Junker||   || Cyb||christianju||API||Trees For Life&lt;br /&gt;
|-&lt;br /&gt;
| Etsushi Kato || X || ekato ||   || Mac OS X Port || Independent &lt;br /&gt;
|-&lt;br /&gt;
| Hirano Kazunari||   || khirano||||Japanese||&lt;br /&gt;
|-&lt;br /&gt;
| Dhananjay Keskar|| X || dkeskar ||dkeskar||Performance,Buildbot,cat-herder||Intel Corporation&lt;br /&gt;
|-&lt;br /&gt;
| Volodymyr Khrystynych||   || volody||||XML Filter||&lt;br /&gt;
|-&lt;br /&gt;
| Robert Kinsella||   || rkinsella||||||Sun Microsystems&lt;br /&gt;
|-&lt;br /&gt;
| Matthias Klose||   || doko||doko||Ubuntu, gcc, python packager||Canonical, Inc.&lt;br /&gt;
|-&lt;br /&gt;
| Laszlo Kovacs||   || lkovacs||||Documentation||&lt;br /&gt;
|-&lt;br /&gt;
| Tobias Krause|| X || tkr||||ucb||Sun Microsystems&lt;br /&gt;
|-&lt;br /&gt;
| Martin Kretzschmar|| X || mkretzschmar||martink||Gnome / Debian||Student&lt;br /&gt;
|-&lt;br /&gt;
| Will Lachance||   || wlach||wlach_||Word Perfect File Filters||Net Integration Technologies, Inc.&lt;br /&gt;
|-&lt;br /&gt;
| Thomas Lange|| X || tl||tl13||||Sun Microsystems&lt;br /&gt;
|-&lt;br /&gt;
| Lars Langhans|| X || lla||||||Sun Microsystems&lt;br /&gt;
|-&lt;br /&gt;
| Hans-Joachim Lankenau|| X || hjs||ause||dmake makefile expert, RE||Sun Microsystems&lt;br /&gt;
|-&lt;br /&gt;
| Németh László|| X || nemeth||||PL lingucomponent||&lt;br /&gt;
|-&lt;br /&gt;
| Jakob Lechner|| X || jakob_lechner||||Writer||Fabalabs&lt;br /&gt;
|-&lt;br /&gt;
| Michael Leibowitz||  X || mikeleib ||mikeleib||performance||Intel Corporation&lt;br /&gt;
|-&lt;br /&gt;
| Hui Li||   || lihuiibm || Hui_Li ||VBA Interop||IBM Corp.&lt;br /&gt;
|-&lt;br /&gt;
|Jian Li||   || lijian || lijian|| Writer|| &lt;br /&gt;
|-&lt;br /&gt;
| Wind Li|| X || windly||||Address books||&lt;br /&gt;
|-&lt;br /&gt;
| Xing Li || X  || lixxing ||   || Accessibility || IBM Corp.&lt;br /&gt;
|-&lt;br /&gt;
|Weike Liang ||   || liangweike || liangweike || Graphics || [[Beijing Redflag Chinese 2000 Software Co., Ltd.|Beijing Redflag CH2000]]&lt;br /&gt;
|-&lt;br /&gt;
| Ping Liao||   || pliao||||||&lt;br /&gt;
|-&lt;br /&gt;
| Tor Lillqvist|| X || tml||tml_||||Novell, Inc.&lt;br /&gt;
|-&lt;br /&gt;
| Fong Lin || X  || pflin || Fong  || VBA Interop, Scripting, CJK Enhancement || Novell, Inc.&lt;br /&gt;
|-&lt;br /&gt;
| Joachim Lingner|| X || jl||||Java, CLI||Sun Microsystems&lt;br /&gt;
|-&lt;br /&gt;
| Christian Lippka|| X || cl || cl ||Graphic Applications||Sun Microsystems&lt;br /&gt;
|-&lt;br /&gt;
| Chen Liu||   || liuchenn|| liuchen ||VBA Interop||IBM Corp.&lt;br /&gt;
|-&lt;br /&gt;
|Jianli Liu ||  || liujl|| liujianli || Graphics|| [[Beijing Redflag Chinese 2000 Software Co., Ltd.|Beijing Redflag CH2000]]&lt;br /&gt;
|-&lt;br /&gt;
| Mindy Liu||   || mindyliu||||||&lt;br /&gt;
|-&lt;br /&gt;
|[[User:liutao |Tao Liu]]   || X  || liutao || liutao  ||PL modularization ,PyUNO, Async dialogs,|| &lt;br /&gt;
|-&lt;br /&gt;
| YiSong Liu||  || Liu YiSong || Liu YiSong|| PYUNO || [[Beijing Redflag Chinese 2000 Software Co., Ltd.|Beijing Redflag CH2000]]&lt;br /&gt;
|-&lt;br /&gt;
|Yu Liu || X  || ch2000liuy || LiuYU  || Swriter || [[Beijing Redflag Chinese 2000 Software Co., Ltd.|Beijing Redflag CH2000]]&lt;br /&gt;
|-&lt;br /&gt;
|Yuhua Liu ||  || liuyuhua|| yuhua|| ||[[Beijing Redflag Chinese 2000 Software Co., Ltd.|Beijing Redflag CH2000]]&lt;br /&gt;
|-&lt;br /&gt;
| [[User:fl|Frank Loehmann]]|| X || fl ||frankl||PL [http://ux.openoffice.org User Experience]||Sun Microsystems&lt;br /&gt;
|-&lt;br /&gt;
| [[User:Dl|Dieter Loeschky]]|| X || dl ||||PL: ODF Toolkit||Sun Microsystems&lt;br /&gt;
|-&lt;br /&gt;
| Philipp Lohmann|| X || pl||PhilippL||VCL/X11 (GSL) hacker||Sun Microsystems&lt;br /&gt;
|-&lt;br /&gt;
| Michel Loiseleur|| || mloiseleur|| coren`|| Bugfixes ||Linagora&lt;br /&gt;
|-&lt;br /&gt;
| Jackson Low|| X || xxjack12xx||||Porting||&lt;br /&gt;
|-&lt;br /&gt;
| Patrick Luby||   || pluby||||Mac||&lt;br /&gt;
|-&lt;br /&gt;
|Jingrong Luo ||  || Luo Jingrong|| Luo Jingrong|| ||[[Beijing Redflag Chinese 2000 Software Co., Ltd.|Beijing Redflag CH2000]]&lt;br /&gt;
|-&lt;br /&gt;
|Yue Lv ||  || lvyue || lvyue || Calc ||[[Beijing Redflag Chinese 2000 Software Co., Ltd.|Beijing Redflag CH2000]]&lt;br /&gt;
|-&lt;br /&gt;
|[[User:majun|Jun Ma]]||   ||majun51  ||  ||  writer  || [[Beijing Redflag Chinese 2000 Software Co., Ltd.|Beijing Redflag CH2000]]&lt;br /&gt;
|-&lt;br /&gt;
| Prasad Madhav || X || pmadhav || pmadhav || Buildbot || Intern@Intel &lt;br /&gt;
|-&lt;br /&gt;
| Babak Mahbod||   || bmahbod||||||&lt;br /&gt;
|-&lt;br /&gt;
| Martin Maher||   || mmaher||||Writer &amp;amp;amp; Filter chap||&lt;br /&gt;
|-&lt;br /&gt;
| Nakata Maho|| X || maho||_maho_||PL QA, PL JA, FreeBSD guy||Independent&lt;br /&gt;
|-&lt;br /&gt;
|Yonggang Mao || X || maoyonggang|| maoyg|| Calc ||&lt;br /&gt;
|-&lt;br /&gt;
| John Marmion|| X || jmarmion||||||&lt;br /&gt;
|-&lt;br /&gt;
| Andreas Martens|| X || ama||||PL Writer||Sun Microsystems&lt;br /&gt;
|-&lt;br /&gt;
| Shane M Mathews|| X || smmathews|| smmathews ||[[Impress:_OpenGL_rendered_transitions]]||student&lt;br /&gt;
|-&lt;br /&gt;
| Frank Mau|| X || fma||||tooling||Sun Microsystems&lt;br /&gt;
|-&lt;br /&gt;
| [[User:smsm1|Shaun McDonald]] || X || smsm1 || shaunmcdonald || Mac Port, buildbot MacPort1 || Graduate&lt;br /&gt;
|-&lt;br /&gt;
| Caolán McNamara|| X || cmc||caolan||CL Writer &amp;amp;amp; Filter man|| [http://www.redhat.com Red Hat Inc.]&lt;br /&gt;
|-&lt;br /&gt;
| Michael Meeks|| X || mmeeks||michael_||ugly hack-er, ESC||Novell, Inc.&lt;br /&gt;
|-&lt;br /&gt;
| Frank Meies|| X || fme||||Writer||Sun Microsystems&lt;br /&gt;
|-&lt;br /&gt;
| Federico Mena-Quintero||   || federicomena||federico||perfectionist||Novell, Inc.&lt;br /&gt;
|-&lt;br /&gt;
| Ismael Merzaq|| X || isma87||ismael_||Mac OSX native porting||Student&lt;br /&gt;
|-&lt;br /&gt;
| Michael Mi||   || mmi||||||&lt;br /&gt;
|-&lt;br /&gt;
| Björn Michaelsen|| X || b_michaelsen ||b_michaelsen|| Writer, Bookmarks, Performance, User Feedback Program ||Sun Microsystems&lt;br /&gt;
|-&lt;br /&gt;
| Björn Milcke|| X || bm||bm_||Chart||Sun Microsystems&lt;br /&gt;
|-&lt;br /&gt;
| Petr Mladek||   || pmladek||pmladek||SUSE RPMs, ooo-build releases||Novell, Inc.&lt;br /&gt;
|-&lt;br /&gt;
| Cyrille Moureaux|| X || cyrillem||Cyrille||||&lt;br /&gt;
|-&lt;br /&gt;
| [[User:Mmp|Matthias Müller-Prove]]|| X || mmp|| mprove|| [[User Experience]] || Sun Microsystems&lt;br /&gt;
|-&lt;br /&gt;
| [[User:Bluedwarf|Takashi Nakamoto]]|| || bluedwarf|| || Japanese || Student&lt;br /&gt;
|-&lt;br /&gt;
| Jan Navrátil || X || jnavrati || jnavrati || || [http://www.redhat.com Red Hat Inc.]&lt;br /&gt;
|-&lt;br /&gt;
| Niklas Nebel|| X || nn||||PL [[Calc]]||Sun Microsystems&lt;br /&gt;
|-&lt;br /&gt;
| Christoph Neumann|| X || cn||||[[UnoApiTest]]||Sun Microsystems&lt;br /&gt;
|-&lt;br /&gt;
| Frank Neumann|| X || fne||||MacPort||&lt;br /&gt;
|-&lt;br /&gt;
| NicelKM|| X || mnicel||nicel||||Novell, Inc.&lt;br /&gt;
|-&lt;br /&gt;
| Jan Nieuwenhuizen|| X || jcn||janneke||Layout code, hacker ||Novell, Inc.&lt;br /&gt;
|-&lt;br /&gt;
| [[User:ChristophNoack|Christoph Noack]]|| X || christophnoack ||christoph_n||CL [http://ux.openoffice.org User Experience]||&lt;br /&gt;
|-&lt;br /&gt;
| Bertram Nolte||   || bnolte||||||&lt;br /&gt;
|-&lt;br /&gt;
| Tomas O&amp;#039;Connor||   || toconnor||||Scripting Framework||&lt;br /&gt;
|-&lt;br /&gt;
| Maximilian Odendahl|| X  || mod||mod||[[Notes2]] [[SQL_Syntax_Highlighting]]|| Student / SEPT-Solutions&lt;br /&gt;
|-&lt;br /&gt;
| Takashi Ono || X  || tono ||   || MinGW port || Independent&lt;br /&gt;
|-&lt;br /&gt;
| Lars Oppermann|| X || lo||||||&lt;br /&gt;
|-&lt;br /&gt;
| Rakesh Pandit || X || rakeshpandit|| chacha_chaudhry|| Education Project - Starmath/fix module warnings|| Education Project&lt;br /&gt;
|-&lt;br /&gt;
| Rodrigo Parra Novo|| X || rodarvus||rodarvus||Gnumeric/Abiword OpenDocument Format support and port to Maemo||INdT (Instituto Nokia de Tecnologia)&lt;br /&gt;
|-&lt;br /&gt;
| Pierre Pasteau|| X || pastea_p || pierrep|| Education Project, SeaMonkey migration || Education Project&lt;br /&gt;
|-&lt;br /&gt;
| Edward Peterlin|| X || OPENSTEP||||Mac||&lt;br /&gt;
|-&lt;br /&gt;
| [[User:Fpe|Frank Peters]]|| X || fpe||||CL Documentation||Sun Microsystems&lt;br /&gt;
|-&lt;br /&gt;
| Christof Pintaske|| X || cp||||||Sun Microsystems&lt;br /&gt;
|-&lt;br /&gt;
| Ron Piterman||   || rpiterman||||||&lt;br /&gt;
|-&lt;br /&gt;
| Sebastien Plisson|| X  || plipli||plipli||Developer on Aqua port||OO Aqua Port&lt;br /&gt;
|-&lt;br /&gt;
| Noel Power||   || npower||noelp||VBA Interop, Scripting||Novell, Inc.&lt;br /&gt;
|-&lt;br /&gt;
| Nikolai Pretzell|| X || np || ||Autodoc, code quality||Sun Microsystems&lt;br /&gt;
|-&lt;br /&gt;
| Jonathan Pryor|| || jpryor || jonp || || Novell, Inc.&lt;br /&gt;
|-&lt;br /&gt;
| Canghua Qu||  || quch || Canghua || AutoTest, Graphics || [[Beijing Redflag Chinese 2000 Software Co., Ltd.|Beijing Redflag CH2000]]&lt;br /&gt;
|-&lt;br /&gt;
| Volker Quetschke|| X || vq||vq||W32-tcsh/bash build environment and dmake Hacker, ESC||Gravity Waves&lt;br /&gt;
|-&lt;br /&gt;
| Tino Rachui|| X || tra||tinor||GSL/Unix Hacker||Sun Microsystems&lt;br /&gt;
|-&lt;br /&gt;
| Goran Rakić || X ||goranrakic || || Serbian Native-Lang PL || &lt;br /&gt;
|-&lt;br /&gt;
| [[User:Kr|Kay Ramme]]|| X || kr||||PL UDK||Sun Microsystems&lt;br /&gt;
|-&lt;br /&gt;
| [[User:ErAck|Eike Rathke]]|| X || er||erAck||CL [[Calc]], engine; CL i18n; stricken with number formatter||Sun Microsystems&lt;br /&gt;
|-&lt;br /&gt;
| Michael Rauch|| X || mrauch||||NetBSD||&lt;br /&gt;
|-&lt;br /&gt;
| Jens-Heiner Rechtien|| X || hr||blauwal||RE; OOo SCM (CVS, CWS tooling); Porting; Compilers||Sun Microsystems&lt;br /&gt;
|-&lt;br /&gt;
| Daniel Rentz|| X || dr|| drr ||[[Calc]] Excel filter, UI||Sun Microsystems&lt;br /&gt;
|-&lt;br /&gt;
| Florian Reuter|| X || flr||||Writer filters||Novell, Inc.&lt;br /&gt;
|-&lt;br /&gt;
| Georg Richter|| X || grichter||georg||Base, native MySQL driver||MySQL AB&lt;br /&gt;
|-&lt;br /&gt;
| G. Roderick Singleton||   || grsingleton||grsingleton||Documentation||pathtech.org&lt;br /&gt;
|-&lt;br /&gt;
| Hennes Rohling|| X || hro||||GSL &amp;amp;amp; Util||Sun Microsystems&lt;br /&gt;
|-&lt;br /&gt;
| Bibek Sahu||   || Bibek||bibek||Impress pieces||Trees For Life&lt;br /&gt;
|-&lt;br /&gt;
| Andreas Schlüns|| X || as||||Framework||Sun Microsystems&lt;br /&gt;
|-&lt;br /&gt;
| Ingo Schmidt|| X || is||||(Native) Installation||Sun Microsystems&lt;br /&gt;
|-&lt;br /&gt;
| [[User:Jsc|J&amp;amp;uuml;rgen Schmidt]]|| X || jsc||jsc||PL API, CL Extensions, UNO, SDK||Sun Microsystems&lt;br /&gt;
|-&lt;br /&gt;
| [[User:Schmidtm|Matthias Schmidt]] ||   || schmidtm || schmidtm || Mac OSX Aqua Port || Sun Microsystems&lt;br /&gt;
|-&lt;br /&gt;
| Stephan Schäfer|| X || ssa||ssa||VCL||Sun Microsystems&lt;br /&gt;
|-&lt;br /&gt;
| Frank Schönheit|| X || fs||FrankS||Database Access, Forms||Sun Microsystems&lt;br /&gt;
|-&lt;br /&gt;
| [[User:Sus|Svante Schubert]]|| X || sus||Svante||XML &amp;amp; ODFTOOLKIT co-lead, ODFDOM project chair, Member of OASIS ODF TC, OASIS OIC TC, OASIS ODF SC Metadata||Sun Microsystems&lt;br /&gt;
|-&lt;br /&gt;
| [[User:Sts|Stella Schulze]]|| X || sts||||[http://ui.openoffice.org/nonav/VisualDesign/ Visual Design]||Sun Microsystems&lt;br /&gt;
|-&lt;br /&gt;
| Julian Seward || || sewardj || || valgrind ||&lt;br /&gt;
|-&lt;br /&gt;
| Darragh Sherwin||   || dsherwin||darragh||E-Legislation / E-GovSystems||Propylon&lt;br /&gt;
|-&lt;br /&gt;
| Wei Guo Shi || X  || shiwg ||   || Accessibility and Smart Suite filter || IBM Corp.&lt;br /&gt;
|-&lt;br /&gt;
|[[User:Robertzhou | RobertZhou]]||  || robertzhou|| shizhoubo|| [[Framework]] ||&lt;br /&gt;
|-&lt;br /&gt;
| Raul Siddhartha||   || rsiddhartha||raul||GTK File Selector||Novell, Inc.&lt;br /&gt;
|-&lt;br /&gt;
| Sarah Smith||   || ssmith||||||&lt;br /&gt;
|-&lt;br /&gt;
| [[User:mox|Mox Soini]] || X || mox || Moxed || Mac Porting || &lt;br /&gt;
|-&lt;br /&gt;
| Rajesh Sola||   || rajeshsola||sola||misc.||NOSIP&lt;br /&gt;
|-&lt;br /&gt;
| Kai Sommerfeld|| X || kso||||manager &amp;amp;amp; hacker||Sun Microsystems&lt;br /&gt;
|-&lt;br /&gt;
| Oliver Specht|| X || os||||PL UI||Sun Microsystems&lt;br /&gt;
|-&lt;br /&gt;
| Jörg Spindler||   || jspindler||||||&lt;br /&gt;
|-&lt;br /&gt;
| [[User:Rescue|Joey Stanford]] ||  || Rescue/k0fcc || Rinchen || CL [http://eo.openoffice.org/ Esperanto native-lang project] || [http://canonical.com Canonical] ||&lt;br /&gt;
|-&lt;br /&gt;
| Fridrich Štrba|| X || fridrich_strba||Fridrich||Word Perfect Hacker||Novell, Inc.&lt;br /&gt;
|-&lt;br /&gt;
| Keith Stribley|| X || kstribley||||Graphite fonts, Myanmar l10n||&lt;br /&gt;
|-&lt;br /&gt;
| [[User:Muthusuba|Muthu Subramanian]]|| X || muthusuba||muthusuba||misc.||&lt;br /&gt;
|-&lt;br /&gt;
| Louis Suárez-Potts||   || louis||louis||Community Manager||Collab.net&lt;br /&gt;
|-&lt;br /&gt;
|Quanfa Tang ||  || tqfa|| tangquanfa|| Calc || [[Beijing Redflag Chinese 2000 Software Co., Ltd.|Beijing Redflag CH2000]]&lt;br /&gt;
|-&lt;br /&gt;
| David Tardon || X || dtardon || dtardon || || [http://www.redhat.com Red Hat Inc.]&lt;br /&gt;
|-&lt;br /&gt;
| Stefan Taxhet|| X || st||stx12||CC, interpersonal problem fixer||Sun Microsystems&lt;br /&gt;
|-&lt;br /&gt;
| Armin Theissen||   || armin||||||&lt;br /&gt;
|-&lt;br /&gt;
| Caio Tiago Oliveira|| X || asrail||asrail||CL QA, release testing pt-BR builds||BrOffice.org&lt;br /&gt;
|-&lt;br /&gt;
| Jan Tietjens||   || tietjens||||||&lt;br /&gt;
|-&lt;br /&gt;
| Rüdiger Timm|| X || rt|| rtimm ||RE||Sun Microsystems&lt;br /&gt;
|-&lt;br /&gt;
| [[User:mt|Malte Timmermann]]|| X || mt|| Malte || Accessibility, Security, Performance||Sun Microsystems&lt;br /&gt;
|-&lt;br /&gt;
| Gerhard Tonn||   || tonn||||s390||&lt;br /&gt;
|-&lt;br /&gt;
| Willem van Dorp||   || willem.vandorp||||||&lt;br /&gt;
|-&lt;br /&gt;
| Tom Verbeek|| X || tv|||| ||&lt;br /&gt;
|-&lt;br /&gt;
| Sander Vesik||   || svesik||||||&lt;br /&gt;
|-&lt;br /&gt;
| Daniel Vogelheim|| X || dvo||||XML||&lt;br /&gt;
|-&lt;br /&gt;
| Mikhail Voitenko|| X || mav||mav||Framework||Sun Microsystems&lt;br /&gt;
|-&lt;br /&gt;
| Robert Vojta|| X || rvojta||rvojta||Mac OS X related issue||&lt;br /&gt;
|-&lt;br /&gt;
| Dirk Völzke|| X || dv||||Installation||Sun Microsystems&lt;br /&gt;
|-&lt;br /&gt;
|Xu Ming Wang || X || flyccloud or Wangxum ||  || Calc || IBM Corp.&lt;br /&gt;
|-&lt;br /&gt;
| [[User:Sparcmoz|Jim Watson]]|| X || sparcmoz|| sparcmoz||GNU Linux sparc porter||clug.org.au&lt;br /&gt;
|-&lt;br /&gt;
| [[User:Weiz |Zhao Wei ]] ||   || weiz || weiz || Chart2 || [[Beijing Redflag Chinese 2000 Software Co., Ltd.|Beijing Redflag CH2000]]&lt;br /&gt;
|-&lt;br /&gt;
| Armin Weiss|| X || aw||||||Sun Microsystems&lt;br /&gt;
|-&lt;br /&gt;
| Gerd Weiss|| X || gm||||RE||Sun Microsystems&lt;br /&gt;
|-&lt;br /&gt;
| Dan Williams|| X || fa||dcbw||Mac et. al. hacker|| [http://www.redhat.com Red Hat Inc.]&lt;br /&gt;
|-&lt;br /&gt;
| Oliver Wittmann|| X || od||Writer||||Sun Microsystems&lt;br /&gt;
|-&lt;br /&gt;
|[[User:wuy|Yan Wu]] || X || wuy ||   ||Framework ||&lt;br /&gt;
|-&lt;br /&gt;
| Stephan Wunderlich|| X || sw||||||&lt;br /&gt;
|- &lt;br /&gt;
| Antonio Xu|| X || antoxu || antoxu || Async dialogs, PRC improvements || Intel Corporation&lt;br /&gt;
|-&lt;br /&gt;
|Dehua Xu ||   || xudehua || xudh  ||&lt;br /&gt;
|-&lt;br /&gt;
| Steve Yin || X  || steve_yin || steve_yin || Microsoft Office file format, PDF, Accessibility, ODF || IBM Corp.&lt;br /&gt;
|-&lt;br /&gt;
| Kohei Yoshida|| X || kohei||kohei_||[[Calc]] hacker, Calc optimization solver developer||Novell, Inc.&lt;br /&gt;
|-&lt;br /&gt;
| Guoqiang Yu|| X || yugq || yugq|| Performance || [[Beijing Redflag Chinese 2000 Software Co., Ltd.|Beijing Redflag CH2000]]&lt;br /&gt;
|-&lt;br /&gt;
| Xiaoyang Yu||   || || ||Disk block reordering||Intel Corporation &lt;br /&gt;
|-&lt;br /&gt;
| George Zahopoulos|| X || georgez||||||&lt;br /&gt;
|-&lt;br /&gt;
| Kurt Zenker|| X || kz||smoketester||RE||Sun Microsystems&lt;br /&gt;
|-&lt;br /&gt;
|[[User:Zhangxiaofei|Xiaofei Zhang]]||  || Zhangxiaofei || zhangxiaofei/FelixZ || [[Framework]] ||[[Beijing Redflag Chinese 2000 Software Co., Ltd.|Beijing Redflag CH2000]]&lt;br /&gt;
|-&lt;br /&gt;
|Jianwei Zhao ||   || zhaojianwei || zhaojianwei ||  Swriter  || [[Beijing Redflag Chinese 2000 Software Co., Ltd.|Beijing Redflag CH2000]]&lt;br /&gt;
|-&lt;br /&gt;
| Jeremy Zheng|| X || zhiming || Jeremy || Async dialogs, PRC improvements || Intel Corporation&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== QA Engineers ===&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;2&amp;quot; cellpadding=&amp;quot;4&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;margin: 1em 1em 1em 0; background: #f9f9f9; border: 1px #aaa solid; border-collapse: collapse;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Name ||CVS||@openoffice.org || [[IRC Communication]] || Interested modules || Notes || Affiliation&lt;br /&gt;
|-&lt;br /&gt;
| Stefan Baltzer||||sba||||writer||||Sun Microsystems&lt;br /&gt;
|-&lt;br /&gt;
| Thorsten Bosbach||X||tbo||||framework, testautomation||framework test automation||Sun Microsystems&lt;br /&gt;
|-&lt;br /&gt;
| Oliver Craemer||X||oc||||[[Calc]], testautomation||calc test automation||Sun Microsystems&lt;br /&gt;
|-&lt;br /&gt;
| Helge Delfs||X||hde||||testautomation, writer||Test automation||Sun Microsystems&lt;br /&gt;
|-&lt;br /&gt;
| Fredrik Haegg||X||fha||||writer, testautomation||Writer test automation||&lt;br /&gt;
|-&lt;br /&gt;
| Hasan Ilter||||hi||||writer, printing, pdf export||||Sun Microsystems&lt;br /&gt;
|-&lt;br /&gt;
| Michael Rüß||||mru||||writer, word im/export||||Sun Microsystems&lt;br /&gt;
|-&lt;br /&gt;
| Éric Savary||||es||||writer, accessibility||||Sun Microsystems&lt;br /&gt;
|-&lt;br /&gt;
| [[User:jsi|Joerg Sievers]]||X||jsi||jsi_sun||chart, xml, testautomation||Chart2, XML test automation||Sun Microsystems&lt;br /&gt;
|-&lt;br /&gt;
| Joerg Skottke||X||jsk||skotti||framework, qa/qatesttool||Framework test automation||Sun Microsystems&lt;br /&gt;
|-&lt;br /&gt;
| Marc Neumann||X||msc||||database, testautomation||Database access test automation||Sun Microsystems&lt;br /&gt;
|-&lt;br /&gt;
| Chris Lukasiak||||clu||||database||||Sun Microsystems&lt;br /&gt;
|-&lt;br /&gt;
| Frank Stecher||||fst||||[[Calc]]||||Sun Microsystems&lt;br /&gt;
|-&lt;br /&gt;
| Jack Warchold|||| jw||||writer, import/export filters||||&lt;br /&gt;
|-&lt;br /&gt;
| Uwe Luebbers||||ul||||framework||||Sun Microsystems&lt;br /&gt;
|-&lt;br /&gt;
| Thorsten Martens||||tm||||framework||||Sun Microsystems&lt;br /&gt;
|-&lt;br /&gt;
| Olaf Felka|||| of||of_sun||framework, installation||||Sun Microsystems&lt;br /&gt;
|-&lt;br /&gt;
| Thomas Klarhoefer||||kla||||chart||||Sun Microsystems&lt;br /&gt;
|-&lt;br /&gt;
| Wolfram Garten||X|| wg||||draw, impress||draw, impress test automation||Sun Microsystems&lt;br /&gt;
|-&lt;br /&gt;
| Christian Guenther||||cgu||||draw, impress||||Sun Microsystems&lt;br /&gt;
|-&lt;br /&gt;
| Ulf Stroehler||   || us||||||Sun Microsystems&lt;br /&gt;
|-&lt;br /&gt;
| [[User:Thorsten_Ziehm|Thorsten Ziehm]]||||| thorstenziehm||||||QA lead||Sun Microsystems&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
We are tracking pending JCAs in the document [[Pending JCAs]].&lt;br /&gt;
&lt;br /&gt;
== Related Pages ==&lt;br /&gt;
* [[Commit Rights]]&lt;br /&gt;
* [[Contributing Patches]]&lt;br /&gt;
* [[User_Experience/Community|User Experience Team]]&lt;br /&gt;
* A map of OOo developers around the world is available at http://www.frappr.com/ooodev, please add yourself to the map if you&amp;#039;re involved in OOo development. It&amp;#039;s just fun to see who&amp;#039;s where :-)&lt;br /&gt;
&lt;br /&gt;
[[Category:Development]]&lt;/div&gt;</summary>
		<author><name>Npower</name></author>
	</entry>
	<entry>
		<id>https://wiki.openoffice.org/w/index.php?title=Porting_notes&amp;diff=115519</id>
		<title>Porting notes</title>
		<link rel="alternate" type="text/html" href="https://wiki.openoffice.org/w/index.php?title=Porting_notes&amp;diff=115519"/>
		<updated>2009-03-11T11:09:30Z</updated>

		<summary type="html">&lt;p&gt;Npower: /* [possibly incomplete ] List of Writer Objects to port from helperapi */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== Things to watch out for ===&lt;br /&gt;
* The mapping of the vba constants is different. Take for example the &amp;lt;tt&amp;gt;xlGuess&amp;lt;/tt&amp;gt; constant, in VBA it&amp;#039;s fully qualified name is &amp;lt;tt&amp;gt;Excel.XlYesNoGuess.xlGuess&amp;lt;/tt&amp;gt;, in the helperapi it&amp;#039;s &amp;lt;tt&amp;gt;com.sun.star.helper.constant.XlYesNoGuess.xlGuess&amp;lt;/tt&amp;gt; and in oovbaapi it&amp;#039;s &amp;lt;tt&amp;gt;org.openoffice.excel.XlYesNoGuess.xlGuess&amp;lt;/tt&amp;gt; &lt;br /&gt;
* All objects in the helperapi extend [http://api.openoffice.org/source/browse/*checkout*/api/helperapi/impl/com/sun/star/helper/HelperInterfaceAdaptor.java?rev=1.1 HelperInterfaceAdaptor], nothing similar (yet) exists in oovbaapi so this can be ignored in the implementation&lt;br /&gt;
* There are a quite few helper classes in the helperapi project e.g. &amp;lt;tt&amp;gt;RangeHelper.java&amp;lt;/tt&amp;gt; they shouldn&amp;#039;t be confused with the actual implementation objects we wish to port.&lt;br /&gt;
* classes and idl files of the same name can exist in multiple namespaces and this can be confusing. Because the helperapi was written with both the word and excel api(s) in mind there can be classes that share a common implementation and interfaces e.g.&lt;br /&gt;
** &amp;lt;tt&amp;gt;com/sun/star/helper/calc/XShape.idl&amp;lt;/tt&amp;gt;&lt;br /&gt;
** &amp;lt;tt&amp;gt;com/sun/star/helper/common/XShape.idl&amp;lt;/tt&amp;gt;&lt;br /&gt;
** &amp;lt;tt&amp;gt;com/sun/star/helper/writer/XShape.idl&amp;lt;/tt&amp;gt;&lt;br /&gt;
* Collections, these are handled differently see implementing a vba [[Porting notes#Collection|Collection]] in oovbaapi&lt;br /&gt;
* Every helperapi idl method defines [http://api.openoffice.org/source/browse/*checkout*/api/udkapi/com/sun/star/script/BasicErrorException.idl BasicErrorException] which allows and api method to transfer an error code and associated string paramater to basic.&lt;br /&gt;
&lt;br /&gt;
=== Hints for porting idl ===&lt;br /&gt;
==== Objects with Default Properties ====&lt;br /&gt;
This is something not handled by the helperapi but something you should be aware of when implementing a vba compatibility object. What is a default property, an example probably explains the concept better.&lt;br /&gt;
&lt;br /&gt;
 Range(&amp;quot;a1&amp;quot;) = &amp;quot;text&amp;quot;&lt;br /&gt;
&lt;br /&gt;
is a short cut for&lt;br /&gt;
&lt;br /&gt;
 Range(&amp;quot;a1&amp;quot;).Value = &amp;quot;text&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;Value&amp;lt;/tt&amp;gt; is a default property in the example above. We can provide similar behavior in basic with a compatibility api object ensuring the object implements [http://api.openoffice.org/source/browse/*checkout*/api/udkapi/com/sun/star/script/XDefaultProperty.idl XDefaultProperty.idl ]&lt;br /&gt;
&lt;br /&gt;
==== Objects with Default Method ====&lt;br /&gt;
&lt;br /&gt;
Similar to above some vba objects have a default method e.g. the &amp;lt;tt&amp;gt;Collection&amp;lt;/tt&amp;gt; object&lt;br /&gt;
&lt;br /&gt;
 set col = Sheets&lt;br /&gt;
 msgbox col(1).Name&lt;br /&gt;
&lt;br /&gt;
is a short cut for&lt;br /&gt;
&lt;br /&gt;
 set col = Sheets&lt;br /&gt;
 msgbox col.Item(1).Name&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;Item&amp;lt;/tt&amp;gt; is a default method in the example above. We can provide similar behavior in basic with a compatibility api object ensuring the object implements [http://api.openoffice.org/source/browse/*checkout*/api/udkapi/com/sun/star/script/XDefaultMethod.idl XDefaultMethod.idl ]&lt;br /&gt;
&lt;br /&gt;
==== Porting Collection objects ====&lt;br /&gt;
Generally all collection objects have a &amp;lt;tt&amp;gt;Count&amp;lt;/tt&amp;gt; and an &amp;lt;tt&amp;gt;Item&amp;lt;/tt&amp;gt; method and additionally the behaviour mentioned above. Also Collection objects can be used in a &amp;lt;tt&amp;gt;For Each&amp;lt;/tt&amp;gt; loop. To cater for that a helper implementation object &amp;lt;tt&amp;gt;ScVbaCollectionBaseImpl&amp;lt;/tt&amp;gt; provides the necessary information to the basic runtime to allow it to provide the classic vba &amp;lt;tt&amp;gt;Collection&amp;lt;/tt&amp;gt; class syntax support. It also requires to be initialised by an XIndexAccess implementation. Additionally the class inheriting from  &amp;lt;tt&amp;gt;ScVbaCollectionBaseImpl&amp;lt;/tt&amp;gt; must provide the  translation between the object iterated ( via XIndexAccess ) and the corrosponding compatibilty object returned to openoffice basic via the the &amp;lt;tt&amp;gt;createCollectionObject&amp;lt;/tt&amp;gt; method.&lt;br /&gt;
&lt;br /&gt;
A example of a ported &amp;lt;tt&amp;gt;Collection&amp;lt;/tt&amp;gt; object can be found in the [[Porting example]] section&lt;br /&gt;
&lt;br /&gt;
=== [possibly incomplete ] List of Calc Objects to port from helperapi ===&lt;br /&gt;
{| style=&amp;quot;vertical-align:top; text-align:left; background-color:#efefef;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background-color:#d6d6d6;font-weight:bold;&amp;quot; &lt;br /&gt;
| Object || helperapi implementation name || Porting started by || Status || Notes&lt;br /&gt;
|-&lt;br /&gt;
| XAreas.idl || xxxx  ||  || seems complete ||  ||&lt;br /&gt;
|-&lt;br /&gt;
| XAutoFilter.idl || [http://api.openoffice.org/source/browse/*checkout*/api/helperapi/impl/com/sun/star/helper/calc/AutoFilterImpl.java AutoFilterImpl] || hanbo || in progress || there is a partial (untested) implementation in the porting example section, would be nice for some one to finish&lt;br /&gt;
|-&lt;br /&gt;
| XFilter.idl || [http://api.openoffice.org/source/browse/*checkout*/api/helperapi/impl/com/sun/star/helper/calc/FilterImpl.java FilterImpl.java]  || hanbo || in progress || see above.&lt;br /&gt;
|-&lt;br /&gt;
| XFilters.idl || [http://api.openoffice.org/source/browse/*checkout*/api/helperapi/impl/com/sun/star/helper/calc/FiltersImpl.java FiltersImpl.java] || hanbo || in progress || see above.&lt;br /&gt;
|-&lt;br /&gt;
| XAxes.idl || [http://api.openoffice.org/source/browse/*checkout*/api/helperapi/impl/com/sun/star/helper/calc/AxesImpl.java AxesImpl.java]  ||  npower || in progress ||&lt;br /&gt;
|-&lt;br /&gt;
| XAxis.idl || [http://api.openoffice.org/source/browse/*checkout*/api/helperapi/impl/com/sun/star/helper/calc/AxesImpl.java AxisImpl.java]  || npower || in progress  ||&lt;br /&gt;
|-&lt;br /&gt;
| XAxisTitle.idl || [http://api.openoffice.org/source/browse/*checkout*/api/helperapi/impl/com/sun/star/helper/calc/AxesTitleImpl.java AxisTitleImpl.java] ||  npower || complete  || not-tested&lt;br /&gt;
|-&lt;br /&gt;
| XCharacters.idl || xxxx  ||  || complete ||&lt;br /&gt;
|-&lt;br /&gt;
| XCalc.idl || xxxx  || not required for porting see [[Application Object]] ||  || This is not a &amp;#039;real&amp;#039; object but in a collection of global method/attributes that probably should be part of the XApplication.idl interface&lt;br /&gt;
|-&lt;br /&gt;
| XChartObject.idl || [http://api.openoffice.org/source/browse/*checkout*/api/helperapi/impl/com/sun/star/helper/calc/ChartObjectImpl.java ChartObjectImpl.java] || npower || complete || not-tested&lt;br /&gt;
|-&lt;br /&gt;
| XChartObjects.idl || [http://api.openoffice.org/source/browse/*checkout*/api/helperapi/impl/com/sun/star/helper/calc/ChartObjectsImpl.java ChartObjectsImpl.java] || npower || complete || not-tested &lt;br /&gt;
|-&lt;br /&gt;
| XChart.idl || [http://api.openoffice.org/source/browse/*checkout*/api/helperapi/impl/com/sun/star/helper/calc/ChartImpl.java ChartImpl.java] || npower || in progress || &lt;br /&gt;
|-&lt;br /&gt;
| XCharts.idl ||  [http://api.openoffice.org/source/browse/*checkout*/api/helperapi/impl/com/sun/star/helper/calc/ChartsImpl.java ChartsImpl.java]  ||  npower ||  in progress ||&lt;br /&gt;
|-&lt;br /&gt;
| XChartTitle.idl || [http://api.openoffice.org/source/browse/*checkout*/api/helperapi/impl/com/sun/star/helper/calc/ChartTileImpl.java ChartTitleImpl.java]  || npower || complete || not-tested&lt;br /&gt;
|-&lt;br /&gt;
| XColorFormat.idl || xxxx  ||  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
| XComment.idl || xxxx  ||  || complete ||&lt;br /&gt;
|-&lt;br /&gt;
| XDataLabel.idl || [http://api.openoffice.org/source/browse/*checkout*/api/helperapi/impl/com/sun/star/helper/calc/DataLabelImp.java DataLabelImpl.java] || npower || in progress ||&lt;br /&gt;
|-&lt;br /&gt;
| XDataLabels.idl || [http://api.openoffice.org/source/browse/*checkout*/api/helperapi/impl/com/sun/star/helper/calc/DataLabelsImp.java DataLabelsImpl.java] ||  npower || in progress ||&lt;br /&gt;
|-&lt;br /&gt;
| XFont.idl || xxxx  ||  || complete ||&lt;br /&gt;
|-&lt;br /&gt;
| XFormatCondition.idl || xxxx  ||  npower || complete || not tested&lt;br /&gt;
|-&lt;br /&gt;
| XFormatConditions.idl || xxxx  ||  npower || complete || not tested&lt;br /&gt;
|-&lt;br /&gt;
| XFormat.idl || xxxx  || npower || complete  || not tested &lt;br /&gt;
|-&lt;br /&gt;
| XHPageBreak.idl || xxxx  ||  || complete ||&lt;br /&gt;
|-&lt;br /&gt;
| XHPageBreaks.idl || xxxx  ||  || complete ||&lt;br /&gt;
|-&lt;br /&gt;
| XInterior.idl || xxxx  ||  || complete ||&lt;br /&gt;
|-&lt;br /&gt;
| XName.idl || NameImp.java  || sola, Amelia || complete || not-tested ||&lt;br /&gt;
|-&lt;br /&gt;
| XNames.idl || NamesImp.java  || sola, Amelia || complete ||not-tested ||&lt;br /&gt;
|-&lt;br /&gt;
| XOutline.idl || xxxx  ||  || complete ||&lt;br /&gt;
|-&lt;br /&gt;
| XPageBreak.idl || xxxx  ||  || complete ||&lt;br /&gt;
|-&lt;br /&gt;
|[http://api.openoffice.org/source/browse/api/helperapi/com/sun/star/helper/calc/XPageSetup.idl XPageSetup.idl] || [http://api.openoffice.org/source/browse/api/helperapi/impl/com/sun/star/helper/calc/PageSetupImpl.java PageSetupImpl]  || Fong ||complete ||&lt;br /&gt;
|-&lt;br /&gt;
|[http://api.openoffice.org/source/browse/api/helperapi/com/sun/star/helper/calc/XPane.idl XPane.idl] || [http://api.openoffice.org/source/browse/api/helperapi/impl/com/sun/star/helper/calc/PaneImpl.java PaneImpl]  || Jiao.Jianhua || calc complete||&lt;br /&gt;
|-&lt;br /&gt;
| XPoint.idl || xxxx  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
| XPoints.idl || xxxx  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
| XProtection.idl || xxxx  || penghang || in progress ||&lt;br /&gt;
|-&lt;br /&gt;
| XQueryTable.idl || xxxx  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
| XQueryTables.idl || xxxx  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
| XSeriersCollection.idl || xxxx  ||   || complete ||&lt;br /&gt;
|-&lt;br /&gt;
| XSeriers.idl || xxxx  ||   || complete ||&lt;br /&gt;
|-&lt;br /&gt;
| XShape.idl || xxxx  || jiao.jianhua || in progress ||&lt;br /&gt;
|-&lt;br /&gt;
| XShapes.idl || xxxx  || jiao.jianhua  || calc complete, no full text ||&lt;br /&gt;
|-&lt;br /&gt;
| XSheet.idl || xxxx  ||   || complete ||&lt;br /&gt;
|-&lt;br /&gt;
| XSheets.idl || xxxx  ||   || complete ||&lt;br /&gt;
|-&lt;br /&gt;
| XStyle.idl || xxxx  ||  npower || complete || not tested&lt;br /&gt;
|-&lt;br /&gt;
| XStyles.idl || xxxx  || npower || inprogress ||&lt;br /&gt;
|-&lt;br /&gt;
| XTextFrame.idl || xxxx  ||  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
| XTitle.idl || xxxx  ||  || complete ||&lt;br /&gt;
|-&lt;br /&gt;
| XVPageBreak.idl || xxxx  || wanglibing || complete ||&lt;br /&gt;
|-&lt;br /&gt;
| XVPageBreaks.idl|| xxxx  || wanglibing || complete ||&lt;br /&gt;
|-&lt;br /&gt;
| XWindow.idl || xxxx  ||  ||  complete ||&lt;br /&gt;
|-&lt;br /&gt;
| XWindows.idl || xxxx  ||  ||  complete ||&lt;br /&gt;
|-&lt;br /&gt;
| XWorkbook.idl || xxxx  ||  ||  complete ||&lt;br /&gt;
|-&lt;br /&gt;
| XWorkbooks.idl || xxxx  ||  ||  complete ||&lt;br /&gt;
|-&lt;br /&gt;
| XWorksheetfunction.idl || xxxx  ||  ||  complete ||&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== [possibly incomplete ] List of Writer Objects to port from helperapi ===&lt;br /&gt;
{| style=&amp;quot;vertical-align:top; text-align:left; background-color:#efefef;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background-color:#d6d6d6;font-weight:bold;&amp;quot; &lt;br /&gt;
| Object || helperapi implementation name || Porting started by || Status || Notes&lt;br /&gt;
|-&lt;br /&gt;
| Application ||   || Fong || in progress  || ||&lt;br /&gt;
|-&lt;br /&gt;
| AutoTextEntry ||   || Fong || in progress ||&lt;br /&gt;
|-&lt;br /&gt;
| AutoTextEntries ||   || Fong || in progress ||  ||&lt;br /&gt;
|-&lt;br /&gt;
| Border ||   ||  ||  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
| Borders ||   ||  ||  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
| Bookmark ||   || Fong  || in progress ||  ||&lt;br /&gt;
|-&lt;br /&gt;
| Bookmarks ||   || Fong  || in progress ||  ||&lt;br /&gt;
|-&lt;br /&gt;
| Cell ||   ||  ||  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
| Cells ||   ||  ||   ||&lt;br /&gt;
|-&lt;br /&gt;
| CommandBar ||   ||  Fong  || in progress ||  ||&lt;br /&gt;
|-&lt;br /&gt;
| CommandBarButton ||   || Fong  || in progress ||  ||&lt;br /&gt;
|-&lt;br /&gt;
| CommandBars ||   ||Fong  || in progress||  ||&lt;br /&gt;
|-&lt;br /&gt;
| Dialog ||   ||  ||  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
| Dialogs ||   ||  ||   ||&lt;br /&gt;
|-&lt;br /&gt;
| Document ||   ||Fong  || in progress ||  ||&lt;br /&gt;
|-&lt;br /&gt;
| DocumentProperty ||   || npower || in progress ||  ||&lt;br /&gt;
|-&lt;br /&gt;
| DocumentProperties ||   || npower || in progress ||  ||&lt;br /&gt;
|-&lt;br /&gt;
| Field ||   ||  ||   ||&lt;br /&gt;
|-&lt;br /&gt;
| Fields ||   ||  ||  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
| FillFormat ||   ||  ||  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
| Find ||   || Fong || in progress  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
| Font ||   || npower || in progress ||  ||&lt;br /&gt;
|-&lt;br /&gt;
| FormField ||   ||  ||   ||&lt;br /&gt;
|-&lt;br /&gt;
| FormFields ||   ||  ||  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
| Frame ||   ||  ||  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
| Frames ||   ||  ||  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
| HeaderFooter ||   ||  ||  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
| LineFormat ||   ||  ||   ||&lt;br /&gt;
|-&lt;br /&gt;
| ListFormat ||   ||  ||  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
| Global ||   || npower || in progress ||  ||&lt;br /&gt;
|-&lt;br /&gt;
| Options ||   || Fong || in progress  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
| Pane ||   ||  Fong || in progress   ||&lt;br /&gt;
|-&lt;br /&gt;
| Panes ||   || Fong || in progress ||  ||&lt;br /&gt;
|-&lt;br /&gt;
| Paragraph ||   || Fong || in progress ||  ||&lt;br /&gt;
|-&lt;br /&gt;
| Paragraphs ||   || Fong || in progress  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
| ParagraphFormat ||   || Fong  || in progress ||  ||&lt;br /&gt;
|-&lt;br /&gt;
| PageSetup ||   ||  ||   ||&lt;br /&gt;
|-&lt;br /&gt;
| Range ||   || Fong  || in progress  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
| Replacement ||   || Fong || in progress  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
| Row ||   ||  ||  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
| Rows ||   ||  ||  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
| Selection ||   ||  Fong  || in progress  ||&lt;br /&gt;
|-&lt;br /&gt;
| Sections ||   ||  ||  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
| Shape ||   ||  ||  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
| Shapes ||   ||  ||  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
| ShapeRange ||   ||  ||  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
| Style ||   ||  ||   ||&lt;br /&gt;
|-&lt;br /&gt;
| Styles ||   ||  ||  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
| System ||   || Fong  || in progress  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
| Borders ||   ||  ||  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
| Table ||   ||  ||  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
| Tables ||   ||  ||   ||&lt;br /&gt;
|-&lt;br /&gt;
| TableOfContent ||   ||  ||  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
| TableOfContents ||   ||  ||  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
| TabStop ||   ||  ||  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
| TabStops ||   ||  ||  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
| Template ||   || npower || in progress ||&lt;br /&gt;
|-&lt;br /&gt;
| TextFrame ||   ||  ||  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
| Variable ||   ||  Fong || in progress  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
| Variables ||   ||  Fong || in progress  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
| View ||   ||  Fong || in progress  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
| Window ||   || Fong  || in progress  ||&lt;br /&gt;
|-&lt;br /&gt;
| WordBasic ||   ||  ||  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
| WrapFormat ||   ||  ||  ||  ||&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Missing attributes/methods ( common to helperapi objects ) to port ===&lt;br /&gt;
[[Application Object]]&lt;br /&gt;
&lt;br /&gt;
[[Range Object]]&lt;/div&gt;</summary>
		<author><name>Npower</name></author>
	</entry>
	<entry>
		<id>https://wiki.openoffice.org/w/index.php?title=Porting_notes&amp;diff=107527</id>
		<title>Porting notes</title>
		<link rel="alternate" type="text/html" href="https://wiki.openoffice.org/w/index.php?title=Porting_notes&amp;diff=107527"/>
		<updated>2009-01-14T11:54:59Z</updated>

		<summary type="html">&lt;p&gt;Npower: /* [possibly incomplete ] List of Writer Objects to port from helperapi */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== Things to watch out for ===&lt;br /&gt;
* The mapping of the vba constants is different. Take for example the &amp;lt;tt&amp;gt;xlGuess&amp;lt;/tt&amp;gt; constant, in VBA it&amp;#039;s fully qualified name is &amp;lt;tt&amp;gt;Excel.XlYesNoGuess.xlGuess&amp;lt;/tt&amp;gt;, in the helperapi it&amp;#039;s &amp;lt;tt&amp;gt;com.sun.star.helper.constant.XlYesNoGuess.xlGuess&amp;lt;/tt&amp;gt; and in oovbaapi it&amp;#039;s &amp;lt;tt&amp;gt;org.openoffice.excel.XlYesNoGuess.xlGuess&amp;lt;/tt&amp;gt; &lt;br /&gt;
* All objects in the helperapi extend [http://api.openoffice.org/source/browse/*checkout*/api/helperapi/impl/com/sun/star/helper/HelperInterfaceAdaptor.java?rev=1.1 HelperInterfaceAdaptor], nothing similar (yet) exists in oovbaapi so this can be ignored in the implementation&lt;br /&gt;
* There are a quite few helper classes in the helperapi project e.g. &amp;lt;tt&amp;gt;RangeHelper.java&amp;lt;/tt&amp;gt; they shouldn&amp;#039;t be confused with the actual implementation objects we wish to port.&lt;br /&gt;
* classes and idl files of the same name can exist in multiple namespaces and this can be confusing. Because the helperapi was written with both the word and excel api(s) in mind there can be classes that share a common implementation and interfaces e.g.&lt;br /&gt;
** &amp;lt;tt&amp;gt;com/sun/star/helper/calc/XShape.idl&amp;lt;/tt&amp;gt;&lt;br /&gt;
** &amp;lt;tt&amp;gt;com/sun/star/helper/common/XShape.idl&amp;lt;/tt&amp;gt;&lt;br /&gt;
** &amp;lt;tt&amp;gt;com/sun/star/helper/writer/XShape.idl&amp;lt;/tt&amp;gt;&lt;br /&gt;
* Collections, these are handled differently see implementing a vba [[Porting notes#Collection|Collection]] in oovbaapi&lt;br /&gt;
* Every helperapi idl method defines [http://api.openoffice.org/source/browse/*checkout*/api/udkapi/com/sun/star/script/BasicErrorException.idl BasicErrorException] which allows and api method to transfer an error code and associated string paramater to basic.&lt;br /&gt;
&lt;br /&gt;
=== Hints for porting idl ===&lt;br /&gt;
==== Objects with Default Properties ====&lt;br /&gt;
This is something not handled by the helperapi but something you should be aware of when implementing a vba compatibility object. What is a default property, an example probably explains the concept better.&lt;br /&gt;
&lt;br /&gt;
 Range(&amp;quot;a1&amp;quot;) = &amp;quot;text&amp;quot;&lt;br /&gt;
&lt;br /&gt;
is a short cut for&lt;br /&gt;
&lt;br /&gt;
 Range(&amp;quot;a1&amp;quot;).Value = &amp;quot;text&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;Value&amp;lt;/tt&amp;gt; is a default property in the example above. We can provide similar behavior in basic with a compatibility api object ensuring the object implements [http://api.openoffice.org/source/browse/*checkout*/api/udkapi/com/sun/star/script/XDefaultProperty.idl XDefaultProperty.idl ]&lt;br /&gt;
&lt;br /&gt;
==== Objects with Default Method ====&lt;br /&gt;
&lt;br /&gt;
Similar to above some vba objects have a default method e.g. the &amp;lt;tt&amp;gt;Collection&amp;lt;/tt&amp;gt; object&lt;br /&gt;
&lt;br /&gt;
 set col = Sheets&lt;br /&gt;
 msgbox col(1).Name&lt;br /&gt;
&lt;br /&gt;
is a short cut for&lt;br /&gt;
&lt;br /&gt;
 set col = Sheets&lt;br /&gt;
 msgbox col.Item(1).Name&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;Item&amp;lt;/tt&amp;gt; is a default method in the example above. We can provide similar behavior in basic with a compatibility api object ensuring the object implements [http://api.openoffice.org/source/browse/*checkout*/api/udkapi/com/sun/star/script/XDefaultMethod.idl XDefaultMethod.idl ]&lt;br /&gt;
&lt;br /&gt;
==== Porting Collection objects ====&lt;br /&gt;
Generally all collection objects have a &amp;lt;tt&amp;gt;Count&amp;lt;/tt&amp;gt; and an &amp;lt;tt&amp;gt;Item&amp;lt;/tt&amp;gt; method and additionally the behaviour mentioned above. Also Collection objects can be used in a &amp;lt;tt&amp;gt;For Each&amp;lt;/tt&amp;gt; loop. To cater for that a helper implementation object &amp;lt;tt&amp;gt;ScVbaCollectionBaseImpl&amp;lt;/tt&amp;gt; provides the necessary information to the basic runtime to allow it to provide the classic vba &amp;lt;tt&amp;gt;Collection&amp;lt;/tt&amp;gt; class syntax support. It also requires to be initialised by an XIndexAccess implementation. Additionally the class inheriting from  &amp;lt;tt&amp;gt;ScVbaCollectionBaseImpl&amp;lt;/tt&amp;gt; must provide the  translation between the object iterated ( via XIndexAccess ) and the corrosponding compatibilty object returned to openoffice basic via the the &amp;lt;tt&amp;gt;createCollectionObject&amp;lt;/tt&amp;gt; method.&lt;br /&gt;
&lt;br /&gt;
A example of a ported &amp;lt;tt&amp;gt;Collection&amp;lt;/tt&amp;gt; object can be found in the [[Porting example]] section&lt;br /&gt;
&lt;br /&gt;
=== [possibly incomplete ] List of Calc Objects to port from helperapi ===&lt;br /&gt;
{| style=&amp;quot;vertical-align:top; text-align:left; background-color:#efefef;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background-color:#d6d6d6;font-weight:bold;&amp;quot; &lt;br /&gt;
| Object || helperapi implementation name || Porting started by || Status || Notes&lt;br /&gt;
|-&lt;br /&gt;
| XAreas.idl || xxxx  ||  || seems complete ||  ||&lt;br /&gt;
|-&lt;br /&gt;
| XAutoFilter.idl || [http://api.openoffice.org/source/browse/*checkout*/api/helperapi/impl/com/sun/star/helper/calc/AutoFilterImpl.java AutoFilterImpl] || hanbo || in progress || there is a partial (untested) implementation in the porting example section, would be nice for some one to finish&lt;br /&gt;
|-&lt;br /&gt;
| XFilter.idl || [http://api.openoffice.org/source/browse/*checkout*/api/helperapi/impl/com/sun/star/helper/calc/FilterImpl.java FilterImpl.java]  || hanbo || in progress || see above.&lt;br /&gt;
|-&lt;br /&gt;
| XFilters.idl || [http://api.openoffice.org/source/browse/*checkout*/api/helperapi/impl/com/sun/star/helper/calc/FiltersImpl.java FiltersImpl.java] || hanbo || in progress || see above.&lt;br /&gt;
|-&lt;br /&gt;
| XAxes.idl || [http://api.openoffice.org/source/browse/*checkout*/api/helperapi/impl/com/sun/star/helper/calc/AxesImpl.java AxesImpl.java]  ||  npower || in progress ||&lt;br /&gt;
|-&lt;br /&gt;
| XAxis.idl || [http://api.openoffice.org/source/browse/*checkout*/api/helperapi/impl/com/sun/star/helper/calc/AxesImpl.java AxisImpl.java]  || npower || in progress  ||&lt;br /&gt;
|-&lt;br /&gt;
| XAxisTitle.idl || [http://api.openoffice.org/source/browse/*checkout*/api/helperapi/impl/com/sun/star/helper/calc/AxesTitleImpl.java AxisTitleImpl.java] ||  npower || complete  || not-tested&lt;br /&gt;
|-&lt;br /&gt;
| XCharacters.idl || xxxx  ||  || complete ||&lt;br /&gt;
|-&lt;br /&gt;
| XCalc.idl || xxxx  || not required for porting see [[Application Object]] ||  || This is not a &amp;#039;real&amp;#039; object but in a collection of global method/attributes that probably should be part of the XApplication.idl interface&lt;br /&gt;
|-&lt;br /&gt;
| XChartObject.idl || [http://api.openoffice.org/source/browse/*checkout*/api/helperapi/impl/com/sun/star/helper/calc/ChartObjectImpl.java ChartObjectImpl.java] || npower || complete || not-tested&lt;br /&gt;
|-&lt;br /&gt;
| XChartObjects.idl || [http://api.openoffice.org/source/browse/*checkout*/api/helperapi/impl/com/sun/star/helper/calc/ChartObjectsImpl.java ChartObjectsImpl.java] || npower || complete || not-tested &lt;br /&gt;
|-&lt;br /&gt;
| XChart.idl || [http://api.openoffice.org/source/browse/*checkout*/api/helperapi/impl/com/sun/star/helper/calc/ChartImpl.java ChartImpl.java] || npower || in progress || &lt;br /&gt;
|-&lt;br /&gt;
| XCharts.idl ||  [http://api.openoffice.org/source/browse/*checkout*/api/helperapi/impl/com/sun/star/helper/calc/ChartsImpl.java ChartsImpl.java]  ||  npower ||  in progress ||&lt;br /&gt;
|-&lt;br /&gt;
| XChartTitle.idl || [http://api.openoffice.org/source/browse/*checkout*/api/helperapi/impl/com/sun/star/helper/calc/ChartTileImpl.java ChartTitleImpl.java]  || npower || complete || not-tested&lt;br /&gt;
|-&lt;br /&gt;
| XColorFormat.idl || xxxx  ||  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
| XComment.idl || xxxx  ||  || complete ||&lt;br /&gt;
|-&lt;br /&gt;
| XDataLabel.idl || [http://api.openoffice.org/source/browse/*checkout*/api/helperapi/impl/com/sun/star/helper/calc/DataLabelImp.java DataLabelImpl.java] || npower || in progress ||&lt;br /&gt;
|-&lt;br /&gt;
| XDataLabels.idl || [http://api.openoffice.org/source/browse/*checkout*/api/helperapi/impl/com/sun/star/helper/calc/DataLabelsImp.java DataLabelsImpl.java] ||  npower || in progress ||&lt;br /&gt;
|-&lt;br /&gt;
| XFont.idl || xxxx  ||  || complete ||&lt;br /&gt;
|-&lt;br /&gt;
| XFormatCondition.idl || xxxx  ||  npower || complete || not tested&lt;br /&gt;
|-&lt;br /&gt;
| XFormatConditions.idl || xxxx  ||  npower || complete || not tested&lt;br /&gt;
|-&lt;br /&gt;
| XFormat.idl || xxxx  || npower || complete  || not tested &lt;br /&gt;
|-&lt;br /&gt;
| XHPageBreak.idl || xxxx  ||  || complete ||&lt;br /&gt;
|-&lt;br /&gt;
| XHPageBreaks.idl || xxxx  ||  || complete ||&lt;br /&gt;
|-&lt;br /&gt;
| XInterior.idl || xxxx  ||  || complete ||&lt;br /&gt;
|-&lt;br /&gt;
| XName.idl || NameImp.java  || sola, Amelia || complete || not-tested ||&lt;br /&gt;
|-&lt;br /&gt;
| XNames.idl || NamesImp.java  || sola, Amelia || complete ||not-tested ||&lt;br /&gt;
|-&lt;br /&gt;
| XOutline.idl || xxxx  ||  || complete ||&lt;br /&gt;
|-&lt;br /&gt;
| XPageBreak.idl || xxxx  ||  || complete ||&lt;br /&gt;
|-&lt;br /&gt;
|[http://api.openoffice.org/source/browse/api/helperapi/com/sun/star/helper/calc/XPageSetup.idl XPageSetup.idl] || [http://api.openoffice.org/source/browse/api/helperapi/impl/com/sun/star/helper/calc/PageSetupImpl.java PageSetupImpl]  || Fong ||complete ||&lt;br /&gt;
|-&lt;br /&gt;
|[http://api.openoffice.org/source/browse/api/helperapi/com/sun/star/helper/calc/XPane.idl XPane.idl] || [http://api.openoffice.org/source/browse/api/helperapi/impl/com/sun/star/helper/calc/PaneImpl.java PaneImpl]  || Jiao.Jianhua || calc complete||&lt;br /&gt;
|-&lt;br /&gt;
| XPoint.idl || xxxx  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
| XPoints.idl || xxxx  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
| XProtection.idl || xxxx  || penghang || in progress ||&lt;br /&gt;
|-&lt;br /&gt;
| XQueryTable.idl || xxxx  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
| XQueryTables.idl || xxxx  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
| XSeriersCollection.idl || xxxx  ||   || complete ||&lt;br /&gt;
|-&lt;br /&gt;
| XSeriers.idl || xxxx  ||   || complete ||&lt;br /&gt;
|-&lt;br /&gt;
| XShape.idl || xxxx  || jiao.jianhua || in progress ||&lt;br /&gt;
|-&lt;br /&gt;
| XShapes.idl || xxxx  || jiao.jianhua  || calc complete, no full text ||&lt;br /&gt;
|-&lt;br /&gt;
| XSheet.idl || xxxx  ||   || complete ||&lt;br /&gt;
|-&lt;br /&gt;
| XSheets.idl || xxxx  ||   || complete ||&lt;br /&gt;
|-&lt;br /&gt;
| XStyle.idl || xxxx  ||  npower || complete || not tested&lt;br /&gt;
|-&lt;br /&gt;
| XStyles.idl || xxxx  || npower || inprogress ||&lt;br /&gt;
|-&lt;br /&gt;
| XTextFrame.idl || xxxx  ||  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
| XTitle.idl || xxxx  ||  || complete ||&lt;br /&gt;
|-&lt;br /&gt;
| XVPageBreak.idl || xxxx  || wanglibing || complete ||&lt;br /&gt;
|-&lt;br /&gt;
| XVPageBreaks.idl|| xxxx  || wanglibing || complete ||&lt;br /&gt;
|-&lt;br /&gt;
| XWindow.idl || xxxx  ||  ||  complete ||&lt;br /&gt;
|-&lt;br /&gt;
| XWindows.idl || xxxx  ||  ||  complete ||&lt;br /&gt;
|-&lt;br /&gt;
| XWorkbook.idl || xxxx  ||  ||  complete ||&lt;br /&gt;
|-&lt;br /&gt;
| XWorkbooks.idl || xxxx  ||  ||  complete ||&lt;br /&gt;
|-&lt;br /&gt;
| XWorksheetfunction.idl || xxxx  ||  ||  complete ||&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== [possibly incomplete ] List of Writer Objects to port from helperapi ===&lt;br /&gt;
{| style=&amp;quot;vertical-align:top; text-align:left; background-color:#efefef;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background-color:#d6d6d6;font-weight:bold;&amp;quot; &lt;br /&gt;
| Object || helperapi implementation name || Porting started by || Status || Notes&lt;br /&gt;
|-&lt;br /&gt;
| Application ||   || Fong || in progress  || ||&lt;br /&gt;
|-&lt;br /&gt;
| AutoTextEntry ||   ||  ||   ||&lt;br /&gt;
|-&lt;br /&gt;
| AutoTextEntries ||   ||  ||  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
| Border ||   ||  ||  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
| Borders ||   ||  ||  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
| Bookmark ||   || Fong  || in progress ||  ||&lt;br /&gt;
|-&lt;br /&gt;
| Bookmarks ||   || Fong  || in progress ||  ||&lt;br /&gt;
|-&lt;br /&gt;
| Cell ||   ||  ||  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
| Cells ||   ||  ||   ||&lt;br /&gt;
|-&lt;br /&gt;
| CommandBar ||   ||  Fong  || in progress ||  ||&lt;br /&gt;
|-&lt;br /&gt;
| CommandBarButton ||   || Fong  || in progress ||  ||&lt;br /&gt;
|-&lt;br /&gt;
| CommandBars ||   ||Fong  || in progress||  ||&lt;br /&gt;
|-&lt;br /&gt;
| Dialog ||   ||  ||  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
| Dialogs ||   ||  ||   ||&lt;br /&gt;
|-&lt;br /&gt;
| Document ||   ||Fong  || in progress ||  ||&lt;br /&gt;
|-&lt;br /&gt;
| DocumentProperty ||   || npower || in progress ||  ||&lt;br /&gt;
|-&lt;br /&gt;
| DocumentProperties ||   || npower || in progress ||  ||&lt;br /&gt;
|-&lt;br /&gt;
| Err ||   ||  ||  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
| Field ||   ||  ||   ||&lt;br /&gt;
|-&lt;br /&gt;
| Fields ||   ||  ||  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
| FillFormat ||   ||  ||  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
| Find ||   ||  ||  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
| Font ||   ||  ||  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
| FormField ||   ||  ||   ||&lt;br /&gt;
|-&lt;br /&gt;
| FormFields ||   ||  ||  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
| Frame ||   ||  ||  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
| Frames ||   ||  ||  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
| HeaderFooter ||   ||  ||  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
| LineFormat ||   ||  ||   ||&lt;br /&gt;
|-&lt;br /&gt;
| ListFormat ||   ||  ||  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
| Global ||   ||  ||  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
| Office ||   ||  ||  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
| Options ||   ||  ||  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
| Pane ||   ||  ||   ||&lt;br /&gt;
|-&lt;br /&gt;
| Panes ||   ||  ||  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
| Paragraph ||   ||  ||  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
| Paragraphs ||   ||  ||  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
| ParagraphFormat ||   ||  ||  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
| PageSetup ||   ||  ||   ||&lt;br /&gt;
|-&lt;br /&gt;
| Range ||   || Fong  || in progress  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
| Replacement ||   ||  ||  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
| Row ||   ||  ||  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
| Rows ||   ||  ||  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
| Selection ||   ||  ||   ||&lt;br /&gt;
|-&lt;br /&gt;
| Sections ||   ||  ||  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
| Shape ||   ||  ||  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
| Shapes ||   ||  ||  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
| ShapeRange ||   ||  ||  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
| Style ||   ||  ||   ||&lt;br /&gt;
|-&lt;br /&gt;
| Styles ||   ||  ||  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
| System ||   || Fong  || in progress  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
| Borders ||   ||  ||  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
| Table ||   ||  ||  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
| Tables ||   ||  ||   ||&lt;br /&gt;
|-&lt;br /&gt;
| TableOfContent ||   ||  ||  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
| TableOfContents ||   ||  ||  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
| TabStop ||   ||  ||  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
| TabStops ||   ||  ||  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
| Template ||   ||  ||   ||&lt;br /&gt;
|-&lt;br /&gt;
| TextFrame ||   ||  ||  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
| Variable ||   ||  ||  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
| Variables ||   ||  ||  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
| View ||   ||  ||  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
| Window ||   || Fong  || in progress  ||&lt;br /&gt;
|-&lt;br /&gt;
| WordBasic ||   ||  ||  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
| WrapFormat ||   ||  ||  ||  ||&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Missing attributes/methods ( common to helperapi objects ) to port ===&lt;br /&gt;
[[Application Object]]&lt;br /&gt;
&lt;br /&gt;
[[Range Object]]&lt;/div&gt;</summary>
		<author><name>Npower</name></author>
	</entry>
	<entry>
		<id>https://wiki.openoffice.org/w/index.php?title=GoOOCon_2008&amp;diff=72563</id>
		<title>GoOOCon 2008</title>
		<link rel="alternate" type="text/html" href="https://wiki.openoffice.org/w/index.php?title=GoOOCon_2008&amp;diff=72563"/>
		<updated>2008-04-04T09:54:07Z</updated>

		<summary type="html">&lt;p&gt;Npower: /* Programme */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Conferences]]&lt;br /&gt;
&lt;br /&gt;
= Why Go-OO Conference 2008 Prague, (Czech Republic) ? =&lt;br /&gt;
&lt;br /&gt;
[http://marketing.openoffice.org/conference OOoCon] is a great conference and is &amp;#039;&amp;#039;&amp;#039;the&amp;#039;&amp;#039;&amp;#039; annual get together of the OOo Community. This year it will be [http://marketing.openoffice.org/ooocon2008/cfl/vote.html held in Asia]. Starting with a full complement of Sun developers making the trip, plus the local RedFlag and IBM teams, it&amp;#039;s going to have the greatest concentration of OOo developers ever assembled together in one place on the planet.&lt;br /&gt;
&lt;br /&gt;
Special funding arrangements are being put together by the Community and our sponsors to try and ensure that every independent developer who &amp;#039;&amp;#039;should&amp;#039;&amp;#039; be there, &amp;#039;&amp;#039;can&amp;#039;&amp;#039; be there. However, if you know you simply can&amp;#039;t afford (time, money etc.) to go to OOoCon 2008 Beijing, we present: &amp;#039;&amp;#039;GoOOCon2008 Prague&amp;#039;&amp;#039; for open source developers to meet, talk, drink beer &amp;amp;amp; so on - a mini-meetup / hack-fest to the end of the Novell team meeting planned for April.&lt;br /&gt;
&lt;br /&gt;
[http://www.pis.cz/en/index.php Prague] is a great location - easy to get to in Europe, and a (compatively) low-cost location.&lt;br /&gt;
&lt;br /&gt;
[[Image:Praha-Hradcany.jpg]]&lt;br /&gt;
&lt;br /&gt;
= Schedule =&lt;br /&gt;
&lt;br /&gt;
   April 10th - arrive in the evening, meet up for dinner.&lt;br /&gt;
   April 11th - ad-hoc presentations, hacking&lt;br /&gt;
                evening drinks / meal.&lt;br /&gt;
   April 12th, am: more of the same&lt;br /&gt;
               pm: fun ropes course / team building; meal&lt;br /&gt;
   April 13th - leave, or stay to enjoy historic Prague.&lt;br /&gt;
&lt;br /&gt;
= Programme =&lt;br /&gt;
&lt;br /&gt;
To be decided; there will be a network, so hacking in groups is entirely possible. Presentations on tangled pieces of the OO.o code-base, discussions of the merits (or otherwise) of &amp;#039;boost&amp;#039;, sessions on Emacs vs. Vi, git vs. svn, the internals of Calc&amp;#039;s calculation engine, Impress&amp;#039; rendering model, Writer&amp;#039;s layout system, improving the build-bot system etc. appreciated.&lt;br /&gt;
&lt;br /&gt;
Hopefully we&amp;#039;ll aim to have a broad selection of talks which together give a nice high-level overview of the internals of OpenOffice.org, the problems &amp;amp;amp; what people are hacking on now. If you want to give a talk, mail your suggestions to [mailto:kendyNOSPM@suse.cz Kendy] (remove the NOSPM ;-) ), and/or CC [mailto:dev@lists.go-oo.org dev@lists.go-oo.org] for discussion - the more the merrier. We&amp;#039;ll post a more formal program closer to the time.&lt;br /&gt;
&lt;br /&gt;
Preliminary version:&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;4&amp;quot;&lt;br /&gt;
! From !! To !! Friday, 2008-04-11 !! Saturday, 2008-04-12&lt;br /&gt;
|-&lt;br /&gt;
| 9:00  || 9:30  || &amp;#039;&amp;#039;&amp;#039;Shaun McDonald&amp;#039;&amp;#039;&amp;#039;: Buildbots&amp;lt;br&amp;gt;&amp;#039;&amp;#039;Their setup and usage&amp;#039;&amp;#039; || &amp;#039;&amp;#039;&amp;#039;Noel Power&amp;#039;&amp;#039;&amp;#039;: Some basic nasties &amp;lt;br&amp;gt; mutating variable types and other horrors,&amp;#039;&amp;#039;Document Modules, support for Userfoms and associated handling of imported controls fun&amp;#039;&amp;#039;&lt;br /&gt;
|-&lt;br /&gt;
| 9:45  || 10:15 || &amp;#039;&amp;#039;&amp;#039;Ricardo Cruz&amp;#039;&amp;#039;&amp;#039;, &amp;#039;&amp;#039;&amp;#039;Jan Nieuwenhuizen&amp;#039;&amp;#039;&amp;#039;: Dialog porting workshop&amp;lt;br&amp;gt;&amp;#039;&amp;#039;The new layout engine&amp;#039;&amp;#039; || &amp;#039;&amp;#039;&amp;#039;Bruno Bonfils&amp;#039;&amp;#039;&amp;#039;: Digital signatures in OOo&lt;br /&gt;
|-&lt;br /&gt;
| 10:30 || 11:00 || &amp;#039;&amp;#039;&amp;#039;Caolan McNamara&amp;#039;&amp;#039;&amp;#039;: Deleting Giant Gobs of OpenOffice.org&amp;lt;br&amp;gt;&amp;#039;&amp;#039;How to use callcatcher and some things you should know about it&amp;#039;&amp;#039; || &amp;#039;&amp;#039;&amp;#039;Cedric Bosdonnat&amp;#039;&amp;#039;&amp;#039;: The OpenOffice.org Eclipse plugin&amp;lt;br&amp;gt;&amp;#039;&amp;#039;How to develop and debug a Java plugin&amp;#039;&amp;#039;&lt;br /&gt;
|-&lt;br /&gt;
| 11:15 || 11:45 || &amp;#039;&amp;#039;&amp;#039;Thorsten Behrens&amp;#039;&amp;#039;&amp;#039;: OOo my Threading || &amp;#039;&amp;#039;&amp;#039;Eric Bachard&amp;#039;&amp;#039;&amp;#039;: StarMath&amp;lt;br&amp;gt;&amp;#039;&amp;#039;The internals&amp;#039;&amp;#039;&lt;br /&gt;
|-&lt;br /&gt;
| 12:00 || 13:00 || &amp;#039;&amp;#039;Lunch&amp;#039;&amp;#039; || rowspan=&amp;quot;2&amp;quot; | &amp;#039;&amp;#039;Lunch&amp;#039;&amp;#039;&lt;br /&gt;
|-&lt;br /&gt;
| 13:00 || 14:00 || &amp;#039;&amp;#039;Finishing lunch/hacking/meet-ups/chatting/... ;-)&amp;#039;&amp;#039;&lt;br /&gt;
|-&lt;br /&gt;
| 14:00 || 14:30 || &amp;#039;&amp;#039;&amp;#039;Michael Meeks&amp;#039;&amp;#039;&amp;#039;: OpenOffice.org - a nit-picking code overview&amp;lt;br&amp;gt;&amp;#039;&amp;#039;The good, bad and the ugly&amp;#039;&amp;#039; || rowspan=&amp;quot;3&amp;quot; | High Ropes&lt;br /&gt;
|-&lt;br /&gt;
| 15:00 || 15:30 || &amp;#039;&amp;#039;&amp;#039;Julian Seward&amp;#039;&amp;#039;&amp;#039;: What&amp;#039;s new in valgrind&lt;br /&gt;
|-&lt;br /&gt;
| 16:00 || 16:30 || &amp;#039;&amp;#039;&amp;#039;Tim Eves&amp;#039;&amp;#039;&amp;#039;: The complexities of complex text&amp;lt;br&amp;gt;&amp;#039;&amp;#039;Graphite-enabled OpenOffice.org&amp;#039;&amp;#039;&lt;br /&gt;
|-&lt;br /&gt;
| 17:00 || 18:00 || BoF: Problems with re-using ooo-build ||&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= Logistics =&lt;br /&gt;
Everything you need to know to attend, print out, cover in marmalade &amp;amp;amp; accidentally leave behind the sofa.&lt;br /&gt;
&lt;br /&gt;
== Location ==&lt;br /&gt;
&lt;br /&gt;
The SUSE Office, see  &lt;br /&gt;
[http://www.mapy.cz/#x=133227936@y=136011808@z=15@mm=ZP@ax=133224320@ay=136013504@at=SUSE@ad=SUSE%20office@sa=s@st=s@ssq=Metro%20Ceskomoravska,%20Praha@sss=1@ssp=133217958_136009514_133230534_136019914 mapy.cz].&lt;br /&gt;
&lt;br /&gt;
Address:&lt;br /&gt;
&lt;br /&gt;
   SUSE LINUX, s. r. o.&lt;br /&gt;
   Lihovarská 1060/12&lt;br /&gt;
   190 00 Prague 9&lt;br /&gt;
   Czech Republic &lt;br /&gt;
&lt;br /&gt;
== Travel ==&lt;br /&gt;
&lt;br /&gt;
There are plenty of cheap flights available to Prague, from England, Italy, Switzerland &amp;amp;amp; Germany ([http://www.easyjet.com EasyJet]), Ireland ([http://ryanair.com Ryanair]), more can be found [http://www.flylowcostairlines.org/low-cost-airlines/ here].&lt;br /&gt;
&lt;br /&gt;
You could use a bus, route 100, from the [http://www.pragueairport.co.uk/ Prague airport] to the metro station &amp;#039;&amp;#039;&amp;#039;Zlicin&amp;#039;&amp;#039;&amp;#039;. The fact that it&amp;#039;s the last stop of the bus and a terminal station of the underground leaves very little room for any mistakes ;-)&lt;br /&gt;
&lt;br /&gt;
From &amp;#039;&amp;#039;&amp;#039;Zlicin&amp;#039;&amp;#039;&amp;#039;, go by underground directly to &amp;#039;&amp;#039;&amp;#039;Ceskomoravska&amp;#039;&amp;#039;&amp;#039;, get out, and continue according to the &lt;br /&gt;
[http://www.mapy.cz/#x=133227936@y=136011808@z=15@mm=ZP@ax=133224320@ay=136013504@at=SUSE@ad=SUSE%20office@sa=s@st=s@ssq=Metro%20Ceskomoravska,%20Praha@sss=1@ssp=133217958_136009514_133230534_136019914 map].&lt;br /&gt;
&lt;br /&gt;
If you decide to go by taxi, the cost of the fare from the airport to the SUSE offices should be 600-650 Kc plus 5-6 Kc/minute of waiting.  But we do recommend the public transport, you won&amp;#039;t save that much time by choosing taxi.&lt;br /&gt;
&lt;br /&gt;
== Prague public transport ==&lt;br /&gt;
&lt;br /&gt;
The [http://www.dpp.cz/index.php?q=en Prague public transport system] is fully automated - you don&amp;#039;t need to speak to anybody. The bus drivers, usually understand very little English, but definitely are not hostile to foreigners and try to understand.&lt;br /&gt;
&lt;br /&gt;
You buy a 26 Kc (CZK) ticket at the airport, in a coin-slot ticket vending machine. If you don&amp;#039;t have any coins, it should be possible to buy it at the information desk at the airport. If that doesn&amp;#039;t work, you can buy it in a bus, when entering through the front door. It&amp;#039;ll cost you a little bit more (30 Kc). The ticket is then valid for one hour, and for that time you can use any means of public transport available, no need to get transfer tickets or anything like that. You can be checked for the validity of the ticket during the journey by the public transport officers.&lt;br /&gt;
&lt;br /&gt;
Once you have a ticket, you can enter or exit the bus by any door. The bus stops at every stop, no signaling to the driver is needed. &lt;br /&gt;
After getting on the bus, you need to mark the ticket in a ticket marking machine - one of several very noticeable yellow boxes with a&lt;br /&gt;
green arrow light in every bus.&lt;br /&gt;
&lt;br /&gt;
If traveling by underground first, you mark the ticket at the entrance to the station.  If changing from bus to underground, you do not mark the already marked ticket again.&lt;br /&gt;
&lt;br /&gt;
More expensive tickets (also available) last longer, up to several days - more info [http://www.dpp.cz/index.php?q=en/tariff-fares here].&lt;br /&gt;
&lt;br /&gt;
== Shelter ==&lt;br /&gt;
&lt;br /&gt;
We recommend the [http://www.hotelcarol.com/ Hotel Carol] which is 1 block from the SUSE office: ~2 minutes walk even for a geriatric hacker. A double room for the duration is around Euro:250.&lt;br /&gt;
&lt;br /&gt;
You might also try the [http://www.a1hotel.cz/en/main.html A1 hotel] which is two blocks from the SUSE office: ~5 minutes walk. A single bed rood from about Euro:30 per night.&lt;br /&gt;
&lt;br /&gt;
The cheapest variant would be the [http://www.a1hotel.cz/en/main.html A1 hostel] or the [http://www.firmy.cz/detail/313656-zbyhnev-jelinek-hotel-sunshine-praha-liben.html Hotel Sunshine]. It is not easy to recommend them, though ;-)&lt;br /&gt;
&lt;br /&gt;
== Contact ==&lt;br /&gt;
&lt;br /&gt;
    Email: Lucie Louzecka &amp;lt;llouzecka@suse.cz&amp;gt;&lt;br /&gt;
    Phone: +420 775 928 867&lt;br /&gt;
&lt;br /&gt;
= Politics =&lt;br /&gt;
&lt;br /&gt;
To make the event even more accessible, there will be a &amp;#039;&amp;#039;&amp;#039;ban&amp;#039;&amp;#039;&amp;#039; on talks / panel discussion of the form: &amp;#039;&amp;#039;&amp;quot;Sun screwed me over&amp;quot;&amp;#039;&amp;#039; or &amp;#039;&amp;#039;&amp;quot;Kill the SCA today&amp;quot;&amp;#039;&amp;#039;. In addition we are encouraging primarily hackers to attend, ie. this is a pure developers meeting, with a horribly technical agenda: we promise to make sure you won&amp;#039;t enjoy it if you&amp;#039;re not writing code. In addition no talks of the form &amp;#039;&amp;#039;&amp;quot;ODF solves the problems of world hunger&amp;quot;&amp;#039;&amp;#039; or &amp;#039;&amp;#039;&amp;quot;OpenXML - hell-spawn in text form&amp;quot;&amp;#039;&amp;#039; will be tolerated.&lt;br /&gt;
&lt;br /&gt;
= Ropes Course =&lt;br /&gt;
&lt;br /&gt;
We will also get some more adrenaline in the [http://www.lanovecentrum.cz/eng/homepage.php rope center PROUD]. No particular climbing ability required, though decent footware is essential, and non-flismy clothing helpful. Failing that, the ability to laugh at others would be helpful.&lt;br /&gt;
&lt;br /&gt;
[[Image:ropes.jpg]]&lt;/div&gt;</summary>
		<author><name>Npower</name></author>
	</entry>
	<entry>
		<id>https://wiki.openoffice.org/w/index.php?title=VBA&amp;diff=53447</id>
		<title>VBA</title>
		<link rel="alternate" type="text/html" href="https://wiki.openoffice.org/w/index.php?title=VBA&amp;diff=53447"/>
		<updated>2007-11-12T13:08:59Z</updated>

		<summary type="html">&lt;p&gt;Npower: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[VBA zh|中]]&lt;br /&gt;
&lt;br /&gt;
[http://vba.openoffice.org VBA interoperability] project is a joint Novell &amp;amp; Sun incubator project whose aim is to deliver a way to run Excel and Word macros natively in imported documents.&lt;br /&gt;
* Noel Power ( lead )&lt;br /&gt;
* Andreas Breagas ( co-lead )&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Visual Basic for Applications&amp;#039;&amp;#039;&amp;#039; (&amp;#039;&amp;#039;&amp;#039;VBA&amp;#039;&amp;#039;&amp;#039;) is an implementation of Microsoft&amp;#039;s  [[wikipedia:Visual Basic|Visual Basic]] which is built into all Microsoft Office applications. &lt;br /&gt;
 &lt;br /&gt;
== Latest news ==&lt;br /&gt;
* cws [http://eis.services.openoffice.org/EIS2/cws.ShowCWS?Path=SRC680%2Fnpower6 npower6] has been integrated into m211&lt;br /&gt;
* Update Wiki Page with latest info&lt;br /&gt;
* [http://blogs.sun.com/GullFOSS/entry/sun_and_novell_work_together Novell and Sun to work together] on the VBA incubator project&lt;br /&gt;
* I am delighted that Andreas Bregas now joins me to co-lead the vba incubator project&lt;br /&gt;
&lt;br /&gt;
== Terminology ==&lt;br /&gt;
&lt;br /&gt;
* [[helperapi]] - The compatibility API generously donated by Sun that was part of their migration toolkit &lt;br /&gt;
* [[oovbaapi]] - the ooo-build vba interoperability solution originally implemented by Novell + object implementations from the helperapi.  Note: [[Ooo-build]] contains the latest VBA model and patches which allows you to run macros from your Microsoft Office documents. This model is under heavy development by Novell and others and the changes are continuously ported to openoffice. It is expected that many macros won&amp;#039;t run for now.&lt;br /&gt;
&lt;br /&gt;
== Dashboard ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* cws [http://eis.services.openoffice.org/EIS2/cws.ShowCWS?Path=SRC680%2Fnpower8 npower8] ( nearly complete ) ( contains )&lt;br /&gt;
    * some helperapi object porting &lt;br /&gt;
    * changes to include new multi-inheritance style idl and new style service definitions&lt;br /&gt;
    * removal of idl for compatibilty constants[1]&lt;br /&gt;
* cws [http://eis.services.openoffice.org/EIS2/cws.ShowCWS?Path=SRC680%2Fnpower7 npower7] integrated&lt;br /&gt;
* cws [http://eis.services.openoffice.org/EIS2/cws.ShowCWS?Path=SRC680%2Fnpower6 npower6] integrated&lt;br /&gt;
&lt;br /&gt;
[1] these will be generated using the mechanism from the helperapi ( basically the idl is generated from metadata files, the idl files are not preserved ( or needed ) but the types database generated from the idl files&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Task queue and status ( in order of priority )&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;vertical-align:top; text-align:left; background-color:#efefef;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background-color:#d6d6d6;font-weight:bold;&amp;quot; &lt;br /&gt;
| Feature || Description|| Issue # || Planned cws || State || Milestone integrated || &lt;br /&gt;
|-&lt;br /&gt;
| autogenerate constants in oovbaapi || port helperapi constant solution to oovbaapi module || 75551 || npower8 || done  || n/a ||&lt;br /&gt;
|-&lt;br /&gt;
| ooo-build api sync || synchronise ooo-build api changes with upstream || 77189 || npower8 || in progress  || n/a ||&lt;br /&gt;
|-&lt;br /&gt;
| array of array indexing  || in vba array of array indexing is very common, e.g. &amp;lt;tt&amp;gt;myArray(1)(2)&amp;lt;/tt&amp;gt;|| n/a || n/a || n/a  || n/a ||&lt;br /&gt;
|-&lt;br /&gt;
| toolbox control event support  || these controls support a loose binding where the presence of a macro event handler of the form &amp;lt;tt&amp;gt;controlname_xxx e.g. controlname_click&amp;lt;/tt&amp;gt;  results in the appropriate macro getting called when the associated action takes place || n/a || n/a || n/a  || n/a |||&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Completed Features&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;vertical-align:top; text-align:left; background-color:#efefef;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background-color:#d6d6d6;font-weight:bold;&amp;quot; &lt;br /&gt;
| Feature || Description|| Issue # || Planned cws || State || Milestone integrated || &lt;br /&gt;
|-&lt;br /&gt;
| vba constants || adjust basic runtime to be &amp;#039;conditionally&amp;#039; aware of the vba constants defined in oovbaapi module || 68897 || npower7 || complete  || n/a ||&lt;br /&gt;
|-&lt;br /&gt;
| support dim of vba object || adjust basic runtime to be &amp;#039;conditionally&amp;#039; allow a vba compatibilty api object to be used like &amp;lt;tt&amp;gt;Dim r1 as Range&amp;lt;/tt&amp;gt; || 68897 || npower7 || complete || n/a ||&lt;br /&gt;
|-&lt;br /&gt;
| compatible erase array || in vba compatibility mode erase does not behave as expected || 70380 || npower7 || complete  || n/a ||&lt;br /&gt;
|-&lt;br /&gt;
| null variant behaviour || in vba compatibility mode operations on null variant objects behave differently || 71827 || npower7 || complete  || n/a ||&lt;br /&gt;
|-&lt;br /&gt;
| &amp;#039;Like&amp;#039;  || new &amp;#039;Like&amp;#039; operator for basic || 73830 || npower7 || complete  || n/a ||&lt;br /&gt;
|-&lt;br /&gt;
| Module scope variable  || in vba module scope variables lifetime is tied to the document containing the macro ||  76819 || npower7 || complete  || n/a ||&lt;br /&gt;
|-&lt;br /&gt;
| support simple range short cut references || in vba the evaluate function is used for resolving many things, one of theses is short cut range references  e.g. &amp;#039;[a1:b2]&amp;#039; || 68898 || npower7 || complete  || n/a ||&lt;br /&gt;
|-&lt;br /&gt;
| fix accent handling || in vba mode accents in modules or macros are not handled || 76818 || npower7 || complete  || n/a ||&lt;br /&gt;
|-&lt;br /&gt;
| fix object comparison || in vba mode there is a problem comparing objects with default paramaters ( when the default is not specified ) ||  76820 || npower7 || complete  || n/a ||&lt;br /&gt;
|-&lt;br /&gt;
| class module import || when class modules are imported the correct &amp;#039;option&amp;#039; should be set ||  76822 || npower7 || complete || n/a ||&lt;br /&gt;
|-&lt;br /&gt;
| migrate ooo-build code || suck in the mountain of idl and implementation code from ooo-build  || 74096 || npower6 || complete || m211 ||&lt;br /&gt;
|-&lt;br /&gt;
| import vba code || conditionally import ( uncommented ) vba code and set appropriate  module options || 64570 || npower6 || complete  || m211 ||&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Broader scope tasks that need more investigation ( and splitting into smaller tasks ) (to be added)&lt;br /&gt;
&lt;br /&gt;
create list of items that may need promoting from vba compatibility to &amp;lt;tt&amp;gt;Standard&amp;lt;/tt&amp;gt; ooo-basic behaviour e.g. like issue [[http://www.openoffice.org/issues/show_bug.cgi?id=70380 70380]]&lt;br /&gt;
&lt;br /&gt;
== How to enable the VBA model ==&lt;br /&gt;
&lt;br /&gt;
The VBA model is enabled by default in the current ooo-build. It&amp;#039;s enough to [[Getting It|get]], [[Building with ooobuild|build]], [[Installing|install]], and [[Running|be able to run]] it. &lt;br /&gt;
&lt;br /&gt;
If you are using upstream OpenOffice.org and wish to play with this feature then check out and build the cws [http://eis.services.openoffice.org/EIS2/cws.ShowCWS?Path=SRC680%2Fnpower6 npower6] which contains the initial code drop for the oovbaapi &lt;br /&gt;
&lt;br /&gt;
== How to disable the VBA model ==&lt;br /&gt;
&lt;br /&gt;
Depending on how your version of OpenOffice.org delivers the VBA feature to you, there are a number of ways to disable it. &lt;br /&gt;
&lt;br /&gt;
If you have an Openoffice.org built by a linux distro ( or a windows one from Novell ) that has the vba interop feature then all you need do is navigate to the &amp;#039;Tools.Options.Load/Save.VBAProperties&amp;#039; page and uncheck the &amp;#039;Load Excelbasic code to edit&amp;#039; option.&lt;br /&gt;
&lt;br /&gt;
If you are using an own build ( incorporating ) [http://eis.services.openoffice.org/EIS2/cws.ShowCWS?Path=SRC680%2Fnpower6 cws-npower6] the above method will always work. But if you built the vba interop feature as an office extension then you can of course disable or delete the vbaapi.oxt extension using the Extension Manager.&lt;br /&gt;
&lt;br /&gt;
== How can I help you? ==&lt;br /&gt;
&lt;br /&gt;
We need help in a couple of areas, [[Porting notes|porting]] objects from the [[helperapi]], understanding the VBA usage patterns, implementation and testing; see below.&lt;br /&gt;
&lt;br /&gt;
== Porting Objects from the HelperApi ==&lt;br /&gt;
&lt;br /&gt;
What is the [[helperapi]]?&lt;br /&gt;
&lt;br /&gt;
Have a look at the [[porting notes]]&lt;br /&gt;
&lt;br /&gt;
Have a look at a [[porting example]]&lt;br /&gt;
&lt;br /&gt;
[[Porting_notes#Calc_Objects_to_port|list]] of objects that need porting&lt;br /&gt;
&lt;br /&gt;
[[Porting_notes#Missing_attributes.2Fmethods_to_port|list]] of methods ( to be ported from [[helperapi]] ) to existing objects&lt;br /&gt;
&lt;br /&gt;
== Understanding the VBA usage patterns ==&lt;br /&gt;
&lt;br /&gt;
VBA model is huge and we need help in understanding the VBA usage patterns for prioritizing as we progress. It&amp;#039;s important to receive as many Microsoft Office documents with macros as possible for analysis. &amp;#039;&amp;#039;&amp;#039;We are interested in documents from developers and regular people too.&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
=== Dumping the VBA from your MS Office documents ===&lt;br /&gt;
&lt;br /&gt;
==== libgsf ====&lt;br /&gt;
&lt;br /&gt;
If you&amp;#039;re worried about the sheet data you can use &amp;#039;&amp;#039;test-msvba&amp;#039;&amp;#039; from the [http://freshmeat.net/projects/libgsf/ libgsf]. Download the latest [http://cvs.gnome.org/viewcvs/libgsf/tests/test-msvba.c test-msvba.c] file and compile it with the following command:&lt;br /&gt;
&lt;br /&gt;
 gcc `pkg-config --libs --cflags libgsf-1` -o test-msvba test-msvba.c&lt;br /&gt;
&lt;br /&gt;
Note: you need to have libgsf-devel package installed.&lt;br /&gt;
&lt;br /&gt;
Now, you can dump the VBA from your documents with the following command:&lt;br /&gt;
&lt;br /&gt;
 find -name &amp;#039;*.xls&amp;#039; -exec sh -c &amp;#039;test-msvba {} &amp;gt;&amp;gt; ~/excel-vba-stream-for-noel.bas&amp;#039; \;&lt;br /&gt;
&lt;br /&gt;
==== pole ====&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;p&amp;gt;Or you can use [http://pole.berlios.de/ POLE] with GUI. POLE is a portable C++ library to access structured storage. It is designed to be compatible with Microsoft structured storage, also sometimes known as OLE Compound Document.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Exporting modules from the Microsoft Excel ===&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;p&amp;gt;Open your document and edit associated macros. You can see list of modules on the left side of your screen. Use the right mouse button and select &amp;#039;&amp;#039;Export&amp;#039;&amp;#039; from the context menu. The whole module will be saved as one huge &amp;#039;&amp;#039;*.bas&amp;#039;&amp;#039;.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Where to send ===&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;p&amp;gt;If you are going to send pure VBA streams, send them directly to [Noel dot Power at Novell dot com].&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Implementation ==&lt;br /&gt;
&lt;br /&gt;
=== The desired sequence ===&lt;br /&gt;
&lt;br /&gt;
==== Add an extension to the IDL ====&lt;br /&gt;
&lt;br /&gt;
The IDL lives in oovbaapi/org/openoffice/*, the IDL syntax can easily be gleaned from a few other IDL files. Two things are worth bearing in mind:&lt;br /&gt;
* it&amp;#039;s important that the argument names are correct, so that the &amp;lt;tt&amp;gt;MsgBox title:=&amp;quot;hello&amp;quot;&amp;lt;/tt&amp;gt; syntax works correctly.&lt;br /&gt;
* for optional arguments, or variant types you need to use the &amp;lt;tt&amp;gt;any&amp;lt;/tt&amp;gt; type&lt;br /&gt;
&lt;br /&gt;
Having edited the IDL extension you need to:&lt;br /&gt;
* run: &amp;lt;tt&amp;gt;build &amp;amp;&amp;amp; deliver&amp;lt;/tt&amp;gt; in oovbaapi (perhaps remove types.db first),&lt;br /&gt;
&lt;br /&gt;
==== Add the extension to the implementation ====&lt;br /&gt;
&lt;br /&gt;
The impl. code lives in &amp;lt;tt&amp;gt;sc/source/ui/vba/&amp;lt;/tt&amp;gt; - create the right header and source files.&lt;br /&gt;
Add the method (with the correct prototype) to the header - often it&amp;#039;s easiest to cut/paste that from the compiled C++ headers in &amp;lt;tt&amp;gt;sc/unxlngixxx/inc/org/openoffice/vba/&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Then implement the method itself in the .cxx file. Run &amp;lt;tt&amp;gt;build debug=true&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Running it ====&lt;br /&gt;
&lt;br /&gt;
You did use [linkoo] right ? - in which case - just re-run soffice.bin (killall -9 soffice.bin first to ensure there is no lurking factory process).&lt;br /&gt;
&lt;br /&gt;
Now of course - you want to add a new test to exercise it to ooo-build/test/macro/*. And of course loop back to the beginning.&lt;br /&gt;
Once you&amp;#039;ve got something you want to share - a simple &amp;lt;tt&amp;gt;cvs diff -u | tee /tmp/foo.diff&amp;lt;/tt&amp;gt; in ooo-build/scratch will yield a patch you can mail to Noel / the ooo-build mailing list to get your code folded in.&lt;br /&gt;
NB. it&amp;#039;s important you sign the [http://www.openoffice.org/licenses/jca.pdf JCA] first.&lt;br /&gt;
&lt;br /&gt;
== Testing ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;It&amp;#039;s extremely important to test the work which is already done. You can use test cases from the &amp;#039;&amp;#039;ooo-build/test/macro&amp;#039;&amp;#039; directory, you can extend them or you can write your own test cases.&amp;lt;/p&amp;gt;&lt;br /&gt;
It&amp;#039;s a good idea to write test cases directly in the Microsoft Excel?&lt;br /&gt;
&lt;br /&gt;
== Accessing the VBA API from other languages ==&lt;br /&gt;
&lt;br /&gt;
The VBA API is implemented by an UNO service, the service is accessible via a singleton. As such it is possible to use the API from any language that has an UNO binding. The main entry points to the API are certain global variables { Application, ActiveWorkbook and ActiveSheet } or methods { WorkSheets, WorkBooks } exported by the service. Using these globals as a starting point the rest of the api can be accessed.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;NOTE:&amp;#039;&amp;#039;&amp;#039;  Beaware the idl is not stable, ( nor won&amp;#039;t be for the forseeable future be &amp;#039;published&amp;#039; ) it WILL change, so if you are using a language that has a binary dependency on the interface ( like c++ &amp;amp; java ) then consider yourselves warned. &lt;br /&gt;
&lt;br /&gt;
=== Python ===&lt;br /&gt;
&lt;br /&gt;
 vba = uno.getComponentContext().getByName(&amp;quot;/singletons/org.openoffice.vba.theGlobals&amp;quot;)&lt;br /&gt;
 sheet = vba.ActiveSheet&lt;br /&gt;
 book = vba.ActiveWorkbook&lt;br /&gt;
&lt;br /&gt;
=== Java ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
import org.openoffice.vba.*;&lt;br /&gt;
&amp;quot;&lt;br /&gt;
// getComponentCtxFromSomewhere is a fictional&lt;br /&gt;
// routine representing acquisition of the component context&lt;br /&gt;
// from e.g. remote ServiceManage if the code is a remote client&lt;br /&gt;
// or from the XScriptContext if this were a java ScriptingFramework script &lt;br /&gt;
&lt;br /&gt;
XComponentContext ctx = getComponentCtxFromSomewhere(); &lt;br /&gt;
Object oGlobs = ctx.getValueByName(&lt;br /&gt;
                &amp;quot;/singletons/org.openoffice.vba.theGlobals&amp;quot;);&lt;br /&gt;
XGlobals xGlobs = AnyConverter.toObject(&lt;br /&gt;
                new Type(XGlobals.class), oGlobs);&lt;br /&gt;
XWorkBook xWBook =  xGlobs.getActiveWorkbook();&lt;br /&gt;
XWorkSheet xSheet = xGlobs.getActiveWorkSheet();&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== OO Basic ===&lt;br /&gt;
&lt;br /&gt;
Basic allows access to the global variables automatically just like VBA does, there is no need to create any services or access any singletons to use the API&lt;br /&gt;
&lt;br /&gt;
 msgbox &amp;quot;Name of the current document is &amp;quot; &amp;amp;amp; ActiveWorkbook.Path&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Visual Basic ===&lt;br /&gt;
&lt;br /&gt;
Visual Basic, VBA, VBScript and other COM-enabled languages supports accessing OpenOffice VBA API via COM-UNO bridge &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Set oServiceManager = CreateObject(&amp;quot;com.sun.star.ServiceManager&amp;quot;)&lt;br /&gt;
Set oDesktop = oServiceManager.createInstance(&amp;quot;com.sun.star.frame.Desktop&amp;quot;)&lt;br /&gt;
Dim aNoArgs()&lt;br /&gt;
Set oCalcDoc = oDesktop.loadComponentFromURL(&amp;quot;private:factory/scalc&amp;quot;, &amp;quot;_blank&amp;quot;, 0, aNoArgs)&lt;br /&gt;
    &lt;br /&gt;
Set v = oServiceManager.DefaultContext.getValueByName(&amp;quot;/singletons/org.openoffice.vba.theGlobals&amp;quot;)&lt;br /&gt;
Set app = v.Application&lt;br /&gt;
MsgBox app.Version&lt;br /&gt;
Set cell = app.ActiveCell&lt;br /&gt;
cell.Value = &amp;quot;Hello!&amp;quot;&lt;br /&gt;
Set r = app.Range(&amp;quot;B1&amp;quot;, &amp;quot;B1&amp;quot;)&lt;br /&gt;
r.Value = &amp;quot;Hi1&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
CHM Help file generated from oovbaapi IDL:&lt;br /&gt;
http://community.i-rs.ru/index.php?action=dlattach;topic=6096.0;attach=4431&lt;br /&gt;
[[Category:Development]]&lt;/div&gt;</summary>
		<author><name>Npower</name></author>
	</entry>
	<entry>
		<id>https://wiki.openoffice.org/w/index.php?title=VBA&amp;diff=53446</id>
		<title>VBA</title>
		<link rel="alternate" type="text/html" href="https://wiki.openoffice.org/w/index.php?title=VBA&amp;diff=53446"/>
		<updated>2007-11-12T13:08:35Z</updated>

		<summary type="html">&lt;p&gt;Npower: /* Dashboard */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[VBA zh|中]]&lt;br /&gt;
&lt;br /&gt;
[http://vba.openoffice.org VBA interoperability] project is a joint Novell &amp;amp; Sun incubator project whose aim is to deliver a way to run Excel and Word macros natively in imported documents.&lt;br /&gt;
* Noel Power ( co-lead )&lt;br /&gt;
* Andreas Breagas ( co-lead )&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Visual Basic for Applications&amp;#039;&amp;#039;&amp;#039; (&amp;#039;&amp;#039;&amp;#039;VBA&amp;#039;&amp;#039;&amp;#039;) is an implementation of Microsoft&amp;#039;s  [[wikipedia:Visual Basic|Visual Basic]] which is built into all Microsoft Office applications. &lt;br /&gt;
 &lt;br /&gt;
== Latest news ==&lt;br /&gt;
* cws [http://eis.services.openoffice.org/EIS2/cws.ShowCWS?Path=SRC680%2Fnpower6 npower6] has been integrated into m211&lt;br /&gt;
* Update Wiki Page with latest info&lt;br /&gt;
* [http://blogs.sun.com/GullFOSS/entry/sun_and_novell_work_together Novell and Sun to work together] on the VBA incubator project&lt;br /&gt;
* I am delighted that Andreas Bregas now joins me to co-lead the vba incubator project&lt;br /&gt;
&lt;br /&gt;
== Terminology ==&lt;br /&gt;
&lt;br /&gt;
* [[helperapi]] - The compatibility API generously donated by Sun that was part of their migration toolkit &lt;br /&gt;
* [[oovbaapi]] - the ooo-build vba interoperability solution originally implemented by Novell + object implementations from the helperapi.  Note: [[Ooo-build]] contains the latest VBA model and patches which allows you to run macros from your Microsoft Office documents. This model is under heavy development by Novell and others and the changes are continuously ported to openoffice. It is expected that many macros won&amp;#039;t run for now.&lt;br /&gt;
&lt;br /&gt;
== Dashboard ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* cws [http://eis.services.openoffice.org/EIS2/cws.ShowCWS?Path=SRC680%2Fnpower8 npower8] ( nearly complete ) ( contains )&lt;br /&gt;
    * some helperapi object porting &lt;br /&gt;
    * changes to include new multi-inheritance style idl and new style service definitions&lt;br /&gt;
    * removal of idl for compatibilty constants[1]&lt;br /&gt;
* cws [http://eis.services.openoffice.org/EIS2/cws.ShowCWS?Path=SRC680%2Fnpower7 npower7] integrated&lt;br /&gt;
* cws [http://eis.services.openoffice.org/EIS2/cws.ShowCWS?Path=SRC680%2Fnpower6 npower6] integrated&lt;br /&gt;
&lt;br /&gt;
[1] these will be generated using the mechanism from the helperapi ( basically the idl is generated from metadata files, the idl files are not preserved ( or needed ) but the types database generated from the idl files&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Task queue and status ( in order of priority )&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;vertical-align:top; text-align:left; background-color:#efefef;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background-color:#d6d6d6;font-weight:bold;&amp;quot; &lt;br /&gt;
| Feature || Description|| Issue # || Planned cws || State || Milestone integrated || &lt;br /&gt;
|-&lt;br /&gt;
| autogenerate constants in oovbaapi || port helperapi constant solution to oovbaapi module || 75551 || npower8 || done  || n/a ||&lt;br /&gt;
|-&lt;br /&gt;
| ooo-build api sync || synchronise ooo-build api changes with upstream || 77189 || npower8 || in progress  || n/a ||&lt;br /&gt;
|-&lt;br /&gt;
| array of array indexing  || in vba array of array indexing is very common, e.g. &amp;lt;tt&amp;gt;myArray(1)(2)&amp;lt;/tt&amp;gt;|| n/a || n/a || n/a  || n/a ||&lt;br /&gt;
|-&lt;br /&gt;
| toolbox control event support  || these controls support a loose binding where the presence of a macro event handler of the form &amp;lt;tt&amp;gt;controlname_xxx e.g. controlname_click&amp;lt;/tt&amp;gt;  results in the appropriate macro getting called when the associated action takes place || n/a || n/a || n/a  || n/a |||&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Completed Features&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;vertical-align:top; text-align:left; background-color:#efefef;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background-color:#d6d6d6;font-weight:bold;&amp;quot; &lt;br /&gt;
| Feature || Description|| Issue # || Planned cws || State || Milestone integrated || &lt;br /&gt;
|-&lt;br /&gt;
| vba constants || adjust basic runtime to be &amp;#039;conditionally&amp;#039; aware of the vba constants defined in oovbaapi module || 68897 || npower7 || complete  || n/a ||&lt;br /&gt;
|-&lt;br /&gt;
| support dim of vba object || adjust basic runtime to be &amp;#039;conditionally&amp;#039; allow a vba compatibilty api object to be used like &amp;lt;tt&amp;gt;Dim r1 as Range&amp;lt;/tt&amp;gt; || 68897 || npower7 || complete || n/a ||&lt;br /&gt;
|-&lt;br /&gt;
| compatible erase array || in vba compatibility mode erase does not behave as expected || 70380 || npower7 || complete  || n/a ||&lt;br /&gt;
|-&lt;br /&gt;
| null variant behaviour || in vba compatibility mode operations on null variant objects behave differently || 71827 || npower7 || complete  || n/a ||&lt;br /&gt;
|-&lt;br /&gt;
| &amp;#039;Like&amp;#039;  || new &amp;#039;Like&amp;#039; operator for basic || 73830 || npower7 || complete  || n/a ||&lt;br /&gt;
|-&lt;br /&gt;
| Module scope variable  || in vba module scope variables lifetime is tied to the document containing the macro ||  76819 || npower7 || complete  || n/a ||&lt;br /&gt;
|-&lt;br /&gt;
| support simple range short cut references || in vba the evaluate function is used for resolving many things, one of theses is short cut range references  e.g. &amp;#039;[a1:b2]&amp;#039; || 68898 || npower7 || complete  || n/a ||&lt;br /&gt;
|-&lt;br /&gt;
| fix accent handling || in vba mode accents in modules or macros are not handled || 76818 || npower7 || complete  || n/a ||&lt;br /&gt;
|-&lt;br /&gt;
| fix object comparison || in vba mode there is a problem comparing objects with default paramaters ( when the default is not specified ) ||  76820 || npower7 || complete  || n/a ||&lt;br /&gt;
|-&lt;br /&gt;
| class module import || when class modules are imported the correct &amp;#039;option&amp;#039; should be set ||  76822 || npower7 || complete || n/a ||&lt;br /&gt;
|-&lt;br /&gt;
| migrate ooo-build code || suck in the mountain of idl and implementation code from ooo-build  || 74096 || npower6 || complete || m211 ||&lt;br /&gt;
|-&lt;br /&gt;
| import vba code || conditionally import ( uncommented ) vba code and set appropriate  module options || 64570 || npower6 || complete  || m211 ||&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Broader scope tasks that need more investigation ( and splitting into smaller tasks ) (to be added)&lt;br /&gt;
&lt;br /&gt;
create list of items that may need promoting from vba compatibility to &amp;lt;tt&amp;gt;Standard&amp;lt;/tt&amp;gt; ooo-basic behaviour e.g. like issue [[http://www.openoffice.org/issues/show_bug.cgi?id=70380 70380]]&lt;br /&gt;
&lt;br /&gt;
== How to enable the VBA model ==&lt;br /&gt;
&lt;br /&gt;
The VBA model is enabled by default in the current ooo-build. It&amp;#039;s enough to [[Getting It|get]], [[Building with ooobuild|build]], [[Installing|install]], and [[Running|be able to run]] it. &lt;br /&gt;
&lt;br /&gt;
If you are using upstream OpenOffice.org and wish to play with this feature then check out and build the cws [http://eis.services.openoffice.org/EIS2/cws.ShowCWS?Path=SRC680%2Fnpower6 npower6] which contains the initial code drop for the oovbaapi &lt;br /&gt;
&lt;br /&gt;
== How to disable the VBA model ==&lt;br /&gt;
&lt;br /&gt;
Depending on how your version of OpenOffice.org delivers the VBA feature to you, there are a number of ways to disable it. &lt;br /&gt;
&lt;br /&gt;
If you have an Openoffice.org built by a linux distro ( or a windows one from Novell ) that has the vba interop feature then all you need do is navigate to the &amp;#039;Tools.Options.Load/Save.VBAProperties&amp;#039; page and uncheck the &amp;#039;Load Excelbasic code to edit&amp;#039; option.&lt;br /&gt;
&lt;br /&gt;
If you are using an own build ( incorporating ) [http://eis.services.openoffice.org/EIS2/cws.ShowCWS?Path=SRC680%2Fnpower6 cws-npower6] the above method will always work. But if you built the vba interop feature as an office extension then you can of course disable or delete the vbaapi.oxt extension using the Extension Manager.&lt;br /&gt;
&lt;br /&gt;
== How can I help you? ==&lt;br /&gt;
&lt;br /&gt;
We need help in a couple of areas, [[Porting notes|porting]] objects from the [[helperapi]], understanding the VBA usage patterns, implementation and testing; see below.&lt;br /&gt;
&lt;br /&gt;
== Porting Objects from the HelperApi ==&lt;br /&gt;
&lt;br /&gt;
What is the [[helperapi]]?&lt;br /&gt;
&lt;br /&gt;
Have a look at the [[porting notes]]&lt;br /&gt;
&lt;br /&gt;
Have a look at a [[porting example]]&lt;br /&gt;
&lt;br /&gt;
[[Porting_notes#Calc_Objects_to_port|list]] of objects that need porting&lt;br /&gt;
&lt;br /&gt;
[[Porting_notes#Missing_attributes.2Fmethods_to_port|list]] of methods ( to be ported from [[helperapi]] ) to existing objects&lt;br /&gt;
&lt;br /&gt;
== Understanding the VBA usage patterns ==&lt;br /&gt;
&lt;br /&gt;
VBA model is huge and we need help in understanding the VBA usage patterns for prioritizing as we progress. It&amp;#039;s important to receive as many Microsoft Office documents with macros as possible for analysis. &amp;#039;&amp;#039;&amp;#039;We are interested in documents from developers and regular people too.&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
=== Dumping the VBA from your MS Office documents ===&lt;br /&gt;
&lt;br /&gt;
==== libgsf ====&lt;br /&gt;
&lt;br /&gt;
If you&amp;#039;re worried about the sheet data you can use &amp;#039;&amp;#039;test-msvba&amp;#039;&amp;#039; from the [http://freshmeat.net/projects/libgsf/ libgsf]. Download the latest [http://cvs.gnome.org/viewcvs/libgsf/tests/test-msvba.c test-msvba.c] file and compile it with the following command:&lt;br /&gt;
&lt;br /&gt;
 gcc `pkg-config --libs --cflags libgsf-1` -o test-msvba test-msvba.c&lt;br /&gt;
&lt;br /&gt;
Note: you need to have libgsf-devel package installed.&lt;br /&gt;
&lt;br /&gt;
Now, you can dump the VBA from your documents with the following command:&lt;br /&gt;
&lt;br /&gt;
 find -name &amp;#039;*.xls&amp;#039; -exec sh -c &amp;#039;test-msvba {} &amp;gt;&amp;gt; ~/excel-vba-stream-for-noel.bas&amp;#039; \;&lt;br /&gt;
&lt;br /&gt;
==== pole ====&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;p&amp;gt;Or you can use [http://pole.berlios.de/ POLE] with GUI. POLE is a portable C++ library to access structured storage. It is designed to be compatible with Microsoft structured storage, also sometimes known as OLE Compound Document.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Exporting modules from the Microsoft Excel ===&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;p&amp;gt;Open your document and edit associated macros. You can see list of modules on the left side of your screen. Use the right mouse button and select &amp;#039;&amp;#039;Export&amp;#039;&amp;#039; from the context menu. The whole module will be saved as one huge &amp;#039;&amp;#039;*.bas&amp;#039;&amp;#039;.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Where to send ===&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;p&amp;gt;If you are going to send pure VBA streams, send them directly to [Noel dot Power at Novell dot com].&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Implementation ==&lt;br /&gt;
&lt;br /&gt;
=== The desired sequence ===&lt;br /&gt;
&lt;br /&gt;
==== Add an extension to the IDL ====&lt;br /&gt;
&lt;br /&gt;
The IDL lives in oovbaapi/org/openoffice/*, the IDL syntax can easily be gleaned from a few other IDL files. Two things are worth bearing in mind:&lt;br /&gt;
* it&amp;#039;s important that the argument names are correct, so that the &amp;lt;tt&amp;gt;MsgBox title:=&amp;quot;hello&amp;quot;&amp;lt;/tt&amp;gt; syntax works correctly.&lt;br /&gt;
* for optional arguments, or variant types you need to use the &amp;lt;tt&amp;gt;any&amp;lt;/tt&amp;gt; type&lt;br /&gt;
&lt;br /&gt;
Having edited the IDL extension you need to:&lt;br /&gt;
* run: &amp;lt;tt&amp;gt;build &amp;amp;&amp;amp; deliver&amp;lt;/tt&amp;gt; in oovbaapi (perhaps remove types.db first),&lt;br /&gt;
&lt;br /&gt;
==== Add the extension to the implementation ====&lt;br /&gt;
&lt;br /&gt;
The impl. code lives in &amp;lt;tt&amp;gt;sc/source/ui/vba/&amp;lt;/tt&amp;gt; - create the right header and source files.&lt;br /&gt;
Add the method (with the correct prototype) to the header - often it&amp;#039;s easiest to cut/paste that from the compiled C++ headers in &amp;lt;tt&amp;gt;sc/unxlngixxx/inc/org/openoffice/vba/&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Then implement the method itself in the .cxx file. Run &amp;lt;tt&amp;gt;build debug=true&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Running it ====&lt;br /&gt;
&lt;br /&gt;
You did use [linkoo] right ? - in which case - just re-run soffice.bin (killall -9 soffice.bin first to ensure there is no lurking factory process).&lt;br /&gt;
&lt;br /&gt;
Now of course - you want to add a new test to exercise it to ooo-build/test/macro/*. And of course loop back to the beginning.&lt;br /&gt;
Once you&amp;#039;ve got something you want to share - a simple &amp;lt;tt&amp;gt;cvs diff -u | tee /tmp/foo.diff&amp;lt;/tt&amp;gt; in ooo-build/scratch will yield a patch you can mail to Noel / the ooo-build mailing list to get your code folded in.&lt;br /&gt;
NB. it&amp;#039;s important you sign the [http://www.openoffice.org/licenses/jca.pdf JCA] first.&lt;br /&gt;
&lt;br /&gt;
== Testing ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;It&amp;#039;s extremely important to test the work which is already done. You can use test cases from the &amp;#039;&amp;#039;ooo-build/test/macro&amp;#039;&amp;#039; directory, you can extend them or you can write your own test cases.&amp;lt;/p&amp;gt;&lt;br /&gt;
It&amp;#039;s a good idea to write test cases directly in the Microsoft Excel?&lt;br /&gt;
&lt;br /&gt;
== Accessing the VBA API from other languages ==&lt;br /&gt;
&lt;br /&gt;
The VBA API is implemented by an UNO service, the service is accessible via a singleton. As such it is possible to use the API from any language that has an UNO binding. The main entry points to the API are certain global variables { Application, ActiveWorkbook and ActiveSheet } or methods { WorkSheets, WorkBooks } exported by the service. Using these globals as a starting point the rest of the api can be accessed.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;NOTE:&amp;#039;&amp;#039;&amp;#039;  Beaware the idl is not stable, ( nor won&amp;#039;t be for the forseeable future be &amp;#039;published&amp;#039; ) it WILL change, so if you are using a language that has a binary dependency on the interface ( like c++ &amp;amp; java ) then consider yourselves warned. &lt;br /&gt;
&lt;br /&gt;
=== Python ===&lt;br /&gt;
&lt;br /&gt;
 vba = uno.getComponentContext().getByName(&amp;quot;/singletons/org.openoffice.vba.theGlobals&amp;quot;)&lt;br /&gt;
 sheet = vba.ActiveSheet&lt;br /&gt;
 book = vba.ActiveWorkbook&lt;br /&gt;
&lt;br /&gt;
=== Java ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
import org.openoffice.vba.*;&lt;br /&gt;
&amp;quot;&lt;br /&gt;
// getComponentCtxFromSomewhere is a fictional&lt;br /&gt;
// routine representing acquisition of the component context&lt;br /&gt;
// from e.g. remote ServiceManage if the code is a remote client&lt;br /&gt;
// or from the XScriptContext if this were a java ScriptingFramework script &lt;br /&gt;
&lt;br /&gt;
XComponentContext ctx = getComponentCtxFromSomewhere(); &lt;br /&gt;
Object oGlobs = ctx.getValueByName(&lt;br /&gt;
                &amp;quot;/singletons/org.openoffice.vba.theGlobals&amp;quot;);&lt;br /&gt;
XGlobals xGlobs = AnyConverter.toObject(&lt;br /&gt;
                new Type(XGlobals.class), oGlobs);&lt;br /&gt;
XWorkBook xWBook =  xGlobs.getActiveWorkbook();&lt;br /&gt;
XWorkSheet xSheet = xGlobs.getActiveWorkSheet();&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== OO Basic ===&lt;br /&gt;
&lt;br /&gt;
Basic allows access to the global variables automatically just like VBA does, there is no need to create any services or access any singletons to use the API&lt;br /&gt;
&lt;br /&gt;
 msgbox &amp;quot;Name of the current document is &amp;quot; &amp;amp;amp; ActiveWorkbook.Path&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Visual Basic ===&lt;br /&gt;
&lt;br /&gt;
Visual Basic, VBA, VBScript and other COM-enabled languages supports accessing OpenOffice VBA API via COM-UNO bridge &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Set oServiceManager = CreateObject(&amp;quot;com.sun.star.ServiceManager&amp;quot;)&lt;br /&gt;
Set oDesktop = oServiceManager.createInstance(&amp;quot;com.sun.star.frame.Desktop&amp;quot;)&lt;br /&gt;
Dim aNoArgs()&lt;br /&gt;
Set oCalcDoc = oDesktop.loadComponentFromURL(&amp;quot;private:factory/scalc&amp;quot;, &amp;quot;_blank&amp;quot;, 0, aNoArgs)&lt;br /&gt;
    &lt;br /&gt;
Set v = oServiceManager.DefaultContext.getValueByName(&amp;quot;/singletons/org.openoffice.vba.theGlobals&amp;quot;)&lt;br /&gt;
Set app = v.Application&lt;br /&gt;
MsgBox app.Version&lt;br /&gt;
Set cell = app.ActiveCell&lt;br /&gt;
cell.Value = &amp;quot;Hello!&amp;quot;&lt;br /&gt;
Set r = app.Range(&amp;quot;B1&amp;quot;, &amp;quot;B1&amp;quot;)&lt;br /&gt;
r.Value = &amp;quot;Hi1&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
CHM Help file generated from oovbaapi IDL:&lt;br /&gt;
http://community.i-rs.ru/index.php?action=dlattach;topic=6096.0;attach=4431&lt;br /&gt;
[[Category:Development]]&lt;/div&gt;</summary>
		<author><name>Npower</name></author>
	</entry>
	<entry>
		<id>https://wiki.openoffice.org/w/index.php?title=VBA&amp;diff=53445</id>
		<title>VBA</title>
		<link rel="alternate" type="text/html" href="https://wiki.openoffice.org/w/index.php?title=VBA&amp;diff=53445"/>
		<updated>2007-11-12T13:06:33Z</updated>

		<summary type="html">&lt;p&gt;Npower: /* Dashboard */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[VBA zh|中]]&lt;br /&gt;
&lt;br /&gt;
[http://vba.openoffice.org VBA interoperability] project is a joint Novell &amp;amp; Sun incubator project whose aim is to deliver a way to run Excel and Word macros natively in imported documents.&lt;br /&gt;
* Noel Power ( co-lead )&lt;br /&gt;
* Andreas Breagas ( co-lead )&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Visual Basic for Applications&amp;#039;&amp;#039;&amp;#039; (&amp;#039;&amp;#039;&amp;#039;VBA&amp;#039;&amp;#039;&amp;#039;) is an implementation of Microsoft&amp;#039;s  [[wikipedia:Visual Basic|Visual Basic]] which is built into all Microsoft Office applications. &lt;br /&gt;
 &lt;br /&gt;
== Latest news ==&lt;br /&gt;
* cws [http://eis.services.openoffice.org/EIS2/cws.ShowCWS?Path=SRC680%2Fnpower6 npower6] has been integrated into m211&lt;br /&gt;
* Update Wiki Page with latest info&lt;br /&gt;
* [http://blogs.sun.com/GullFOSS/entry/sun_and_novell_work_together Novell and Sun to work together] on the VBA incubator project&lt;br /&gt;
* I am delighted that Andreas Bregas now joins me to co-lead the vba incubator project&lt;br /&gt;
&lt;br /&gt;
== Terminology ==&lt;br /&gt;
&lt;br /&gt;
* [[helperapi]] - The compatibility API generously donated by Sun that was part of their migration toolkit &lt;br /&gt;
* [[oovbaapi]] - the ooo-build vba interoperability solution originally implemented by Novell + object implementations from the helperapi.  Note: [[Ooo-build]] contains the latest VBA model and patches which allows you to run macros from your Microsoft Office documents. This model is under heavy development by Novell and others and the changes are continuously ported to openoffice. It is expected that many macros won&amp;#039;t run for now.&lt;br /&gt;
&lt;br /&gt;
== Dashboard ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* cws [http://eis.services.openoffice.org/EIS2/cws.ShowCWS?Path=SRC680%2Fnpower8 npower8] ( nearly complete ) ( contains )&lt;br /&gt;
    * some helperapi object porting &lt;br /&gt;
    * changes to include new multi-inheritance style idl and new style service definitions&lt;br /&gt;
    * removal of idl for compatibilty constants[1]&lt;br /&gt;
* cws [http://eis.services.openoffice.org/EIS2/cws.ShowCWS?Path=SRC680%2Fnpower7 npower7] integrated&lt;br /&gt;
* cws [http://eis.services.openoffice.org/EIS2/cws.ShowCWS?Path=SRC680%2Fnpower6 npower6] integrated&lt;br /&gt;
&lt;br /&gt;
[1] these will be generated using the mechanism from the helperapi ( basically the idl is generated from metadata files, the idl files are not preserved ( or needed ) but the types database generated from the idl files&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Task queue and status ( in order of priority )&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;vertical-align:top; text-align:left; background-color:#efefef;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background-color:#d6d6d6;font-weight:bold;&amp;quot; &lt;br /&gt;
| Feature || Description|| Issue # || Planned cws || State || Milestone integrated || &lt;br /&gt;
|-&lt;br /&gt;
| autogenerate constants in oovbaapi || port helperapi constant solution to oovbaapi module || 75551 || npower8 || started  || n/a ||&lt;br /&gt;
|-&lt;br /&gt;
| ooo-build api sync || synchronise ooo-build api changes with upstream || 77189 || npower8 || done  || n/a ||&lt;br /&gt;
|-&lt;br /&gt;
| array of array indexing  || in vba array of array indexing is very common, e.g. &amp;lt;tt&amp;gt;myArray(1)(2)&amp;lt;/tt&amp;gt;|| n/a || n/a || n/a  || n/a ||&lt;br /&gt;
|-&lt;br /&gt;
| toolbox control event support  || these controls support a loose binding where the presence of a macro event handler of the form &amp;lt;tt&amp;gt;controlname_xxx e.g. controlname_click&amp;lt;/tt&amp;gt;  results in the appropriate macro getting called when the associated action takes place || n/a || n/a || n/a  || n/a |||&lt;br /&gt;
|-&lt;br /&gt;
| port helperapi constants  || helperapi constants are autogenerated from metadata files, they are more complete than those already present in the oovbaapi module added in npower6 || 75551 || npower8 || planned  || n/a ||&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Completed Features&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;vertical-align:top; text-align:left; background-color:#efefef;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background-color:#d6d6d6;font-weight:bold;&amp;quot; &lt;br /&gt;
| Feature || Description|| Issue # || Planned cws || State || Milestone integrated || &lt;br /&gt;
|-&lt;br /&gt;
| vba constants || adjust basic runtime to be &amp;#039;conditionally&amp;#039; aware of the vba constants defined in oovbaapi module || 68897 || npower7 || complete  || n/a ||&lt;br /&gt;
|-&lt;br /&gt;
| support dim of vba object || adjust basic runtime to be &amp;#039;conditionally&amp;#039; allow a vba compatibilty api object to be used like &amp;lt;tt&amp;gt;Dim r1 as Range&amp;lt;/tt&amp;gt; || 68897 || npower7 || complete || n/a ||&lt;br /&gt;
|-&lt;br /&gt;
| compatible erase array || in vba compatibility mode erase does not behave as expected || 70380 || npower7 || complete  || n/a ||&lt;br /&gt;
|-&lt;br /&gt;
| null variant behaviour || in vba compatibility mode operations on null variant objects behave differently || 71827 || npower7 || complete  || n/a ||&lt;br /&gt;
|-&lt;br /&gt;
| &amp;#039;Like&amp;#039;  || new &amp;#039;Like&amp;#039; operator for basic || 73830 || npower7 || complete  || n/a ||&lt;br /&gt;
|-&lt;br /&gt;
| Module scope variable  || in vba module scope variables lifetime is tied to the document containing the macro ||  76819 || npower7 || complete  || n/a ||&lt;br /&gt;
|-&lt;br /&gt;
| support simple range short cut references || in vba the evaluate function is used for resolving many things, one of theses is short cut range references  e.g. &amp;#039;[a1:b2]&amp;#039; || 68898 || npower7 || complete  || n/a ||&lt;br /&gt;
|-&lt;br /&gt;
| fix accent handling || in vba mode accents in modules or macros are not handled || 76818 || npower7 || complete  || n/a ||&lt;br /&gt;
|-&lt;br /&gt;
| fix object comparison || in vba mode there is a problem comparing objects with default paramaters ( when the default is not specified ) ||  76820 || npower7 || complete  || n/a ||&lt;br /&gt;
|-&lt;br /&gt;
| class module import || when class modules are imported the correct &amp;#039;option&amp;#039; should be set ||  76822 || npower7 || complete || n/a ||&lt;br /&gt;
|-&lt;br /&gt;
| migrate ooo-build code || suck in the mountain of idl and implementation code from ooo-build  || 74096 || npower6 || complete || m211 ||&lt;br /&gt;
|-&lt;br /&gt;
| import vba code || conditionally import ( uncommented ) vba code and set appropriate  module options || 64570 || npower6 || complete  || m211 ||&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Broader scope tasks that need more investigation ( and splitting into smaller tasks ) (to be added)&lt;br /&gt;
&lt;br /&gt;
create list of items that may need promoting from vba compatibility to &amp;lt;tt&amp;gt;Standard&amp;lt;/tt&amp;gt; ooo-basic behaviour e.g. like issue [[http://www.openoffice.org/issues/show_bug.cgi?id=70380 70380]]&lt;br /&gt;
&lt;br /&gt;
== How to enable the VBA model ==&lt;br /&gt;
&lt;br /&gt;
The VBA model is enabled by default in the current ooo-build. It&amp;#039;s enough to [[Getting It|get]], [[Building with ooobuild|build]], [[Installing|install]], and [[Running|be able to run]] it. &lt;br /&gt;
&lt;br /&gt;
If you are using upstream OpenOffice.org and wish to play with this feature then check out and build the cws [http://eis.services.openoffice.org/EIS2/cws.ShowCWS?Path=SRC680%2Fnpower6 npower6] which contains the initial code drop for the oovbaapi &lt;br /&gt;
&lt;br /&gt;
== How to disable the VBA model ==&lt;br /&gt;
&lt;br /&gt;
Depending on how your version of OpenOffice.org delivers the VBA feature to you, there are a number of ways to disable it. &lt;br /&gt;
&lt;br /&gt;
If you have an Openoffice.org built by a linux distro ( or a windows one from Novell ) that has the vba interop feature then all you need do is navigate to the &amp;#039;Tools.Options.Load/Save.VBAProperties&amp;#039; page and uncheck the &amp;#039;Load Excelbasic code to edit&amp;#039; option.&lt;br /&gt;
&lt;br /&gt;
If you are using an own build ( incorporating ) [http://eis.services.openoffice.org/EIS2/cws.ShowCWS?Path=SRC680%2Fnpower6 cws-npower6] the above method will always work. But if you built the vba interop feature as an office extension then you can of course disable or delete the vbaapi.oxt extension using the Extension Manager.&lt;br /&gt;
&lt;br /&gt;
== How can I help you? ==&lt;br /&gt;
&lt;br /&gt;
We need help in a couple of areas, [[Porting notes|porting]] objects from the [[helperapi]], understanding the VBA usage patterns, implementation and testing; see below.&lt;br /&gt;
&lt;br /&gt;
== Porting Objects from the HelperApi ==&lt;br /&gt;
&lt;br /&gt;
What is the [[helperapi]]?&lt;br /&gt;
&lt;br /&gt;
Have a look at the [[porting notes]]&lt;br /&gt;
&lt;br /&gt;
Have a look at a [[porting example]]&lt;br /&gt;
&lt;br /&gt;
[[Porting_notes#Calc_Objects_to_port|list]] of objects that need porting&lt;br /&gt;
&lt;br /&gt;
[[Porting_notes#Missing_attributes.2Fmethods_to_port|list]] of methods ( to be ported from [[helperapi]] ) to existing objects&lt;br /&gt;
&lt;br /&gt;
== Understanding the VBA usage patterns ==&lt;br /&gt;
&lt;br /&gt;
VBA model is huge and we need help in understanding the VBA usage patterns for prioritizing as we progress. It&amp;#039;s important to receive as many Microsoft Office documents with macros as possible for analysis. &amp;#039;&amp;#039;&amp;#039;We are interested in documents from developers and regular people too.&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
=== Dumping the VBA from your MS Office documents ===&lt;br /&gt;
&lt;br /&gt;
==== libgsf ====&lt;br /&gt;
&lt;br /&gt;
If you&amp;#039;re worried about the sheet data you can use &amp;#039;&amp;#039;test-msvba&amp;#039;&amp;#039; from the [http://freshmeat.net/projects/libgsf/ libgsf]. Download the latest [http://cvs.gnome.org/viewcvs/libgsf/tests/test-msvba.c test-msvba.c] file and compile it with the following command:&lt;br /&gt;
&lt;br /&gt;
 gcc `pkg-config --libs --cflags libgsf-1` -o test-msvba test-msvba.c&lt;br /&gt;
&lt;br /&gt;
Note: you need to have libgsf-devel package installed.&lt;br /&gt;
&lt;br /&gt;
Now, you can dump the VBA from your documents with the following command:&lt;br /&gt;
&lt;br /&gt;
 find -name &amp;#039;*.xls&amp;#039; -exec sh -c &amp;#039;test-msvba {} &amp;gt;&amp;gt; ~/excel-vba-stream-for-noel.bas&amp;#039; \;&lt;br /&gt;
&lt;br /&gt;
==== pole ====&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;p&amp;gt;Or you can use [http://pole.berlios.de/ POLE] with GUI. POLE is a portable C++ library to access structured storage. It is designed to be compatible with Microsoft structured storage, also sometimes known as OLE Compound Document.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Exporting modules from the Microsoft Excel ===&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;p&amp;gt;Open your document and edit associated macros. You can see list of modules on the left side of your screen. Use the right mouse button and select &amp;#039;&amp;#039;Export&amp;#039;&amp;#039; from the context menu. The whole module will be saved as one huge &amp;#039;&amp;#039;*.bas&amp;#039;&amp;#039;.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Where to send ===&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;p&amp;gt;If you are going to send pure VBA streams, send them directly to [Noel dot Power at Novell dot com].&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Implementation ==&lt;br /&gt;
&lt;br /&gt;
=== The desired sequence ===&lt;br /&gt;
&lt;br /&gt;
==== Add an extension to the IDL ====&lt;br /&gt;
&lt;br /&gt;
The IDL lives in oovbaapi/org/openoffice/*, the IDL syntax can easily be gleaned from a few other IDL files. Two things are worth bearing in mind:&lt;br /&gt;
* it&amp;#039;s important that the argument names are correct, so that the &amp;lt;tt&amp;gt;MsgBox title:=&amp;quot;hello&amp;quot;&amp;lt;/tt&amp;gt; syntax works correctly.&lt;br /&gt;
* for optional arguments, or variant types you need to use the &amp;lt;tt&amp;gt;any&amp;lt;/tt&amp;gt; type&lt;br /&gt;
&lt;br /&gt;
Having edited the IDL extension you need to:&lt;br /&gt;
* run: &amp;lt;tt&amp;gt;build &amp;amp;&amp;amp; deliver&amp;lt;/tt&amp;gt; in oovbaapi (perhaps remove types.db first),&lt;br /&gt;
&lt;br /&gt;
==== Add the extension to the implementation ====&lt;br /&gt;
&lt;br /&gt;
The impl. code lives in &amp;lt;tt&amp;gt;sc/source/ui/vba/&amp;lt;/tt&amp;gt; - create the right header and source files.&lt;br /&gt;
Add the method (with the correct prototype) to the header - often it&amp;#039;s easiest to cut/paste that from the compiled C++ headers in &amp;lt;tt&amp;gt;sc/unxlngixxx/inc/org/openoffice/vba/&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Then implement the method itself in the .cxx file. Run &amp;lt;tt&amp;gt;build debug=true&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Running it ====&lt;br /&gt;
&lt;br /&gt;
You did use [linkoo] right ? - in which case - just re-run soffice.bin (killall -9 soffice.bin first to ensure there is no lurking factory process).&lt;br /&gt;
&lt;br /&gt;
Now of course - you want to add a new test to exercise it to ooo-build/test/macro/*. And of course loop back to the beginning.&lt;br /&gt;
Once you&amp;#039;ve got something you want to share - a simple &amp;lt;tt&amp;gt;cvs diff -u | tee /tmp/foo.diff&amp;lt;/tt&amp;gt; in ooo-build/scratch will yield a patch you can mail to Noel / the ooo-build mailing list to get your code folded in.&lt;br /&gt;
NB. it&amp;#039;s important you sign the [http://www.openoffice.org/licenses/jca.pdf JCA] first.&lt;br /&gt;
&lt;br /&gt;
== Testing ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;It&amp;#039;s extremely important to test the work which is already done. You can use test cases from the &amp;#039;&amp;#039;ooo-build/test/macro&amp;#039;&amp;#039; directory, you can extend them or you can write your own test cases.&amp;lt;/p&amp;gt;&lt;br /&gt;
It&amp;#039;s a good idea to write test cases directly in the Microsoft Excel?&lt;br /&gt;
&lt;br /&gt;
== Accessing the VBA API from other languages ==&lt;br /&gt;
&lt;br /&gt;
The VBA API is implemented by an UNO service, the service is accessible via a singleton. As such it is possible to use the API from any language that has an UNO binding. The main entry points to the API are certain global variables { Application, ActiveWorkbook and ActiveSheet } or methods { WorkSheets, WorkBooks } exported by the service. Using these globals as a starting point the rest of the api can be accessed.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;NOTE:&amp;#039;&amp;#039;&amp;#039;  Beaware the idl is not stable, ( nor won&amp;#039;t be for the forseeable future be &amp;#039;published&amp;#039; ) it WILL change, so if you are using a language that has a binary dependency on the interface ( like c++ &amp;amp; java ) then consider yourselves warned. &lt;br /&gt;
&lt;br /&gt;
=== Python ===&lt;br /&gt;
&lt;br /&gt;
 vba = uno.getComponentContext().getByName(&amp;quot;/singletons/org.openoffice.vba.theGlobals&amp;quot;)&lt;br /&gt;
 sheet = vba.ActiveSheet&lt;br /&gt;
 book = vba.ActiveWorkbook&lt;br /&gt;
&lt;br /&gt;
=== Java ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
import org.openoffice.vba.*;&lt;br /&gt;
&amp;quot;&lt;br /&gt;
// getComponentCtxFromSomewhere is a fictional&lt;br /&gt;
// routine representing acquisition of the component context&lt;br /&gt;
// from e.g. remote ServiceManage if the code is a remote client&lt;br /&gt;
// or from the XScriptContext if this were a java ScriptingFramework script &lt;br /&gt;
&lt;br /&gt;
XComponentContext ctx = getComponentCtxFromSomewhere(); &lt;br /&gt;
Object oGlobs = ctx.getValueByName(&lt;br /&gt;
                &amp;quot;/singletons/org.openoffice.vba.theGlobals&amp;quot;);&lt;br /&gt;
XGlobals xGlobs = AnyConverter.toObject(&lt;br /&gt;
                new Type(XGlobals.class), oGlobs);&lt;br /&gt;
XWorkBook xWBook =  xGlobs.getActiveWorkbook();&lt;br /&gt;
XWorkSheet xSheet = xGlobs.getActiveWorkSheet();&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== OO Basic ===&lt;br /&gt;
&lt;br /&gt;
Basic allows access to the global variables automatically just like VBA does, there is no need to create any services or access any singletons to use the API&lt;br /&gt;
&lt;br /&gt;
 msgbox &amp;quot;Name of the current document is &amp;quot; &amp;amp;amp; ActiveWorkbook.Path&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Visual Basic ===&lt;br /&gt;
&lt;br /&gt;
Visual Basic, VBA, VBScript and other COM-enabled languages supports accessing OpenOffice VBA API via COM-UNO bridge &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Set oServiceManager = CreateObject(&amp;quot;com.sun.star.ServiceManager&amp;quot;)&lt;br /&gt;
Set oDesktop = oServiceManager.createInstance(&amp;quot;com.sun.star.frame.Desktop&amp;quot;)&lt;br /&gt;
Dim aNoArgs()&lt;br /&gt;
Set oCalcDoc = oDesktop.loadComponentFromURL(&amp;quot;private:factory/scalc&amp;quot;, &amp;quot;_blank&amp;quot;, 0, aNoArgs)&lt;br /&gt;
    &lt;br /&gt;
Set v = oServiceManager.DefaultContext.getValueByName(&amp;quot;/singletons/org.openoffice.vba.theGlobals&amp;quot;)&lt;br /&gt;
Set app = v.Application&lt;br /&gt;
MsgBox app.Version&lt;br /&gt;
Set cell = app.ActiveCell&lt;br /&gt;
cell.Value = &amp;quot;Hello!&amp;quot;&lt;br /&gt;
Set r = app.Range(&amp;quot;B1&amp;quot;, &amp;quot;B1&amp;quot;)&lt;br /&gt;
r.Value = &amp;quot;Hi1&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
CHM Help file generated from oovbaapi IDL:&lt;br /&gt;
http://community.i-rs.ru/index.php?action=dlattach;topic=6096.0;attach=4431&lt;br /&gt;
[[Category:Development]]&lt;/div&gt;</summary>
		<author><name>Npower</name></author>
	</entry>
	<entry>
		<id>https://wiki.openoffice.org/w/index.php?title=Porting_notes&amp;diff=33588</id>
		<title>Porting notes</title>
		<link rel="alternate" type="text/html" href="https://wiki.openoffice.org/w/index.php?title=Porting_notes&amp;diff=33588"/>
		<updated>2007-05-30T08:33:20Z</updated>

		<summary type="html">&lt;p&gt;Npower: /* [possibly incomplete ] Calc Objects to port from helperapi */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== Things to watch out for ===&lt;br /&gt;
* The mapping of the vba constants is different. Take for example the &amp;lt;tt&amp;gt;xlGuess&amp;lt;/tt&amp;gt; constant, in VBA it&amp;#039;s fully qualified name is &amp;lt;tt&amp;gt;Excel.XlYesNoGuess.xlGuess&amp;lt;/tt&amp;gt;, in the helperapi it&amp;#039;s &amp;lt;tt&amp;gt;com.sun.star.helper.constant.XlYesNoGuess.xlGuess&amp;lt;/tt&amp;gt; and in oovbaapi it&amp;#039;s &amp;lt;tt&amp;gt;org.openoffice.excel.XlYesNoGuess.xlGuess&amp;lt;/tt&amp;gt; &lt;br /&gt;
* All objects in the helperapi extend [http://api.openoffice.org/source/browse/*checkout*/api/helperapi/impl/com/sun/star/helper/HelperInterfaceAdaptor.java?rev=1.1 HelperInterfaceAdaptor], nothing similar (yet) exists in oovbaapi so this can be ignored in the implementation&lt;br /&gt;
* There are a quite few helper classes in the helperapi project e.g. &amp;lt;tt&amp;gt;RangeHelper.java&amp;lt;/tt&amp;gt; they shouldn&amp;#039;t be confused with the actual implementation objects we wish to port.&lt;br /&gt;
* classes and idl files of the same name can exist in multiple namespaces and this can be confusing. Because the helperapi was written with both the word and excel api(s) in mind there can be classes that share a common implementation and interfaces e.g.&lt;br /&gt;
** &amp;lt;tt&amp;gt;com/sun/star/helper/calc/XShape.idl&amp;lt;/tt&amp;gt;&lt;br /&gt;
** &amp;lt;tt&amp;gt;com/sun/star/helper/common/XShape.idl&amp;lt;/tt&amp;gt;&lt;br /&gt;
** &amp;lt;tt&amp;gt;com/sun/star/helper/writer/XShape.idl&amp;lt;/tt&amp;gt;&lt;br /&gt;
* Collections, these are handled differently see implementing a vba [[Porting notes#Collection|Collection]] in oovbaapi&lt;br /&gt;
* Every helperapi idl method defines [http://api.openoffice.org/source/browse/*checkout*/api/udkapi/com/sun/star/script/BasicErrorException.idl BasicErrorException] which allows and api method to transfer an error code and associated string paramater to basic.&lt;br /&gt;
&lt;br /&gt;
=== Hints for porting idl ===&lt;br /&gt;
==== Objects with Default Properties ====&lt;br /&gt;
This is something not handled by the helperapi but something you should be aware of when implementing a vba compatibility object. What is a default property, an example probably explains the concept better.&lt;br /&gt;
&lt;br /&gt;
 Range(&amp;quot;a1&amp;quot;) = &amp;quot;text&amp;quot;&lt;br /&gt;
&lt;br /&gt;
is a short cut for&lt;br /&gt;
&lt;br /&gt;
 Range(&amp;quot;a1&amp;quot;).Value = &amp;quot;text&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;Value&amp;lt;/tt&amp;gt; is a default property in the example above. We can provide similar behavior in basic with a compatibility api object ensuring the object implements [http://api.openoffice.org/source/browse/*checkout*/api/udkapi/com/sun/star/script/XDefaultProperty.idl XDefaultProperty.idl ]&lt;br /&gt;
&lt;br /&gt;
==== Objects with Default Method ====&lt;br /&gt;
&lt;br /&gt;
Similar to above some vba objects have a default method e.g. the &amp;lt;tt&amp;gt;Collection&amp;lt;/tt&amp;gt; object&lt;br /&gt;
&lt;br /&gt;
 set col = Sheets&lt;br /&gt;
 msgbox col(1).Name&lt;br /&gt;
&lt;br /&gt;
is a short cut for&lt;br /&gt;
&lt;br /&gt;
 set col = Sheets&lt;br /&gt;
 msgbox col.Item(1).Name&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;Item&amp;lt;/tt&amp;gt; is a default method in the example above. We can provide similar behavior in basic with a compatibility api object ensuring the object implements [http://api.openoffice.org/source/browse/*checkout*/api/udkapi/com/sun/star/script/XDefaultMethod.idl XDefaultMethod.idl ]&lt;br /&gt;
&lt;br /&gt;
==== Porting Collection objects ====&lt;br /&gt;
Generally all collection objects have a &amp;lt;tt&amp;gt;Count&amp;lt;/tt&amp;gt; and an &amp;lt;tt&amp;gt;Item&amp;lt;/tt&amp;gt; method and additionally the behaviour mentioned above. Also Collection objects can be used in a &amp;lt;tt&amp;gt;For Each&amp;lt;/tt&amp;gt; loop. To cater for that a helper implementation object &amp;lt;tt&amp;gt;ScVbaCollectionBaseImpl&amp;lt;/tt&amp;gt; provides the necessary information to the basic runtime to allow it to provide the classic vba &amp;lt;tt&amp;gt;Collection&amp;lt;/tt&amp;gt; class syntax support. It also requires to be initialised by an XIndexAccess implementation. Additionally the class inheriting from  &amp;lt;tt&amp;gt;ScVbaCollectionBaseImpl&amp;lt;/tt&amp;gt; must provide the  translation between the object iterated ( via XIndexAccess ) and the corrosponding compatibilty object returned to openoffice basic via the the &amp;lt;tt&amp;gt;createCollectionObject&amp;lt;/tt&amp;gt; method.&lt;br /&gt;
&lt;br /&gt;
A example of a ported &amp;lt;tt&amp;gt;Collection&amp;lt;/tt&amp;gt; object can be found in the [[Porting example]] section&lt;br /&gt;
&lt;br /&gt;
=== [possibly incomplete ] List of Calc Objects to port from helperapi ===&lt;br /&gt;
{| style=&amp;quot;vertical-align:top; text-align:left; background-color:#efefef;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background-color:#d6d6d6;font-weight:bold;&amp;quot; &lt;br /&gt;
| Object || helperapi implementation name || Porting started by || Status || Notes&lt;br /&gt;
|-&lt;br /&gt;
| XAutoFilter.idl || [http://api.openoffice.org/source/browse/*checkout*/api/helperapi/impl/com/sun/star/helper/calc/AutoFilterImpl.java AutoFilterImpl] ||  ||   || there is a partial (untested) implementation in the porting example section, would be nice for some one to finish&lt;br /&gt;
|-&lt;br /&gt;
| XFilter.idl || [http://api.openoffice.org/source/browse/*checkout*/api/helperapi/impl/com/sun/star/helper/calc/FilterImpl.java FilterImpl.java]  ||  ||  || see above.&lt;br /&gt;
|-&lt;br /&gt;
| XFilters.idl || [http://api.openoffice.org/source/browse/*checkout*/api/helperapi/impl/com/sun/star/helper/calc/FiltersImpl.java FiltersImpl.java] ||  ||  || see above.&lt;br /&gt;
|-&lt;br /&gt;
| XAxes.idl || [http://api.openoffice.org/source/browse/*checkout*/api/helperapi/impl/com/sun/star/helper/calc/AxesImpl.java AxesImpl.java]  ||  npower || in progress ||&lt;br /&gt;
|-&lt;br /&gt;
| XAxis.idl || [http://api.openoffice.org/source/browse/*checkout*/api/helperapi/impl/com/sun/star/helper/calc/AxesImpl.java AxisImpl.java]  || npower || in progress  ||&lt;br /&gt;
|-&lt;br /&gt;
| XAxisTitle.idl || [http://api.openoffice.org/source/browse/*checkout*/api/helperapi/impl/com/sun/star/helper/calc/AxesTitleImpl.java AxisTitleImpl.java] ||  npower || complete  || not-tested&lt;br /&gt;
|-&lt;br /&gt;
| XCalc.idl || xxxx  || not required for porting see [[Application Object]] ||  || This is not a &amp;#039;real&amp;#039; object but in a collection of global method/attributes that probably should be part of the XApplication.idl interface&lt;br /&gt;
|-&lt;br /&gt;
| XChartObject.idl || [http://api.openoffice.org/source/browse/*checkout*/api/helperapi/impl/com/sun/star/helper/calc/ChartObjectImpl.java ChartObjectImpl.java] || npower || complete || not-tested&lt;br /&gt;
|-&lt;br /&gt;
| XChartObjects.idl || [http://api.openoffice.org/source/browse/*checkout*/api/helperapi/impl/com/sun/star/helper/calc/ChartObjectsImpl.java ChartObjectsImpl.java] || npower || complete || not-tested &lt;br /&gt;
|-&lt;br /&gt;
| XChart.idl || [http://api.openoffice.org/source/browse/*checkout*/api/helperapi/impl/com/sun/star/helper/calc/ChartImpl.java ChartImpl.java] || npower || in progress || &lt;br /&gt;
|-&lt;br /&gt;
| XCharts.idl ||  [http://api.openoffice.org/source/browse/*checkout*/api/helperapi/impl/com/sun/star/helper/calc/ChartsImpl.java ChartsImpl.java]  ||  npower ||  in progress ||&lt;br /&gt;
|-&lt;br /&gt;
| XChartTitle.idl || [http://api.openoffice.org/source/browse/*checkout*/api/helperapi/impl/com/sun/star/helper/calc/ChartTileImpl.java ChartTitleImpl.java]  || npower || complete || not-tested&lt;br /&gt;
|-&lt;br /&gt;
| XDataLabel.idl || [http://api.openoffice.org/source/browse/*checkout*/api/helperapi/impl/com/sun/star/helper/calc/DataLabelImp.java DataLabelImpl.java] || npower || in progress ||&lt;br /&gt;
|-&lt;br /&gt;
| XDataLabels.idl || [http://api.openoffice.org/source/browse/*checkout*/api/helperapi/impl/com/sun/star/helper/calc/DataLabelsImp.java DataLabelsImpl.java] ||  npower || in progress ||&lt;br /&gt;
|-&lt;br /&gt;
| XFormatCondition.idl || xxxx  ||  npower || complete || not tested&lt;br /&gt;
|-&lt;br /&gt;
| XFormatConditions.idl || xxxx  ||  npower || complete || not tested&lt;br /&gt;
|-&lt;br /&gt;
| XFormat.idl || xxxx  || npower || complete  || not tested &lt;br /&gt;
|-&lt;br /&gt;
| XHPageBreak.idl || xxxx  ||  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
| XHPageBreaks.idl || xxxx  ||  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
| XName.idl || xxxx  || sola ||  ||&lt;br /&gt;
|-&lt;br /&gt;
| XNames.idl || xxxx  || sola ||  ||&lt;br /&gt;
|-&lt;br /&gt;
| XPageBreak.idl || xxxx  ||  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
|[http://api.openoffice.org/source/browse/api/helperapi/com/sun/star/helper/calc/XPageSetup.idl XPageSetup.idl] || [http://api.openoffice.org/source/browse/api/helperapi/impl/com/sun/star/helper/calc/PageSetupImpl.java PageSetupImpl]  || zhang ||&lt;br /&gt;
|-&lt;br /&gt;
|[http://api.openoffice.org/source/browse/api/helperapi/com/sun/star/helper/calc/XPane.idl XPane.idl] || [http://api.openoffice.org/source/browse/api/helperapi/impl/com/sun/star/helper/calc/PaneImpl.java PaneImpl]  || Jiao.Jianhua || calc complete||&lt;br /&gt;
|-&lt;br /&gt;
| XPoint.idl || xxxx  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
| XPoints.idl || xxxx  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
| XProtection.idl || xxxx  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
| XQueryTable.idl || xxxx  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
| XQueryTables.idl || xxxx  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
| XShape.idl || xxxx  || jiao.jianhua || in progress ||&lt;br /&gt;
|-&lt;br /&gt;
| XShapes.idl || xxxx  || jiao.jianhua  || calc complete, no full text ||&lt;br /&gt;
|-&lt;br /&gt;
| XStyle.idl || xxxx  ||  npower || complete || not tested&lt;br /&gt;
|-&lt;br /&gt;
| XStyles.idl || xxxx  || npower || inprogress ||&lt;br /&gt;
|-&lt;br /&gt;
| XTitle.idl || xxxx  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
| XVPageBreak.idl || xxxx  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
| XVPageBreaks.idl|| xxxx  ||  ||&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Common Objects to port ===&lt;br /&gt;
{| style=&amp;quot;vertical-align:top; text-align:left; background-color:#efefef;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background-color:#d6d6d6;font-weight:bold;&amp;quot; &lt;br /&gt;
| Object || helperapi implementation name || Porting stared by? || Status ||&lt;br /&gt;
|-&lt;br /&gt;
| XAutoFilter.idl || xxxx || ||&lt;br /&gt;
|-&lt;br /&gt;
| XPictureFormat || xxxx || Jiao.Jianhua || in progress&lt;br /&gt;
|-&lt;br /&gt;
| XColorFormat || xxxx || Jiao.Jianhua || calc complete, no full text ||&lt;br /&gt;
|-&lt;br /&gt;
| XPosSize || xxxx || Jiao.Jianhua || implemented in org.openoffice.XControl ||&lt;br /&gt;
|-&lt;br /&gt;
| XWindow || xxxx || ||&lt;br /&gt;
|-&lt;br /&gt;
| XFileSearch || xxxx || ||&lt;br /&gt;
|-&lt;br /&gt;
| XWrapFormat || xxxx || || in word ||&lt;br /&gt;
|-&lt;br /&gt;
| XFillFormat || xxxx || Jiao.Jianhua || calc complete, no full text ||&lt;br /&gt;
|-&lt;br /&gt;
| XShapeRange || xxxx || Jiao.Jianhua || calc complete, no full text ||&lt;br /&gt;
|-&lt;br /&gt;
| XFoundFiles || xxxx || ||&lt;br /&gt;
|-&lt;br /&gt;
| XLineFormat || xxxx || Jiao.Jianhua || calc complete, no full text ||&lt;br /&gt;
|-&lt;br /&gt;
| XTextFrame || xxxx || Jiao.Jianhua || calc complete, no full text ||&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Missing attributes/methods ( common to helperapi objects ) to port ===&lt;br /&gt;
[[Application Object]]&lt;br /&gt;
&lt;br /&gt;
[[Range Object]]&lt;/div&gt;</summary>
		<author><name>Npower</name></author>
	</entry>
	<entry>
		<id>https://wiki.openoffice.org/w/index.php?title=Porting_notes&amp;diff=33587</id>
		<title>Porting notes</title>
		<link rel="alternate" type="text/html" href="https://wiki.openoffice.org/w/index.php?title=Porting_notes&amp;diff=33587"/>
		<updated>2007-05-30T08:33:00Z</updated>

		<summary type="html">&lt;p&gt;Npower: /* Calc Objects to port */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== Things to watch out for ===&lt;br /&gt;
* The mapping of the vba constants is different. Take for example the &amp;lt;tt&amp;gt;xlGuess&amp;lt;/tt&amp;gt; constant, in VBA it&amp;#039;s fully qualified name is &amp;lt;tt&amp;gt;Excel.XlYesNoGuess.xlGuess&amp;lt;/tt&amp;gt;, in the helperapi it&amp;#039;s &amp;lt;tt&amp;gt;com.sun.star.helper.constant.XlYesNoGuess.xlGuess&amp;lt;/tt&amp;gt; and in oovbaapi it&amp;#039;s &amp;lt;tt&amp;gt;org.openoffice.excel.XlYesNoGuess.xlGuess&amp;lt;/tt&amp;gt; &lt;br /&gt;
* All objects in the helperapi extend [http://api.openoffice.org/source/browse/*checkout*/api/helperapi/impl/com/sun/star/helper/HelperInterfaceAdaptor.java?rev=1.1 HelperInterfaceAdaptor], nothing similar (yet) exists in oovbaapi so this can be ignored in the implementation&lt;br /&gt;
* There are a quite few helper classes in the helperapi project e.g. &amp;lt;tt&amp;gt;RangeHelper.java&amp;lt;/tt&amp;gt; they shouldn&amp;#039;t be confused with the actual implementation objects we wish to port.&lt;br /&gt;
* classes and idl files of the same name can exist in multiple namespaces and this can be confusing. Because the helperapi was written with both the word and excel api(s) in mind there can be classes that share a common implementation and interfaces e.g.&lt;br /&gt;
** &amp;lt;tt&amp;gt;com/sun/star/helper/calc/XShape.idl&amp;lt;/tt&amp;gt;&lt;br /&gt;
** &amp;lt;tt&amp;gt;com/sun/star/helper/common/XShape.idl&amp;lt;/tt&amp;gt;&lt;br /&gt;
** &amp;lt;tt&amp;gt;com/sun/star/helper/writer/XShape.idl&amp;lt;/tt&amp;gt;&lt;br /&gt;
* Collections, these are handled differently see implementing a vba [[Porting notes#Collection|Collection]] in oovbaapi&lt;br /&gt;
* Every helperapi idl method defines [http://api.openoffice.org/source/browse/*checkout*/api/udkapi/com/sun/star/script/BasicErrorException.idl BasicErrorException] which allows and api method to transfer an error code and associated string paramater to basic.&lt;br /&gt;
&lt;br /&gt;
=== Hints for porting idl ===&lt;br /&gt;
==== Objects with Default Properties ====&lt;br /&gt;
This is something not handled by the helperapi but something you should be aware of when implementing a vba compatibility object. What is a default property, an example probably explains the concept better.&lt;br /&gt;
&lt;br /&gt;
 Range(&amp;quot;a1&amp;quot;) = &amp;quot;text&amp;quot;&lt;br /&gt;
&lt;br /&gt;
is a short cut for&lt;br /&gt;
&lt;br /&gt;
 Range(&amp;quot;a1&amp;quot;).Value = &amp;quot;text&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;Value&amp;lt;/tt&amp;gt; is a default property in the example above. We can provide similar behavior in basic with a compatibility api object ensuring the object implements [http://api.openoffice.org/source/browse/*checkout*/api/udkapi/com/sun/star/script/XDefaultProperty.idl XDefaultProperty.idl ]&lt;br /&gt;
&lt;br /&gt;
==== Objects with Default Method ====&lt;br /&gt;
&lt;br /&gt;
Similar to above some vba objects have a default method e.g. the &amp;lt;tt&amp;gt;Collection&amp;lt;/tt&amp;gt; object&lt;br /&gt;
&lt;br /&gt;
 set col = Sheets&lt;br /&gt;
 msgbox col(1).Name&lt;br /&gt;
&lt;br /&gt;
is a short cut for&lt;br /&gt;
&lt;br /&gt;
 set col = Sheets&lt;br /&gt;
 msgbox col.Item(1).Name&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;Item&amp;lt;/tt&amp;gt; is a default method in the example above. We can provide similar behavior in basic with a compatibility api object ensuring the object implements [http://api.openoffice.org/source/browse/*checkout*/api/udkapi/com/sun/star/script/XDefaultMethod.idl XDefaultMethod.idl ]&lt;br /&gt;
&lt;br /&gt;
==== Porting Collection objects ====&lt;br /&gt;
Generally all collection objects have a &amp;lt;tt&amp;gt;Count&amp;lt;/tt&amp;gt; and an &amp;lt;tt&amp;gt;Item&amp;lt;/tt&amp;gt; method and additionally the behaviour mentioned above. Also Collection objects can be used in a &amp;lt;tt&amp;gt;For Each&amp;lt;/tt&amp;gt; loop. To cater for that a helper implementation object &amp;lt;tt&amp;gt;ScVbaCollectionBaseImpl&amp;lt;/tt&amp;gt; provides the necessary information to the basic runtime to allow it to provide the classic vba &amp;lt;tt&amp;gt;Collection&amp;lt;/tt&amp;gt; class syntax support. It also requires to be initialised by an XIndexAccess implementation. Additionally the class inheriting from  &amp;lt;tt&amp;gt;ScVbaCollectionBaseImpl&amp;lt;/tt&amp;gt; must provide the  translation between the object iterated ( via XIndexAccess ) and the corrosponding compatibilty object returned to openoffice basic via the the &amp;lt;tt&amp;gt;createCollectionObject&amp;lt;/tt&amp;gt; method.&lt;br /&gt;
&lt;br /&gt;
A example of a ported &amp;lt;tt&amp;gt;Collection&amp;lt;/tt&amp;gt; object can be found in the [[Porting example]] section&lt;br /&gt;
&lt;br /&gt;
=== [possibly incomplete ] Calc Objects to port from helperapi ===&lt;br /&gt;
{| style=&amp;quot;vertical-align:top; text-align:left; background-color:#efefef;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background-color:#d6d6d6;font-weight:bold;&amp;quot; &lt;br /&gt;
| Object || helperapi implementation name || Porting started by || Status || Notes&lt;br /&gt;
|-&lt;br /&gt;
| XAutoFilter.idl || [http://api.openoffice.org/source/browse/*checkout*/api/helperapi/impl/com/sun/star/helper/calc/AutoFilterImpl.java AutoFilterImpl] ||  ||   || there is a partial (untested) implementation in the porting example section, would be nice for some one to finish&lt;br /&gt;
|-&lt;br /&gt;
| XFilter.idl || [http://api.openoffice.org/source/browse/*checkout*/api/helperapi/impl/com/sun/star/helper/calc/FilterImpl.java FilterImpl.java]  ||  ||  || see above.&lt;br /&gt;
|-&lt;br /&gt;
| XFilters.idl || [http://api.openoffice.org/source/browse/*checkout*/api/helperapi/impl/com/sun/star/helper/calc/FiltersImpl.java FiltersImpl.java] ||  ||  || see above.&lt;br /&gt;
|-&lt;br /&gt;
| XAxes.idl || [http://api.openoffice.org/source/browse/*checkout*/api/helperapi/impl/com/sun/star/helper/calc/AxesImpl.java AxesImpl.java]  ||  npower || in progress ||&lt;br /&gt;
|-&lt;br /&gt;
| XAxis.idl || [http://api.openoffice.org/source/browse/*checkout*/api/helperapi/impl/com/sun/star/helper/calc/AxesImpl.java AxisImpl.java]  || npower || in progress  ||&lt;br /&gt;
|-&lt;br /&gt;
| XAxisTitle.idl || [http://api.openoffice.org/source/browse/*checkout*/api/helperapi/impl/com/sun/star/helper/calc/AxesTitleImpl.java AxisTitleImpl.java] ||  npower || complete  || not-tested&lt;br /&gt;
|-&lt;br /&gt;
| XCalc.idl || xxxx  || not required for porting see [[Application Object]] ||  || This is not a &amp;#039;real&amp;#039; object but in a collection of global method/attributes that probably should be part of the XApplication.idl interface&lt;br /&gt;
|-&lt;br /&gt;
| XChartObject.idl || [http://api.openoffice.org/source/browse/*checkout*/api/helperapi/impl/com/sun/star/helper/calc/ChartObjectImpl.java ChartObjectImpl.java] || npower || complete || not-tested&lt;br /&gt;
|-&lt;br /&gt;
| XChartObjects.idl || [http://api.openoffice.org/source/browse/*checkout*/api/helperapi/impl/com/sun/star/helper/calc/ChartObjectsImpl.java ChartObjectsImpl.java] || npower || complete || not-tested &lt;br /&gt;
|-&lt;br /&gt;
| XChart.idl || [http://api.openoffice.org/source/browse/*checkout*/api/helperapi/impl/com/sun/star/helper/calc/ChartImpl.java ChartImpl.java] || npower || in progress || &lt;br /&gt;
|-&lt;br /&gt;
| XCharts.idl ||  [http://api.openoffice.org/source/browse/*checkout*/api/helperapi/impl/com/sun/star/helper/calc/ChartsImpl.java ChartsImpl.java]  ||  npower ||  in progress ||&lt;br /&gt;
|-&lt;br /&gt;
| XChartTitle.idl || [http://api.openoffice.org/source/browse/*checkout*/api/helperapi/impl/com/sun/star/helper/calc/ChartTileImpl.java ChartTitleImpl.java]  || npower || complete || not-tested&lt;br /&gt;
|-&lt;br /&gt;
| XDataLabel.idl || [http://api.openoffice.org/source/browse/*checkout*/api/helperapi/impl/com/sun/star/helper/calc/DataLabelImp.java DataLabelImpl.java] || npower || in progress ||&lt;br /&gt;
|-&lt;br /&gt;
| XDataLabels.idl || [http://api.openoffice.org/source/browse/*checkout*/api/helperapi/impl/com/sun/star/helper/calc/DataLabelsImp.java DataLabelsImpl.java] ||  npower || in progress ||&lt;br /&gt;
|-&lt;br /&gt;
| XFormatCondition.idl || xxxx  ||  npower || complete || not tested&lt;br /&gt;
|-&lt;br /&gt;
| XFormatConditions.idl || xxxx  ||  npower || complete || not tested&lt;br /&gt;
|-&lt;br /&gt;
| XFormat.idl || xxxx  || npower || complete  || not tested &lt;br /&gt;
|-&lt;br /&gt;
| XHPageBreak.idl || xxxx  ||  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
| XHPageBreaks.idl || xxxx  ||  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
| XName.idl || xxxx  || sola ||  ||&lt;br /&gt;
|-&lt;br /&gt;
| XNames.idl || xxxx  || sola ||  ||&lt;br /&gt;
|-&lt;br /&gt;
| XPageBreak.idl || xxxx  ||  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
|[http://api.openoffice.org/source/browse/api/helperapi/com/sun/star/helper/calc/XPageSetup.idl XPageSetup.idl] || [http://api.openoffice.org/source/browse/api/helperapi/impl/com/sun/star/helper/calc/PageSetupImpl.java PageSetupImpl]  || zhang ||&lt;br /&gt;
|-&lt;br /&gt;
|[http://api.openoffice.org/source/browse/api/helperapi/com/sun/star/helper/calc/XPane.idl XPane.idl] || [http://api.openoffice.org/source/browse/api/helperapi/impl/com/sun/star/helper/calc/PaneImpl.java PaneImpl]  || Jiao.Jianhua || calc complete||&lt;br /&gt;
|-&lt;br /&gt;
| XPoint.idl || xxxx  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
| XPoints.idl || xxxx  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
| XProtection.idl || xxxx  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
| XQueryTable.idl || xxxx  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
| XQueryTables.idl || xxxx  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
| XShape.idl || xxxx  || jiao.jianhua || in progress ||&lt;br /&gt;
|-&lt;br /&gt;
| XShapes.idl || xxxx  || jiao.jianhua  || calc complete, no full text ||&lt;br /&gt;
|-&lt;br /&gt;
| XStyle.idl || xxxx  ||  npower || complete || not tested&lt;br /&gt;
|-&lt;br /&gt;
| XStyles.idl || xxxx  || npower || inprogress ||&lt;br /&gt;
|-&lt;br /&gt;
| XTitle.idl || xxxx  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
| XVPageBreak.idl || xxxx  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
| XVPageBreaks.idl|| xxxx  ||  ||&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Common Objects to port ===&lt;br /&gt;
{| style=&amp;quot;vertical-align:top; text-align:left; background-color:#efefef;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background-color:#d6d6d6;font-weight:bold;&amp;quot; &lt;br /&gt;
| Object || helperapi implementation name || Porting stared by? || Status ||&lt;br /&gt;
|-&lt;br /&gt;
| XAutoFilter.idl || xxxx || ||&lt;br /&gt;
|-&lt;br /&gt;
| XPictureFormat || xxxx || Jiao.Jianhua || in progress&lt;br /&gt;
|-&lt;br /&gt;
| XColorFormat || xxxx || Jiao.Jianhua || calc complete, no full text ||&lt;br /&gt;
|-&lt;br /&gt;
| XPosSize || xxxx || Jiao.Jianhua || implemented in org.openoffice.XControl ||&lt;br /&gt;
|-&lt;br /&gt;
| XWindow || xxxx || ||&lt;br /&gt;
|-&lt;br /&gt;
| XFileSearch || xxxx || ||&lt;br /&gt;
|-&lt;br /&gt;
| XWrapFormat || xxxx || || in word ||&lt;br /&gt;
|-&lt;br /&gt;
| XFillFormat || xxxx || Jiao.Jianhua || calc complete, no full text ||&lt;br /&gt;
|-&lt;br /&gt;
| XShapeRange || xxxx || Jiao.Jianhua || calc complete, no full text ||&lt;br /&gt;
|-&lt;br /&gt;
| XFoundFiles || xxxx || ||&lt;br /&gt;
|-&lt;br /&gt;
| XLineFormat || xxxx || Jiao.Jianhua || calc complete, no full text ||&lt;br /&gt;
|-&lt;br /&gt;
| XTextFrame || xxxx || Jiao.Jianhua || calc complete, no full text ||&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Missing attributes/methods ( common to helperapi objects ) to port ===&lt;br /&gt;
[[Application Object]]&lt;br /&gt;
&lt;br /&gt;
[[Range Object]]&lt;/div&gt;</summary>
		<author><name>Npower</name></author>
	</entry>
	<entry>
		<id>https://wiki.openoffice.org/w/index.php?title=Range_Object&amp;diff=33585</id>
		<title>Range Object</title>
		<link rel="alternate" type="text/html" href="https://wiki.openoffice.org/w/index.php?title=Range_Object&amp;diff=33585"/>
		<updated>2007-05-30T08:27:56Z</updated>

		<summary type="html">&lt;p&gt;Npower: /* Range Object */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== Range Object ===&lt;br /&gt;
{| style=&amp;quot;vertical-align:top; text-align:left; background-color:#efefef;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background-color:#d6d6d6;font-weight:bold;&amp;quot; &lt;br /&gt;
| method/property name || helperapi idl:implementation || Porting started by? || Status || Notes ||&lt;br /&gt;
|-&lt;br /&gt;
| Calculate || XRange.idl:RangeImpl || npower || done || not tested&lt;br /&gt;
|-&lt;br /&gt;
| Item || XRange.idl:RangeImpl || npower || done || not tested &lt;br /&gt;
|-&lt;br /&gt;
| AutoOutline || XRange.idl:RangeImpl ||  npower ||  done || not tested&lt;br /&gt;
|-&lt;br /&gt;
| ClearOutline || XRange.idl:RangeImpl || npower  || done || not tested&lt;br /&gt;
|-&lt;br /&gt;
| AddIndent || XRange.idl:FormatImpl ||   ||  ( lipservice implementation )&lt;br /&gt;
|-&lt;br /&gt;
| Group || XRange.idl:RangeImpl || npower  || done || not tested&lt;br /&gt;
|-&lt;br /&gt;
| UnGroup || XRange.idl:RangeImpl ||  npower || done || not tested&lt;br /&gt;
|-&lt;br /&gt;
| Merge || XRange.idl:RangeImpl || npower  || done || not tested&lt;br /&gt;
|-&lt;br /&gt;
| UnMerge || XRange.idl:RangeImpl || npower  || done || not tested&lt;br /&gt;
|-&lt;br /&gt;
| Style || XRange.idl:RangeImpl ||  npower || done || not tested&lt;br /&gt;
|-&lt;br /&gt;
| FormatConditions || XRange.idl:RangeImpl ||  done || not tested &lt;br /&gt;
|-&lt;br /&gt;
| Next || XRange.idl:RangeImpl ||  npower || done || not tested &lt;br /&gt;
|-&lt;br /&gt;
| Previous || XRange.idl:RangeImpl ||  npower || done || not tested&lt;br /&gt;
|-&lt;br /&gt;
| SpecialCells || XRange.idl:RangeImpl ||  npower || done || not tested &lt;br /&gt;
|-&lt;br /&gt;
| Top || XRange.idl:RangeImpl ||  npower || done || not tested&lt;br /&gt;
|-&lt;br /&gt;
| Left || XRange.idl:RangeImpl ||  npower ||  done || not tested&lt;br /&gt;
|-&lt;br /&gt;
| Height || XRange.idl:RangeImpl ||  npower || done || not tested&lt;br /&gt;
|-&lt;br /&gt;
| Width || XRange.idl:RangeImpl ||  npower ||  done || not tested&lt;br /&gt;
|-&lt;br /&gt;
| RemoveSubtotal || XRange.idl:RangeImpl || npower || done || not tested &lt;br /&gt;
|-&lt;br /&gt;
| Subtotal || XRange.idl:RangeImpl || npower || done || not tested &lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Npower</name></author>
	</entry>
	<entry>
		<id>https://wiki.openoffice.org/w/index.php?title=Porting_notes&amp;diff=33584</id>
		<title>Porting notes</title>
		<link rel="alternate" type="text/html" href="https://wiki.openoffice.org/w/index.php?title=Porting_notes&amp;diff=33584"/>
		<updated>2007-05-30T08:27:19Z</updated>

		<summary type="html">&lt;p&gt;Npower: /* Calc Objects to port */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== Things to watch out for ===&lt;br /&gt;
* The mapping of the vba constants is different. Take for example the &amp;lt;tt&amp;gt;xlGuess&amp;lt;/tt&amp;gt; constant, in VBA it&amp;#039;s fully qualified name is &amp;lt;tt&amp;gt;Excel.XlYesNoGuess.xlGuess&amp;lt;/tt&amp;gt;, in the helperapi it&amp;#039;s &amp;lt;tt&amp;gt;com.sun.star.helper.constant.XlYesNoGuess.xlGuess&amp;lt;/tt&amp;gt; and in oovbaapi it&amp;#039;s &amp;lt;tt&amp;gt;org.openoffice.excel.XlYesNoGuess.xlGuess&amp;lt;/tt&amp;gt; &lt;br /&gt;
* All objects in the helperapi extend [http://api.openoffice.org/source/browse/*checkout*/api/helperapi/impl/com/sun/star/helper/HelperInterfaceAdaptor.java?rev=1.1 HelperInterfaceAdaptor], nothing similar (yet) exists in oovbaapi so this can be ignored in the implementation&lt;br /&gt;
* There are a quite few helper classes in the helperapi project e.g. &amp;lt;tt&amp;gt;RangeHelper.java&amp;lt;/tt&amp;gt; they shouldn&amp;#039;t be confused with the actual implementation objects we wish to port.&lt;br /&gt;
* classes and idl files of the same name can exist in multiple namespaces and this can be confusing. Because the helperapi was written with both the word and excel api(s) in mind there can be classes that share a common implementation and interfaces e.g.&lt;br /&gt;
** &amp;lt;tt&amp;gt;com/sun/star/helper/calc/XShape.idl&amp;lt;/tt&amp;gt;&lt;br /&gt;
** &amp;lt;tt&amp;gt;com/sun/star/helper/common/XShape.idl&amp;lt;/tt&amp;gt;&lt;br /&gt;
** &amp;lt;tt&amp;gt;com/sun/star/helper/writer/XShape.idl&amp;lt;/tt&amp;gt;&lt;br /&gt;
* Collections, these are handled differently see implementing a vba [[Porting notes#Collection|Collection]] in oovbaapi&lt;br /&gt;
* Every helperapi idl method defines [http://api.openoffice.org/source/browse/*checkout*/api/udkapi/com/sun/star/script/BasicErrorException.idl BasicErrorException] which allows and api method to transfer an error code and associated string paramater to basic.&lt;br /&gt;
&lt;br /&gt;
=== Hints for porting idl ===&lt;br /&gt;
==== Objects with Default Properties ====&lt;br /&gt;
This is something not handled by the helperapi but something you should be aware of when implementing a vba compatibility object. What is a default property, an example probably explains the concept better.&lt;br /&gt;
&lt;br /&gt;
 Range(&amp;quot;a1&amp;quot;) = &amp;quot;text&amp;quot;&lt;br /&gt;
&lt;br /&gt;
is a short cut for&lt;br /&gt;
&lt;br /&gt;
 Range(&amp;quot;a1&amp;quot;).Value = &amp;quot;text&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;Value&amp;lt;/tt&amp;gt; is a default property in the example above. We can provide similar behavior in basic with a compatibility api object ensuring the object implements [http://api.openoffice.org/source/browse/*checkout*/api/udkapi/com/sun/star/script/XDefaultProperty.idl XDefaultProperty.idl ]&lt;br /&gt;
&lt;br /&gt;
==== Objects with Default Method ====&lt;br /&gt;
&lt;br /&gt;
Similar to above some vba objects have a default method e.g. the &amp;lt;tt&amp;gt;Collection&amp;lt;/tt&amp;gt; object&lt;br /&gt;
&lt;br /&gt;
 set col = Sheets&lt;br /&gt;
 msgbox col(1).Name&lt;br /&gt;
&lt;br /&gt;
is a short cut for&lt;br /&gt;
&lt;br /&gt;
 set col = Sheets&lt;br /&gt;
 msgbox col.Item(1).Name&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;Item&amp;lt;/tt&amp;gt; is a default method in the example above. We can provide similar behavior in basic with a compatibility api object ensuring the object implements [http://api.openoffice.org/source/browse/*checkout*/api/udkapi/com/sun/star/script/XDefaultMethod.idl XDefaultMethod.idl ]&lt;br /&gt;
&lt;br /&gt;
==== Porting Collection objects ====&lt;br /&gt;
Generally all collection objects have a &amp;lt;tt&amp;gt;Count&amp;lt;/tt&amp;gt; and an &amp;lt;tt&amp;gt;Item&amp;lt;/tt&amp;gt; method and additionally the behaviour mentioned above. Also Collection objects can be used in a &amp;lt;tt&amp;gt;For Each&amp;lt;/tt&amp;gt; loop. To cater for that a helper implementation object &amp;lt;tt&amp;gt;ScVbaCollectionBaseImpl&amp;lt;/tt&amp;gt; provides the necessary information to the basic runtime to allow it to provide the classic vba &amp;lt;tt&amp;gt;Collection&amp;lt;/tt&amp;gt; class syntax support. It also requires to be initialised by an XIndexAccess implementation. Additionally the class inheriting from  &amp;lt;tt&amp;gt;ScVbaCollectionBaseImpl&amp;lt;/tt&amp;gt; must provide the  translation between the object iterated ( via XIndexAccess ) and the corrosponding compatibilty object returned to openoffice basic via the the &amp;lt;tt&amp;gt;createCollectionObject&amp;lt;/tt&amp;gt; method.&lt;br /&gt;
&lt;br /&gt;
A example of a ported &amp;lt;tt&amp;gt;Collection&amp;lt;/tt&amp;gt; object can be found in the [[Porting example]] section&lt;br /&gt;
&lt;br /&gt;
=== Calc Objects to port ===&lt;br /&gt;
{| style=&amp;quot;vertical-align:top; text-align:left; background-color:#efefef;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background-color:#d6d6d6;font-weight:bold;&amp;quot; &lt;br /&gt;
| Object || helperapi implementation name || Porting started by || Status || Notes&lt;br /&gt;
|-&lt;br /&gt;
| XAutoFilter.idl || [http://api.openoffice.org/source/browse/*checkout*/api/helperapi/impl/com/sun/star/helper/calc/AutoFilterImpl.java AutoFilterImpl] ||  ||   || there is a partial (untested) implementation in the porting example section, would be nice for some one to finish&lt;br /&gt;
|-&lt;br /&gt;
| XFilter.idl || [http://api.openoffice.org/source/browse/*checkout*/api/helperapi/impl/com/sun/star/helper/calc/FilterImpl.java FilterImpl.java]  ||  ||  || see above.&lt;br /&gt;
|-&lt;br /&gt;
| XFilters.idl || [http://api.openoffice.org/source/browse/*checkout*/api/helperapi/impl/com/sun/star/helper/calc/FiltersImpl.java FiltersImpl.java] ||  ||  || see above.&lt;br /&gt;
|-&lt;br /&gt;
| XAxes.idl || [http://api.openoffice.org/source/browse/*checkout*/api/helperapi/impl/com/sun/star/helper/calc/AxesImpl.java AxesImpl.java]  ||  npower || in progress ||&lt;br /&gt;
|-&lt;br /&gt;
| XAxis.idl || [http://api.openoffice.org/source/browse/*checkout*/api/helperapi/impl/com/sun/star/helper/calc/AxesImpl.java AxisImpl.java]  || npower || in progress  ||&lt;br /&gt;
|-&lt;br /&gt;
| XAxisTitle.idl || [http://api.openoffice.org/source/browse/*checkout*/api/helperapi/impl/com/sun/star/helper/calc/AxesTitleImpl.java AxisTitleImpl.java] ||  npower || complete  || not-tested&lt;br /&gt;
|-&lt;br /&gt;
| XCalc.idl || xxxx  || not required for porting see [[Application Object]] ||  || This is not a &amp;#039;real&amp;#039; object but in a collection of global method/attributes that probably should be part of the XApplication.idl interface&lt;br /&gt;
|-&lt;br /&gt;
| XChartObject.idl || [http://api.openoffice.org/source/browse/*checkout*/api/helperapi/impl/com/sun/star/helper/calc/ChartObjectImpl.java ChartObjectImpl.java] || npower || complete || not-tested&lt;br /&gt;
|-&lt;br /&gt;
| XChartObjects.idl || [http://api.openoffice.org/source/browse/*checkout*/api/helperapi/impl/com/sun/star/helper/calc/ChartObjectsImpl.java ChartObjectsImpl.java] || npower || complete || not-tested &lt;br /&gt;
|-&lt;br /&gt;
| XChart.idl || [http://api.openoffice.org/source/browse/*checkout*/api/helperapi/impl/com/sun/star/helper/calc/ChartImpl.java ChartImpl.java] || npower || in progress || &lt;br /&gt;
|-&lt;br /&gt;
| XCharts.idl ||  [http://api.openoffice.org/source/browse/*checkout*/api/helperapi/impl/com/sun/star/helper/calc/ChartsImpl.java ChartsImpl.java]  ||  npower ||  in progress ||&lt;br /&gt;
|-&lt;br /&gt;
| XChartTitle.idl || [http://api.openoffice.org/source/browse/*checkout*/api/helperapi/impl/com/sun/star/helper/calc/ChartTileImpl.java ChartTitleImpl.java]  || npower || complete || not-tested&lt;br /&gt;
|-&lt;br /&gt;
| XDataLabel.idl || [http://api.openoffice.org/source/browse/*checkout*/api/helperapi/impl/com/sun/star/helper/calc/DataLabelImp.java DataLabelImpl.java] || npower || in progress ||&lt;br /&gt;
|-&lt;br /&gt;
| XDataLabels.idl || [http://api.openoffice.org/source/browse/*checkout*/api/helperapi/impl/com/sun/star/helper/calc/DataLabelsImp.java DataLabelsImpl.java] ||  npower || in progress ||&lt;br /&gt;
|-&lt;br /&gt;
| XFormatCondition.idl || xxxx  ||  npower || complete || not tested&lt;br /&gt;
|-&lt;br /&gt;
| XFormatConditions.idl || xxxx  ||  npower || complete || not tested&lt;br /&gt;
|-&lt;br /&gt;
| XFormat.idl || xxxx  || npower || complete  || not tested &lt;br /&gt;
|-&lt;br /&gt;
| XHPageBreak.idl || xxxx  ||  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
| XHPageBreaks.idl || xxxx  ||  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
| XName.idl || xxxx  || sola ||  ||&lt;br /&gt;
|-&lt;br /&gt;
| XNames.idl || xxxx  || sola ||  ||&lt;br /&gt;
|-&lt;br /&gt;
| XPageBreak.idl || xxxx  ||  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
|[http://api.openoffice.org/source/browse/api/helperapi/com/sun/star/helper/calc/XPageSetup.idl XPageSetup.idl] || [http://api.openoffice.org/source/browse/api/helperapi/impl/com/sun/star/helper/calc/PageSetupImpl.java PageSetupImpl]  || zhang ||&lt;br /&gt;
|-&lt;br /&gt;
|[http://api.openoffice.org/source/browse/api/helperapi/com/sun/star/helper/calc/XPane.idl XPane.idl] || [http://api.openoffice.org/source/browse/api/helperapi/impl/com/sun/star/helper/calc/PaneImpl.java PaneImpl]  || Jiao.Jianhua || calc complete||&lt;br /&gt;
|-&lt;br /&gt;
| XPoint.idl || xxxx  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
| XPoints.idl || xxxx  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
| XProtection.idl || xxxx  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
| XQueryTable.idl || xxxx  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
| XQueryTables.idl || xxxx  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
| XShape.idl || xxxx  || jiao.jianhua || in progress ||&lt;br /&gt;
|-&lt;br /&gt;
| XShapes.idl || xxxx  || jiao.jianhua  || calc complete, no full text ||&lt;br /&gt;
|-&lt;br /&gt;
| XStyle.idl || xxxx  ||  npower || complete || not tested&lt;br /&gt;
|-&lt;br /&gt;
| XStyles.idl || xxxx  || npower || inprogress ||&lt;br /&gt;
|-&lt;br /&gt;
| XTitle.idl || xxxx  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
| XVPageBreak.idl || xxxx  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
| XVPageBreaks.idl|| xxxx  ||  ||&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Common Objects to port ===&lt;br /&gt;
{| style=&amp;quot;vertical-align:top; text-align:left; background-color:#efefef;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background-color:#d6d6d6;font-weight:bold;&amp;quot; &lt;br /&gt;
| Object || helperapi implementation name || Porting stared by? || Status ||&lt;br /&gt;
|-&lt;br /&gt;
| XAutoFilter.idl || xxxx || ||&lt;br /&gt;
|-&lt;br /&gt;
| XPictureFormat || xxxx || Jiao.Jianhua || in progress&lt;br /&gt;
|-&lt;br /&gt;
| XColorFormat || xxxx || Jiao.Jianhua || calc complete, no full text ||&lt;br /&gt;
|-&lt;br /&gt;
| XPosSize || xxxx || Jiao.Jianhua || implemented in org.openoffice.XControl ||&lt;br /&gt;
|-&lt;br /&gt;
| XWindow || xxxx || ||&lt;br /&gt;
|-&lt;br /&gt;
| XFileSearch || xxxx || ||&lt;br /&gt;
|-&lt;br /&gt;
| XWrapFormat || xxxx || || in word ||&lt;br /&gt;
|-&lt;br /&gt;
| XFillFormat || xxxx || Jiao.Jianhua || calc complete, no full text ||&lt;br /&gt;
|-&lt;br /&gt;
| XShapeRange || xxxx || Jiao.Jianhua || calc complete, no full text ||&lt;br /&gt;
|-&lt;br /&gt;
| XFoundFiles || xxxx || ||&lt;br /&gt;
|-&lt;br /&gt;
| XLineFormat || xxxx || Jiao.Jianhua || calc complete, no full text ||&lt;br /&gt;
|-&lt;br /&gt;
| XTextFrame || xxxx || Jiao.Jianhua || calc complete, no full text ||&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Missing attributes/methods ( common to helperapi objects ) to port ===&lt;br /&gt;
[[Application Object]]&lt;br /&gt;
&lt;br /&gt;
[[Range Object]]&lt;/div&gt;</summary>
		<author><name>Npower</name></author>
	</entry>
	<entry>
		<id>https://wiki.openoffice.org/w/index.php?title=VBA&amp;diff=33583</id>
		<title>VBA</title>
		<link rel="alternate" type="text/html" href="https://wiki.openoffice.org/w/index.php?title=VBA&amp;diff=33583"/>
		<updated>2007-05-30T08:25:51Z</updated>

		<summary type="html">&lt;p&gt;Npower: /* Dashboard */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
[[VBA zh|中]]&lt;br /&gt;
&lt;br /&gt;
[http://vba.openoffice.org VBA interoperability] project is a joint Novell &amp;amp; Sun incubator project whose aim is to deliver a way to run Excel and Word macros natively in imported documents.&lt;br /&gt;
* Noel Power ( co-lead )&lt;br /&gt;
* Andreas Breagas ( co-lead )&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Visual Basic for Applications&amp;#039;&amp;#039;&amp;#039; (&amp;#039;&amp;#039;&amp;#039;VBA&amp;#039;&amp;#039;&amp;#039;) is an implementation of Microsoft&amp;#039;s  [[wikipedia:Visual Basic|Visual Basic]] which is built into all Microsoft Office applications. &lt;br /&gt;
 &lt;br /&gt;
== Latest news ==&lt;br /&gt;
* cws [http://eis.services.openoffice.org/EIS2/cws.ShowCWS?Path=SRC680%2Fnpower6 npower6] has been integrated into m211&lt;br /&gt;
* Update Wiki Page with latest info&lt;br /&gt;
* [http://blogs.sun.com/GullFOSS/entry/sun_and_novell_work_together Novell and Sun to work together] on the VBA incubator project&lt;br /&gt;
* I am delighted that Andreas Bregas now joins me to co-lead the vba incubator project&lt;br /&gt;
&lt;br /&gt;
== Terminology ==&lt;br /&gt;
&lt;br /&gt;
* [[helperapi]] - The compatibility API generously donated by Sun that was part of their migration toolkit &lt;br /&gt;
* [[oovbaapi]] - the ooo-build vba interoperability solution originally implemented by Novell + object implementations from the helperapi.  Note: [[Ooo-build]] contains the latest VBA model and patches which allows you to run macros from your Microsoft Office documents. This model is under heavy development by Novell and others and the changes are continuously ported to openoffice. It is expected that many macros won&amp;#039;t run for now.&lt;br /&gt;
&lt;br /&gt;
== Dashboard ==&lt;br /&gt;
&lt;br /&gt;
* cws [http://eis.services.openoffice.org/EIS2/cws.ShowCWS?Path=SRC680%2Fnpower7 npower7] now IS &amp;#039;Ready for QA&amp;#039;&lt;br /&gt;
* cws [http://eis.services.openoffice.org/EIS2/cws.ShowCWS?Path=SRC680%2Fnpower6 npower6] integrated&lt;br /&gt;
* cws [http://eis.services.openoffice.org/EIS2/cws.ShowCWS?Path=SRC680%2Fnpower8 npower8] ( started ) ( contains )&lt;br /&gt;
    * some helperapi object porting &lt;br /&gt;
    * changes to include new multi-inheritance style idl and new style service definitions&lt;br /&gt;
    * removal of idl for compatibilty constants[1]&lt;br /&gt;
&lt;br /&gt;
[1] these will be generated using the mechanism from the helperapi ( basically the idl is generated from metadata files, the idl files are not preserved ( or needed ) but the types database generated from the idl files&lt;br /&gt;
&lt;br /&gt;
Task queue and status ( in order of priority )&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;vertical-align:top; text-align:left; background-color:#efefef;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background-color:#d6d6d6;font-weight:bold;&amp;quot; &lt;br /&gt;
| Feature || Description|| Issue # || Planned cws || State || Milestone integrated || &lt;br /&gt;
|-&lt;br /&gt;
| autogenerate constants in oovbaapi || port helperapi constant solution to oovbaapi module || 75551 || npower8 || started  || n/a ||&lt;br /&gt;
|-&lt;br /&gt;
| ooo-build api sync || synchronise ooo-build api changes with upstream || 77189 || npower8 || done  || n/a ||&lt;br /&gt;
|-&lt;br /&gt;
| array of array indexing  || in vba array of array indexing is very common, e.g. &amp;lt;tt&amp;gt;myArray(1)(2)&amp;lt;/tt&amp;gt;|| n/a || n/a || n/a  || n/a ||&lt;br /&gt;
|-&lt;br /&gt;
| toolbox control event support  || these controls support a loose binding where the presence of a macro event handler of the form &amp;lt;tt&amp;gt;controlname_xxx e.g. controlname_click&amp;lt;/tt&amp;gt;  results in the appropriate macro getting called when the associated action takes place || n/a || n/a || n/a  || n/a |||&lt;br /&gt;
|-&lt;br /&gt;
| port helperapi constants  || helperapi constants are autogenerated from metadata files, they are more complete than those already present in the oovbaapi module added in npower6 || 75551 || npower8 || planned  || n/a ||&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Completed Features&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;vertical-align:top; text-align:left; background-color:#efefef;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background-color:#d6d6d6;font-weight:bold;&amp;quot; &lt;br /&gt;
| Feature || Description|| Issue # || Planned cws || State || Milestone integrated || &lt;br /&gt;
|-&lt;br /&gt;
| vba constants || adjust basic runtime to be &amp;#039;conditionally&amp;#039; aware of the vba constants defined in oovbaapi module || 68897 || npower7 || complete  || n/a ||&lt;br /&gt;
|-&lt;br /&gt;
| support dim of vba object || adjust basic runtime to be &amp;#039;conditionally&amp;#039; allow a vba compatibilty api object to be used like &amp;lt;tt&amp;gt;Dim r1 as Range&amp;lt;/tt&amp;gt; || 68897 || npower7 || complete || n/a ||&lt;br /&gt;
|-&lt;br /&gt;
| compatible erase array || in vba compatibility mode erase does not behave as expected || 70380 || npower7 || complete  || n/a ||&lt;br /&gt;
|-&lt;br /&gt;
| null variant behaviour || in vba compatibility mode operations on null variant objects behave differently || 71827 || npower7 || complete  || n/a ||&lt;br /&gt;
|-&lt;br /&gt;
| &amp;#039;Like&amp;#039;  || new &amp;#039;Like&amp;#039; operator for basic || 73830 || npower7 || complete  || n/a ||&lt;br /&gt;
|-&lt;br /&gt;
| Module scope variable  || in vba module scope variables lifetime is tied to the document containing the macro ||  76819 || npower7 || complete  || n/a ||&lt;br /&gt;
|-&lt;br /&gt;
| support simple range short cut references || in vba the evaluate function is used for resolving many things, one of theses is short cut range references  e.g. &amp;#039;[a1:b2]&amp;#039; || 68898 || npower7 || complete  || n/a ||&lt;br /&gt;
|-&lt;br /&gt;
| fix accent handling || in vba mode accents in modules or macros are not handled || 76818 || npower7 || complete  || n/a ||&lt;br /&gt;
|-&lt;br /&gt;
| fix object comparison || in vba mode there is a problem comparing objects with default paramaters ( when the default is not specified ) ||  76820 || npower7 || complete  || n/a ||&lt;br /&gt;
|-&lt;br /&gt;
| class module import || when class modules are imported the correct &amp;#039;option&amp;#039; should be set ||  76822 || npower7 || complete || n/a ||&lt;br /&gt;
|-&lt;br /&gt;
| migrate ooo-build code || suck in the mountain of idl and implementation code from ooo-build  || 74096 || npower6 || complete || m211 ||&lt;br /&gt;
|-&lt;br /&gt;
| import vba code || conditionally import ( uncommented ) vba code and set appropriate  module options || 64570 || npower6 || complete  || m211 ||&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Broader scope tasks that need more investigation ( and splitting into smaller tasks ) (to be added)&lt;br /&gt;
&lt;br /&gt;
create list of items that may need promoting from vba compatibility to &amp;lt;tt&amp;gt;Standard&amp;lt;/tt&amp;gt; ooo-basic behaviour e.g. like issue [[http://www.openoffice.org/issues/show_bug.cgi?id=70380 70380]]&lt;br /&gt;
&lt;br /&gt;
== How to enable the VBA model ==&lt;br /&gt;
&lt;br /&gt;
The VBA model is enabled by default in the current ooo-build. It&amp;#039;s enough to [[Getting It|get]], [[Building with ooobuild|build]], [[Installing|install]], and [[Running|be able to run]] it. &lt;br /&gt;
&lt;br /&gt;
If you are using upstream OpenOffice.org and wish to play with this feature then check out and build the cws [http://eis.services.openoffice.org/EIS2/cws.ShowCWS?Path=SRC680%2Fnpower6 npower6] which contains the initial code drop for the oovbaapi &lt;br /&gt;
&lt;br /&gt;
== How to disable the VBA model ==&lt;br /&gt;
&lt;br /&gt;
Depending on how your version of OpenOffice.org delivers the VBA feature to you, there are a number of ways to disable it. &lt;br /&gt;
&lt;br /&gt;
If you have an Openoffice.org built by a linux distro ( or a windows one from Novell ) that has the vba interop feature then all you need do is navigate to the &amp;#039;Tools.Options.Load/Save.VBAProperties&amp;#039; page and uncheck the &amp;#039;Load Excelbasic code to edit&amp;#039; option.&lt;br /&gt;
&lt;br /&gt;
If you are using an own build ( incorporating ) [http://eis.services.openoffice.org/EIS2/cws.ShowCWS?Path=SRC680%2Fnpower6 cws-npower6] the above method will always work. But if you built the vba interop feature as an office extension then you can of course disable or delete the vbaapi.oxt extension using the Extension Manager.&lt;br /&gt;
&lt;br /&gt;
== How can I help you? ==&lt;br /&gt;
&lt;br /&gt;
We need help in a couple of areas, [[Porting notes|porting]] objects from the [[helperapi]], understanding the VBA usage patterns, implementation and testing; see below.&lt;br /&gt;
&lt;br /&gt;
== Porting Objects from the HelperApi ==&lt;br /&gt;
&lt;br /&gt;
What is the [[helperapi]]?&lt;br /&gt;
&lt;br /&gt;
Have a look at the [[porting notes]]&lt;br /&gt;
&lt;br /&gt;
Have a look at a [[porting example]]&lt;br /&gt;
&lt;br /&gt;
[[Porting_notes#Calc_Objects_to_port|list]] of objects that need porting&lt;br /&gt;
&lt;br /&gt;
[[Porting_notes#Missing_attributes.2Fmethods_to_port|list]] of methods ( to be ported from [[helperapi]] ) to existing objects&lt;br /&gt;
&lt;br /&gt;
== Understanding the VBA usage patterns ==&lt;br /&gt;
&lt;br /&gt;
VBA model is huge and we need help in understanding the VBA usage patterns for prioritizing as we progress. It&amp;#039;s important to receive as many Microsoft Office documents with macros as possible for analysis. &amp;#039;&amp;#039;&amp;#039;We are interested in documents from developers and regular people too.&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
=== Dumping the VBA from your MS Office documents ===&lt;br /&gt;
&lt;br /&gt;
==== libgsf ====&lt;br /&gt;
&lt;br /&gt;
If you&amp;#039;re worried about the sheet data you can use &amp;#039;&amp;#039;test-msvba&amp;#039;&amp;#039; from the [http://freshmeat.net/projects/libgsf/ libgsf]. Download the latest [http://cvs.gnome.org/viewcvs/libgsf/tests/test-msvba.c test-msvba.c] file and compile it with the following command:&lt;br /&gt;
&lt;br /&gt;
 gcc `pkg-config --libs --cflags libgsf-1` -o test-msvba test-msvba.c&lt;br /&gt;
&lt;br /&gt;
Note: you need to have libgsf-devel package installed.&lt;br /&gt;
&lt;br /&gt;
Now, you can dump the VBA from your documents with the following command:&lt;br /&gt;
&lt;br /&gt;
 find -name &amp;#039;*.xls&amp;#039; -exec sh -c &amp;#039;test-msvba {} &amp;gt;&amp;gt; ~/excel-vba-stream-for-noel.bas&amp;#039; \;&lt;br /&gt;
&lt;br /&gt;
==== pole ====&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;p&amp;gt;Or you can use [http://pole.berlios.de/ POLE] with GUI. POLE is a portable C++ library to access structured storage. It is designed to be compatible with Microsoft structured storage, also sometimes known as OLE Compound Document.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Exporting modules from the Microsoft Excel ===&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;p&amp;gt;Open your document and edit associated macros. You can see list of modules on the left side of your screen. Use the right mouse button and select &amp;#039;&amp;#039;Export&amp;#039;&amp;#039; from the context menu. The whole module will be saved as one huge &amp;#039;&amp;#039;*.bas&amp;#039;&amp;#039;.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Where to send ===&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;p&amp;gt;If you are going to send pure VBA streams, send them directly to [Noel dot Power at Novell dot com].&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Implementation ==&lt;br /&gt;
&lt;br /&gt;
=== The desired sequence ===&lt;br /&gt;
&lt;br /&gt;
==== Add an extension to the IDL ====&lt;br /&gt;
&lt;br /&gt;
The IDL lives in oovbaapi/org/openoffice/*, the IDL syntax can easily be gleaned from a few other IDL files. Two things are worth bearing in mind:&lt;br /&gt;
* it&amp;#039;s important that the argument names are correct, so that the &amp;lt;tt&amp;gt;MsgBox title:=&amp;quot;hello&amp;quot;&amp;lt;/tt&amp;gt; syntax works correctly.&lt;br /&gt;
* for optional arguments, or variant types you need to use the &amp;lt;tt&amp;gt;any&amp;lt;/tt&amp;gt; type&lt;br /&gt;
&lt;br /&gt;
Having edited the IDL extension you need to:&lt;br /&gt;
* run: &amp;lt;tt&amp;gt;build &amp;amp;&amp;amp; deliver&amp;lt;/tt&amp;gt; in oovbaapi (perhaps remove types.db first),&lt;br /&gt;
&lt;br /&gt;
==== Add the extension to the implementation ====&lt;br /&gt;
&lt;br /&gt;
The impl. code lives in &amp;lt;tt&amp;gt;sc/source/ui/vba/&amp;lt;/tt&amp;gt; - create the right header and source files.&lt;br /&gt;
Add the method (with the correct prototype) to the header - often it&amp;#039;s easiest to cut/paste that from the compiled C++ headers in &amp;lt;tt&amp;gt;sc/unxlngixxx/inc/org/openoffice/vba/&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Then implement the method itself in the .cxx file. Run &amp;lt;tt&amp;gt;build debug=true&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Running it ====&lt;br /&gt;
&lt;br /&gt;
You did use [linkoo] right ? - in which case - just re-run soffice.bin (killall -9 soffice.bin first to ensure there is no lurking factory process).&lt;br /&gt;
&lt;br /&gt;
Now of course - you want to add a new test to exercise it to ooo-build/test/macro/*. And of course loop back to the beginning.&lt;br /&gt;
Once you&amp;#039;ve got something you want to share - a simple &amp;lt;tt&amp;gt;cvs diff -u | tee /tmp/foo.diff&amp;lt;/tt&amp;gt; in ooo-build/scratch will yield a patch you can mail to Noel / the ooo-build mailing list to get your code folded in.&lt;br /&gt;
NB. it&amp;#039;s important you sign the [http://www.openoffice.org/licenses/jca.pdf JCA] first.&lt;br /&gt;
&lt;br /&gt;
== Testing ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;It&amp;#039;s extremely important to test the work which is already done. You can use test cases from the &amp;#039;&amp;#039;ooo-build/test/macro&amp;#039;&amp;#039; directory, you can extend them or you can write your own test cases.&amp;lt;/p&amp;gt;&lt;br /&gt;
It&amp;#039;s a good idea to write test cases directly in the Microsoft Excel?&lt;br /&gt;
&lt;br /&gt;
== Accessing the VBA API from other languages ==&lt;br /&gt;
&lt;br /&gt;
The VBA API is implemented by an UNO service, the service is accessible via a singleton. As such it is possible to use the API from any language that has an UNO binding. The main entry points to the API are certain global variables { Application, ActiveWorkbook and ActiveSheet } or methods { WorkSheets, WorkBooks } exported by the service. Using these globals as a starting point the rest of the api can be accessed.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;NOTE:&amp;#039;&amp;#039;&amp;#039;  Beaware the idl is not stable, ( nor won&amp;#039;t be for the forseeable future be &amp;#039;published&amp;#039; ) it WILL change, so if you are using a language that has a binary dependency on the interface ( like c++ &amp;amp; java ) then consider yourselves warned. &lt;br /&gt;
&lt;br /&gt;
=== Python ===&lt;br /&gt;
&lt;br /&gt;
 vba = uno.getComponentContext().getByName(&amp;quot;/singletons/org.openoffice.vba.theGlobals&amp;quot;)&lt;br /&gt;
 sheet = vba.ActiveSheet&lt;br /&gt;
 book = vba.ActiveWorkbook&lt;br /&gt;
&lt;br /&gt;
=== Java ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
import org.openoffice.vba.*;&lt;br /&gt;
&amp;quot;&lt;br /&gt;
// getComponentCtxFromSomewhere is a fictional&lt;br /&gt;
// routine representing acquisition of the component context&lt;br /&gt;
// from e.g. remote ServiceManage if the code is a remote client&lt;br /&gt;
// or from the XScriptContext if this were a java ScriptingFramework script &lt;br /&gt;
&lt;br /&gt;
XComponentContext ctx = getComponentCtxFromSomewhere(); &lt;br /&gt;
Object oGlobs = ctx.getValueByName(&lt;br /&gt;
                &amp;quot;/singletons/org.openoffice.vba.theGlobals&amp;quot;);&lt;br /&gt;
XGlobals xGlobs = AnyConverter.toObject(&lt;br /&gt;
                new Type(XGlobals.class), oGlobs);&lt;br /&gt;
XWorkBook xWBook =  xGlobs.getActiveWorkbook();&lt;br /&gt;
XWorkSheet xSheet = xGlobs.getActiveWorkSheet();&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== OO Basic ===&lt;br /&gt;
&lt;br /&gt;
Basic allows access to the global variables automatically just like VBA does, there is no need to create any services or access any singletons to use the API&lt;br /&gt;
&lt;br /&gt;
 msgbox &amp;quot;Name of the current document is &amp;quot; &amp;amp;amp; ActiveWorkbook.Path&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Development]]&lt;/div&gt;</summary>
		<author><name>Npower</name></author>
	</entry>
	<entry>
		<id>https://wiki.openoffice.org/w/index.php?title=Porting_notes&amp;diff=33359</id>
		<title>Porting notes</title>
		<link rel="alternate" type="text/html" href="https://wiki.openoffice.org/w/index.php?title=Porting_notes&amp;diff=33359"/>
		<updated>2007-05-25T13:27:25Z</updated>

		<summary type="html">&lt;p&gt;Npower: /* Calc Objects to port */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== Things to watch out for ===&lt;br /&gt;
* The mapping of the vba constants is different. Take for example the &amp;lt;tt&amp;gt;xlGuess&amp;lt;/tt&amp;gt; constant, in VBA it&amp;#039;s fully qualified name is &amp;lt;tt&amp;gt;Excel.XlYesNoGuess.xlGuess&amp;lt;/tt&amp;gt;, in the helperapi it&amp;#039;s &amp;lt;tt&amp;gt;com.sun.star.helper.constant.XlYesNoGuess.xlGuess&amp;lt;/tt&amp;gt; and in oovbaapi it&amp;#039;s &amp;lt;tt&amp;gt;org.openoffice.excel.XlYesNoGuess.xlGuess&amp;lt;/tt&amp;gt; &lt;br /&gt;
* All objects in the helperapi extend [http://api.openoffice.org/source/browse/*checkout*/api/helperapi/impl/com/sun/star/helper/HelperInterfaceAdaptor.java?rev=1.1 HelperInterfaceAdaptor], nothing similar (yet) exists in oovbaapi so this can be ignored in the implementation&lt;br /&gt;
* There are a quite few helper classes in the helperapi project e.g. &amp;lt;tt&amp;gt;RangeHelper.java&amp;lt;/tt&amp;gt; they shouldn&amp;#039;t be confused with the actual implementation objects we wish to port.&lt;br /&gt;
* classes and idl files of the same name can exist in multiple namespaces and this can be confusing. Because the helperapi was written with both the word and excel api(s) in mind there can be classes that share a common implementation and interfaces e.g.&lt;br /&gt;
** &amp;lt;tt&amp;gt;com/sun/star/helper/calc/XShape.idl&amp;lt;/tt&amp;gt;&lt;br /&gt;
** &amp;lt;tt&amp;gt;com/sun/star/helper/common/XShape.idl&amp;lt;/tt&amp;gt;&lt;br /&gt;
** &amp;lt;tt&amp;gt;com/sun/star/helper/writer/XShape.idl&amp;lt;/tt&amp;gt;&lt;br /&gt;
* Collections, these are handled differently see implementing a vba [[Porting notes#Collection|Collection]] in oovbaapi&lt;br /&gt;
* Every helperapi idl method defines [http://api.openoffice.org/source/browse/*checkout*/api/udkapi/com/sun/star/script/BasicErrorException.idl BasicErrorException] which allows and api method to transfer an error code and associated string paramater to basic.&lt;br /&gt;
&lt;br /&gt;
=== Hints for porting idl ===&lt;br /&gt;
==== Objects with Default Properties ====&lt;br /&gt;
This is something not handled by the helperapi but something you should be aware of when implementing a vba compatibility object. What is a default property, an example probably explains the concept better.&lt;br /&gt;
&lt;br /&gt;
 Range(&amp;quot;a1&amp;quot;) = &amp;quot;text&amp;quot;&lt;br /&gt;
&lt;br /&gt;
is a short cut for&lt;br /&gt;
&lt;br /&gt;
 Range(&amp;quot;a1&amp;quot;).Value = &amp;quot;text&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;Value&amp;lt;/tt&amp;gt; is a default property in the example above. We can provide similar behavior in basic with a compatibility api object ensuring the object implements [http://api.openoffice.org/source/browse/*checkout*/api/udkapi/com/sun/star/script/XDefaultProperty.idl XDefaultProperty.idl ]&lt;br /&gt;
&lt;br /&gt;
==== Objects with Default Method ====&lt;br /&gt;
&lt;br /&gt;
Similar to above some vba objects have a default method e.g. the &amp;lt;tt&amp;gt;Collection&amp;lt;/tt&amp;gt; object&lt;br /&gt;
&lt;br /&gt;
 set col = Sheets&lt;br /&gt;
 msgbox col(1).Name&lt;br /&gt;
&lt;br /&gt;
is a short cut for&lt;br /&gt;
&lt;br /&gt;
 set col = Sheets&lt;br /&gt;
 msgbox col.Item(1).Name&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;Item&amp;lt;/tt&amp;gt; is a default method in the example above. We can provide similar behavior in basic with a compatibility api object ensuring the object implements [http://api.openoffice.org/source/browse/*checkout*/api/udkapi/com/sun/star/script/XDefaultMethod.idl XDefaultMethod.idl ]&lt;br /&gt;
&lt;br /&gt;
==== Porting Collection objects ====&lt;br /&gt;
Generally all collection objects have a &amp;lt;tt&amp;gt;Count&amp;lt;/tt&amp;gt; and an &amp;lt;tt&amp;gt;Item&amp;lt;/tt&amp;gt; method and additionally the behaviour mentioned above. Also Collection objects can be used in a &amp;lt;tt&amp;gt;For Each&amp;lt;/tt&amp;gt; loop. To cater for that a helper implementation object &amp;lt;tt&amp;gt;ScVbaCollectionBaseImpl&amp;lt;/tt&amp;gt; provides the necessary information to the basic runtime to allow it to provide the classic vba &amp;lt;tt&amp;gt;Collection&amp;lt;/tt&amp;gt; class syntax support. It also requires to be initialised by an XIndexAccess implementation. Additionally the class inheriting from  &amp;lt;tt&amp;gt;ScVbaCollectionBaseImpl&amp;lt;/tt&amp;gt; must provide the  translation between the object iterated ( via XIndexAccess ) and the corrosponding compatibilty object returned to openoffice basic via the the &amp;lt;tt&amp;gt;createCollectionObject&amp;lt;/tt&amp;gt; method.&lt;br /&gt;
&lt;br /&gt;
A example of a ported &amp;lt;tt&amp;gt;Collection&amp;lt;/tt&amp;gt; object can be found in the [[Porting example]] section&lt;br /&gt;
&lt;br /&gt;
=== Calc Objects to port ===&lt;br /&gt;
{| style=&amp;quot;vertical-align:top; text-align:left; background-color:#efefef;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background-color:#d6d6d6;font-weight:bold;&amp;quot; &lt;br /&gt;
| Object || helperapi implementation name || Porting started by || Status || Notes&lt;br /&gt;
|-&lt;br /&gt;
| XAutoFilter.idl || [http://api.openoffice.org/source/browse/*checkout*/api/helperapi/impl/com/sun/star/helper/calc/AutoFilterImpl.java AutoFilterImpl] ||  ||   || there is a partial (untested) implementation in the porting example section, would be nice for some one to finish&lt;br /&gt;
|-&lt;br /&gt;
| XFilter.idl || [http://api.openoffice.org/source/browse/*checkout*/api/helperapi/impl/com/sun/star/helper/calc/FilterImpl.java FilterImpl.java]  ||  ||  || see above.&lt;br /&gt;
|-&lt;br /&gt;
| XFilters.idl || [http://api.openoffice.org/source/browse/*checkout*/api/helperapi/impl/com/sun/star/helper/calc/FiltersImpl.java FiltersImpl.java] ||  ||  || see above.&lt;br /&gt;
|-&lt;br /&gt;
| XAxes.idl || [http://api.openoffice.org/source/browse/*checkout*/api/helperapi/impl/com/sun/star/helper/calc/AxesImpl.java AxesImpl.java]  ||  npower || in progress ||&lt;br /&gt;
|-&lt;br /&gt;
| XAxis.idl || [http://api.openoffice.org/source/browse/*checkout*/api/helperapi/impl/com/sun/star/helper/calc/AxesImpl.java AxisImpl.java]  || npower || in progress  ||&lt;br /&gt;
|-&lt;br /&gt;
| XAxisTitle.idl || [http://api.openoffice.org/source/browse/*checkout*/api/helperapi/impl/com/sun/star/helper/calc/AxesTitleImpl.java AxisTitleImpl.java] ||  npower || complete  || not-tested&lt;br /&gt;
|-&lt;br /&gt;
| XCalc.idl || xxxx  || not required for porting see [[Application Object]] ||  || This is not a &amp;#039;real&amp;#039; object but in a collection of global method/attributes that probably should be part of the XApplication.idl interface&lt;br /&gt;
|-&lt;br /&gt;
| XChartObject.idl || [http://api.openoffice.org/source/browse/*checkout*/api/helperapi/impl/com/sun/star/helper/calc/ChartObjectImpl.java ChartObjectImpl.java] || npower || complete || not-tested&lt;br /&gt;
|-&lt;br /&gt;
| XChartObjects.idl || [http://api.openoffice.org/source/browse/*checkout*/api/helperapi/impl/com/sun/star/helper/calc/ChartObjectsImpl.java ChartObjectsImpl.java] || npower || complete || not-tested &lt;br /&gt;
|-&lt;br /&gt;
| XChart.idl || [http://api.openoffice.org/source/browse/*checkout*/api/helperapi/impl/com/sun/star/helper/calc/ChartImpl.java ChartImpl.java] || npower || in progress || &lt;br /&gt;
|-&lt;br /&gt;
| XCharts.idl ||  [http://api.openoffice.org/source/browse/*checkout*/api/helperapi/impl/com/sun/star/helper/calc/ChartsImpl.java ChartsImpl.java]  ||  npower ||  in progress ||&lt;br /&gt;
|-&lt;br /&gt;
| XChartTitle.idl || [http://api.openoffice.org/source/browse/*checkout*/api/helperapi/impl/com/sun/star/helper/calc/ChartTileImpl.java ChartTitleImpl.java]  || npower || complete || not-tested&lt;br /&gt;
|-&lt;br /&gt;
| XDataLabel.idl || [http://api.openoffice.org/source/browse/*checkout*/api/helperapi/impl/com/sun/star/helper/calc/DataLabelImp.java DataLabelImpl.java] || npower || in progress ||&lt;br /&gt;
|-&lt;br /&gt;
| XDataLabels.idl || [http://api.openoffice.org/source/browse/*checkout*/api/helperapi/impl/com/sun/star/helper/calc/DataLabelsImp.java DataLabelsImpl.java] ||  npower || in progress ||&lt;br /&gt;
|-&lt;br /&gt;
| XFormatCondition.idl || xxxx  ||  npower || in progress ||&lt;br /&gt;
|-&lt;br /&gt;
| XFormatConditions.idl || xxxx  ||  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
| XFormat.idl || xxxx  || npower || complete  || not tested &lt;br /&gt;
|-&lt;br /&gt;
| XHPageBreak.idl || xxxx  ||  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
| XHPageBreaks.idl || xxxx  ||  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
| XName.idl || xxxx  || sola ||  ||&lt;br /&gt;
|-&lt;br /&gt;
| XNames.idl || xxxx  || sola ||  ||&lt;br /&gt;
|-&lt;br /&gt;
| XPageBreak.idl || xxxx  ||  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
|[http://api.openoffice.org/source/browse/api/helperapi/com/sun/star/helper/calc/XPageSetup.idl XPageSetup.idl] || [http://api.openoffice.org/source/browse/api/helperapi/impl/com/sun/star/helper/calc/PageSetupImpl.java PageSetupImpl]  || zhang ||&lt;br /&gt;
|-&lt;br /&gt;
|[http://api.openoffice.org/source/browse/api/helperapi/com/sun/star/helper/calc/XPane.idl XPane.idl] || [http://api.openoffice.org/source/browse/api/helperapi/impl/com/sun/star/helper/calc/PaneImpl.java PaneImpl]  || Jiao.Jianhua || calc complete||&lt;br /&gt;
|-&lt;br /&gt;
| XPoint.idl || xxxx  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
| XPoints.idl || xxxx  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
| XProtection.idl || xxxx  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
| XQueryTable.idl || xxxx  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
| XQueryTables.idl || xxxx  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
| XShape.idl || xxxx  || jiao.jianhua || in progress ||&lt;br /&gt;
|-&lt;br /&gt;
| XShapes.idl || xxxx  || jiao.jianhua  || calc complete, no full text ||&lt;br /&gt;
|-&lt;br /&gt;
| XStyle.idl || xxxx  ||  npower || complete || not tested&lt;br /&gt;
|-&lt;br /&gt;
| XStyles.idl || xxxx  || npower || inprogress ||&lt;br /&gt;
|-&lt;br /&gt;
| XTitle.idl || xxxx  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
| XVPageBreak.idl || xxxx  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
| XVPageBreaks.idl|| xxxx  ||  ||&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Common Objects to port ===&lt;br /&gt;
{| style=&amp;quot;vertical-align:top; text-align:left; background-color:#efefef;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background-color:#d6d6d6;font-weight:bold;&amp;quot; &lt;br /&gt;
| Object || helperapi implementation name || Porting stared by? || Status ||&lt;br /&gt;
|-&lt;br /&gt;
| XAutoFilter.idl || xxxx || ||&lt;br /&gt;
|-&lt;br /&gt;
| XPictureFormat || xxxx || Jiao.Jianhua || in progress&lt;br /&gt;
|-&lt;br /&gt;
| XColorFormat || xxxx || Jiao.Jianhua || calc complete, no full text ||&lt;br /&gt;
|-&lt;br /&gt;
| XPosSize || xxxx || Jiao.Jianhua || implemented in org.openoffice.XControl ||&lt;br /&gt;
|-&lt;br /&gt;
| XWindow || xxxx || ||&lt;br /&gt;
|-&lt;br /&gt;
| XFileSearch || xxxx || ||&lt;br /&gt;
|-&lt;br /&gt;
| XWrapFormat || xxxx || || in word ||&lt;br /&gt;
|-&lt;br /&gt;
| XFillFormat || xxxx || Jiao.Jianhua || calc complete, no full text ||&lt;br /&gt;
|-&lt;br /&gt;
| XShapeRange || xxxx || Jiao.Jianhua || calc complete, no full text ||&lt;br /&gt;
|-&lt;br /&gt;
| XFoundFiles || xxxx || ||&lt;br /&gt;
|-&lt;br /&gt;
| XLineFormat || xxxx || Jiao.Jianhua || calc complete, no full text ||&lt;br /&gt;
|-&lt;br /&gt;
| XTextFrame || xxxx || Jiao.Jianhua || calc complete, no full text ||&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Missing attributes/methods ( common to helperapi objects ) to port ===&lt;br /&gt;
[[Application Object]]&lt;br /&gt;
&lt;br /&gt;
[[Range Object]]&lt;/div&gt;</summary>
		<author><name>Npower</name></author>
	</entry>
	<entry>
		<id>https://wiki.openoffice.org/w/index.php?title=Range_Object&amp;diff=33358</id>
		<title>Range Object</title>
		<link rel="alternate" type="text/html" href="https://wiki.openoffice.org/w/index.php?title=Range_Object&amp;diff=33358"/>
		<updated>2007-05-25T13:26:22Z</updated>

		<summary type="html">&lt;p&gt;Npower: /* Range Object */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== Range Object ===&lt;br /&gt;
{| style=&amp;quot;vertical-align:top; text-align:left; background-color:#efefef;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background-color:#d6d6d6;font-weight:bold;&amp;quot; &lt;br /&gt;
| method/property name || helperapi idl:implementation || Porting started by? || Status || Notes ||&lt;br /&gt;
|-&lt;br /&gt;
| Calculate || XRange.idl:RangeImpl || npower || done || not tested&lt;br /&gt;
|-&lt;br /&gt;
| Item || XRange.idl:RangeImpl || npower || done || not tested &lt;br /&gt;
|-&lt;br /&gt;
| AutoOutline || XRange.idl:RangeImpl ||  npower ||  done || not tested&lt;br /&gt;
|-&lt;br /&gt;
| ClearOutline || XRange.idl:RangeImpl || npower  || done || not tested&lt;br /&gt;
|-&lt;br /&gt;
| AddIndent || XRange.idl:FormatImpl ||   ||  ( lipservice implementation )&lt;br /&gt;
|-&lt;br /&gt;
| Group || XRange.idl:RangeImpl || npower  || done || not tested&lt;br /&gt;
|-&lt;br /&gt;
| UnGroup || XRange.idl:RangeImpl ||  npower || done || not tested&lt;br /&gt;
|-&lt;br /&gt;
| Merge || XRange.idl:RangeImpl || npower  || done || not tested&lt;br /&gt;
|-&lt;br /&gt;
| UnMerge || XRange.idl:RangeImpl || npower  || done || not tested&lt;br /&gt;
|-&lt;br /&gt;
| Style || XRange.idl:RangeImpl ||  npower || done || not tested&lt;br /&gt;
|-&lt;br /&gt;
| FormatConditions || XRange.idl:RangeImpl ||   ||  &lt;br /&gt;
|-&lt;br /&gt;
| Next || XRange.idl:RangeImpl ||  npower || done || not tested &lt;br /&gt;
|-&lt;br /&gt;
| Previous || XRange.idl:RangeImpl ||  npower || done || not tested&lt;br /&gt;
|-&lt;br /&gt;
| SpecialCells || XRange.idl:RangeImpl ||  npower || done || not tested &lt;br /&gt;
|-&lt;br /&gt;
| Top || XRange.idl:RangeImpl ||  npower || done || not tested&lt;br /&gt;
|-&lt;br /&gt;
| Left || XRange.idl:RangeImpl ||  npower ||  done || not tested&lt;br /&gt;
|-&lt;br /&gt;
| Height || XRange.idl:RangeImpl ||  npower || done || not tested&lt;br /&gt;
|-&lt;br /&gt;
| Width || XRange.idl:RangeImpl ||  npower ||  done || not tested&lt;br /&gt;
|-&lt;br /&gt;
| RemoveSubtotal || XRange.idl:RangeImpl || npower || done || not tested &lt;br /&gt;
|-&lt;br /&gt;
| Subtotal || XRange.idl:RangeImpl || npower || done || not tested &lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Npower</name></author>
	</entry>
	<entry>
		<id>https://wiki.openoffice.org/w/index.php?title=Range_Object&amp;diff=33357</id>
		<title>Range Object</title>
		<link rel="alternate" type="text/html" href="https://wiki.openoffice.org/w/index.php?title=Range_Object&amp;diff=33357"/>
		<updated>2007-05-25T13:25:49Z</updated>

		<summary type="html">&lt;p&gt;Npower: /* Range Object */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== Range Object ===&lt;br /&gt;
{| style=&amp;quot;vertical-align:top; text-align:left; background-color:#efefef;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background-color:#d6d6d6;font-weight:bold;&amp;quot; &lt;br /&gt;
| method/property name || helperapi idl:implementation || Porting started by? || Status || Notes ||&lt;br /&gt;
|-&lt;br /&gt;
| Calculate || XRange.idl:RangeImpl || npower || done || not tested&lt;br /&gt;
|-&lt;br /&gt;
| Item || XRange.idl:RangeImpl || npower || done || not tested &lt;br /&gt;
|-&lt;br /&gt;
| AutoOutline || XRange.idl:RangeImpl ||  npower ||  done || not tested&lt;br /&gt;
|-&lt;br /&gt;
| ClearOutline || XRange.idl:RangeImpl || npower  || done || not tested&lt;br /&gt;
|-&lt;br /&gt;
| AddIndent || XRange.idl:FormatImpl ||   ||  ( lipservice implementation )&lt;br /&gt;
|-&lt;br /&gt;
| Group || XRange.idl:RangeImpl || npower  || done || not tested&lt;br /&gt;
|-&lt;br /&gt;
| UnGroup || XRange.idl:RangeImpl ||  npower || done || not tested&lt;br /&gt;
|-&lt;br /&gt;
| Merge || XRange.idl:RangeImpl || npower  || done || not tested&lt;br /&gt;
|-&lt;br /&gt;
| UnMerge || XRange.idl:RangeImpl || npower  || done || not tested&lt;br /&gt;
|-&lt;br /&gt;
| Style || XRange.idl:RangeImpl ||  npower || done || not tested&lt;br /&gt;
|-&lt;br /&gt;
| FormatConditions || XRange.idl:RangeImpl ||   ||  &lt;br /&gt;
|-&lt;br /&gt;
| Next || XRange.idl:RangeImpl ||  npower || done || not tested &lt;br /&gt;
|-&lt;br /&gt;
| Previous || XRange.idl:RangeImpl ||  npower || done || not tested&lt;br /&gt;
|-&lt;br /&gt;
| SpecialCells || XRange.idl:RangeImpl ||  npower || done || not tested &lt;br /&gt;
|-&lt;br /&gt;
| Top || XRange.idl:RangeImpl ||  npower || done || not tested&lt;br /&gt;
|-&lt;br /&gt;
| Left || XRange.idl:RangeImpl ||  npower ||  done || not tested&lt;br /&gt;
|-&lt;br /&gt;
| Height || XRange.idl:RangeImpl ||  npower || done || not tested&lt;br /&gt;
|-&lt;br /&gt;
| Width || XRange.idl:RangeImpl ||  npower ||  done || not tested&lt;br /&gt;
|-&lt;br /&gt;
| RemoveSubtotal || XRange.idl:RangeImpl ||  done || not tested &lt;br /&gt;
|-&lt;br /&gt;
| Subtotal || XRange.idl:RangeImpl || done || not tested &lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Npower</name></author>
	</entry>
	<entry>
		<id>https://wiki.openoffice.org/w/index.php?title=Range_Object&amp;diff=33333</id>
		<title>Range Object</title>
		<link rel="alternate" type="text/html" href="https://wiki.openoffice.org/w/index.php?title=Range_Object&amp;diff=33333"/>
		<updated>2007-05-24T22:26:29Z</updated>

		<summary type="html">&lt;p&gt;Npower: /* Range Object */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== Range Object ===&lt;br /&gt;
{| style=&amp;quot;vertical-align:top; text-align:left; background-color:#efefef;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background-color:#d6d6d6;font-weight:bold;&amp;quot; &lt;br /&gt;
| method/property name || helperapi idl:implementation || Porting started by? || Status || Notes ||&lt;br /&gt;
|-&lt;br /&gt;
| Calculate || XRange.idl:RangeImpl || npower || done || not tested&lt;br /&gt;
|-&lt;br /&gt;
| Item || XRange.idl:RangeImpl || npower || done || not tested &lt;br /&gt;
|-&lt;br /&gt;
| AutoOutline || XRange.idl:RangeImpl ||  npower ||  done || not tested&lt;br /&gt;
|-&lt;br /&gt;
| ClearOutline || XRange.idl:RangeImpl || npower  || done || not tested&lt;br /&gt;
|-&lt;br /&gt;
| AddIndent || XRange.idl:FormatImpl ||   ||  ( lipservice implementation )&lt;br /&gt;
|-&lt;br /&gt;
| Group || XRange.idl:RangeImpl || npower  || done || not tested&lt;br /&gt;
|-&lt;br /&gt;
| UnGroup || XRange.idl:RangeImpl ||  npower || done || not tested&lt;br /&gt;
|-&lt;br /&gt;
| Merge || XRange.idl:RangeImpl || npower  || done || not tested&lt;br /&gt;
|-&lt;br /&gt;
| UnMerge || XRange.idl:RangeImpl || npower  || done || not tested&lt;br /&gt;
|-&lt;br /&gt;
| Style || XRange.idl:RangeImpl ||  npower || done || not tested&lt;br /&gt;
|-&lt;br /&gt;
| FormatConditions || XRange.idl:RangeImpl ||   ||  &lt;br /&gt;
|-&lt;br /&gt;
| Next || XRange.idl:RangeImpl ||  npower || done || not tested &lt;br /&gt;
|-&lt;br /&gt;
| Previous || XRange.idl:RangeImpl ||  npower || done || not tested&lt;br /&gt;
|-&lt;br /&gt;
| SpecialCells || XRange.idl:RangeImpl ||  npower || done || not tested &lt;br /&gt;
|-&lt;br /&gt;
| Top || XRange.idl:RangeImpl ||  npower || done || not tested&lt;br /&gt;
|-&lt;br /&gt;
| Left || XRange.idl:RangeImpl ||  npower ||  done || not tested&lt;br /&gt;
|-&lt;br /&gt;
| Height || XRange.idl:RangeImpl ||  npower || done || not tested&lt;br /&gt;
|-&lt;br /&gt;
| Width || XRange.idl:RangeImpl ||  npower ||  done || not tested&lt;br /&gt;
|-&lt;br /&gt;
| RemoveSubtotal || XRange.idl:RangeImpl ||   ||  &lt;br /&gt;
|-&lt;br /&gt;
| Subtotal || XRange.idl:RangeImpl || || &lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Npower</name></author>
	</entry>
	<entry>
		<id>https://wiki.openoffice.org/w/index.php?title=Range_Object&amp;diff=33279</id>
		<title>Range Object</title>
		<link rel="alternate" type="text/html" href="https://wiki.openoffice.org/w/index.php?title=Range_Object&amp;diff=33279"/>
		<updated>2007-05-24T08:23:05Z</updated>

		<summary type="html">&lt;p&gt;Npower: /* Range Object */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== Range Object ===&lt;br /&gt;
{| style=&amp;quot;vertical-align:top; text-align:left; background-color:#efefef;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background-color:#d6d6d6;font-weight:bold;&amp;quot; &lt;br /&gt;
| method/property name || helperapi idl:implementation || Porting started by? || Status || Notes ||&lt;br /&gt;
|-&lt;br /&gt;
| Calculate || XRange.idl:RangeImpl || npower || done || not tested&lt;br /&gt;
|-&lt;br /&gt;
| Item || XRange.idl:RangeImpl || npower || done || not tested &lt;br /&gt;
|-&lt;br /&gt;
| AutoOutline || XRange.idl:RangeImpl ||  npower ||  done || not tested&lt;br /&gt;
|-&lt;br /&gt;
| ClearOutline || XRange.idl:RangeImpl || npower  || done || not tested&lt;br /&gt;
|-&lt;br /&gt;
| AddIndent || XRange.idl:FormatImpl ||   ||  ( lipservice implementation )&lt;br /&gt;
|-&lt;br /&gt;
| Group || XRange.idl:RangeImpl || npower  || done || not tested&lt;br /&gt;
|-&lt;br /&gt;
| UnGroup || XRange.idl:RangeImpl ||  npower || done || not tested&lt;br /&gt;
|-&lt;br /&gt;
| Merge || XRange.idl:RangeImpl || npower  || done || not tested&lt;br /&gt;
|-&lt;br /&gt;
| UnMerge || XRange.idl:RangeImpl || npower  || done || not tested&lt;br /&gt;
|-&lt;br /&gt;
| Style || XRange.idl:RangeImpl ||  npower || done || not tested&lt;br /&gt;
|-&lt;br /&gt;
| FormatConditions || XRange.idl:RangeImpl ||   ||  &lt;br /&gt;
|-&lt;br /&gt;
| Next || XRange.idl:RangeImpl ||  npower || done || not tested &lt;br /&gt;
|-&lt;br /&gt;
| Previous || XRange.idl:RangeImpl ||  npower || done || not tested&lt;br /&gt;
|-&lt;br /&gt;
| SpecialCells || XRange.idl:RangeImpl ||  npower || in progress &lt;br /&gt;
|-&lt;br /&gt;
| Top || XRange.idl:RangeImpl ||  npower || in progress  &lt;br /&gt;
|-&lt;br /&gt;
| Left || XRange.idl:RangeImpl ||  npower ||  in progress &lt;br /&gt;
|-&lt;br /&gt;
| Height || XRange.idl:RangeImpl ||  npower || in progress &lt;br /&gt;
|-&lt;br /&gt;
| Width || XRange.idl:RangeImpl ||  npower ||  in progress&lt;br /&gt;
|-&lt;br /&gt;
| RemoveSubtotal || XRange.idl:RangeImpl ||   ||  &lt;br /&gt;
|-&lt;br /&gt;
| Subtotal || XRange.idl:RangeImpl || || &lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Npower</name></author>
	</entry>
	<entry>
		<id>https://wiki.openoffice.org/w/index.php?title=Range_Object&amp;diff=33207</id>
		<title>Range Object</title>
		<link rel="alternate" type="text/html" href="https://wiki.openoffice.org/w/index.php?title=Range_Object&amp;diff=33207"/>
		<updated>2007-05-23T21:10:19Z</updated>

		<summary type="html">&lt;p&gt;Npower: /* Range Object */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== Range Object ===&lt;br /&gt;
{| style=&amp;quot;vertical-align:top; text-align:left; background-color:#efefef;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background-color:#d6d6d6;font-weight:bold;&amp;quot; &lt;br /&gt;
| method/property name || helperapi idl:implementation || Porting started by? || Status || Notes ||&lt;br /&gt;
|-&lt;br /&gt;
| Calculate || XRange.idl:RangeImpl || npower || done || not tested&lt;br /&gt;
|-&lt;br /&gt;
| Item || XRange.idl:RangeImpl || npower || done || not tested &lt;br /&gt;
|-&lt;br /&gt;
| AutoOutline || XRange.idl:RangeImpl ||  npower ||  done || not tested&lt;br /&gt;
|-&lt;br /&gt;
| ClearOutline || XRange.idl:RangeImpl || npower  || done || not tested&lt;br /&gt;
|-&lt;br /&gt;
| AddIndent || XRange.idl:FormatImpl ||   ||  ( lipservice implementation )&lt;br /&gt;
|-&lt;br /&gt;
| Group || XRange.idl:RangeImpl || npower  || done || not tested&lt;br /&gt;
|-&lt;br /&gt;
| UnGroup || XRange.idl:RangeImpl ||  npower || done || not tested&lt;br /&gt;
|-&lt;br /&gt;
| Merge || XRange.idl:RangeImpl || npower  || done || not tested&lt;br /&gt;
|-&lt;br /&gt;
| UnMerge || XRange.idl:RangeImpl || npower  || done || not tested&lt;br /&gt;
|-&lt;br /&gt;
| Style || XRange.idl:RangeImpl ||  npower || done || not tested&lt;br /&gt;
|-&lt;br /&gt;
| FormatConditions || XRange.idl:RangeImpl ||   ||  &lt;br /&gt;
|-&lt;br /&gt;
| Next || XRange.idl:RangeImpl ||  npower || done || not tested &lt;br /&gt;
|-&lt;br /&gt;
| Previous || XRange.idl:RangeImpl ||  npower || done || not tested&lt;br /&gt;
|-&lt;br /&gt;
| SpecialCells || XRange.idl:RangeImpl ||   ||  &lt;br /&gt;
|-&lt;br /&gt;
| Top || XRange.idl:RangeImpl ||  npower || in progress  &lt;br /&gt;
|-&lt;br /&gt;
| Left || XRange.idl:RangeImpl ||  npower ||  in progress &lt;br /&gt;
|-&lt;br /&gt;
| Height || XRange.idl:RangeImpl ||  npower || in progress &lt;br /&gt;
|-&lt;br /&gt;
| Width || XRange.idl:RangeImpl ||  npower ||  in progress&lt;br /&gt;
|-&lt;br /&gt;
| RemoveSubtotal || XRange.idl:RangeImpl ||   ||  &lt;br /&gt;
|-&lt;br /&gt;
| Subtotal || XRange.idl:RangeImpl || || &lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Npower</name></author>
	</entry>
	<entry>
		<id>https://wiki.openoffice.org/w/index.php?title=Range_Object&amp;diff=33135</id>
		<title>Range Object</title>
		<link rel="alternate" type="text/html" href="https://wiki.openoffice.org/w/index.php?title=Range_Object&amp;diff=33135"/>
		<updated>2007-05-23T10:19:55Z</updated>

		<summary type="html">&lt;p&gt;Npower: /* Range Object */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== Range Object ===&lt;br /&gt;
{| style=&amp;quot;vertical-align:top; text-align:left; background-color:#efefef;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background-color:#d6d6d6;font-weight:bold;&amp;quot; &lt;br /&gt;
| method/property name || helperapi idl:implementation || Porting started by? || Status || Notes ||&lt;br /&gt;
|-&lt;br /&gt;
| Calculate || XRange.idl:RangeImpl || npower || done || not tested&lt;br /&gt;
|-&lt;br /&gt;
| Item || XRange.idl:RangeImpl || npower || done || not tested &lt;br /&gt;
|-&lt;br /&gt;
| AutoOutline || XRange.idl:RangeImpl ||  npower ||  done || not tested&lt;br /&gt;
|-&lt;br /&gt;
| ClearOutline || XRange.idl:RangeImpl || npower  || done || not tested&lt;br /&gt;
|-&lt;br /&gt;
| AddIndent || XRange.idl:FormatImpl ||   ||  ( lipservice implementation )&lt;br /&gt;
|-&lt;br /&gt;
| Group || XRange.idl:RangeImpl || npower  || done || not tested&lt;br /&gt;
|-&lt;br /&gt;
| UnGroup || XRange.idl:RangeImpl ||  npower || done || not tested&lt;br /&gt;
|-&lt;br /&gt;
| Merge || XRange.idl:RangeImpl || npower  || done || not tested&lt;br /&gt;
|-&lt;br /&gt;
| UnMerge || XRange.idl:RangeImpl || npower  || done || not tested&lt;br /&gt;
|-&lt;br /&gt;
| Style || XRange.idl:RangeImpl ||  npower || done || not tested&lt;br /&gt;
|-&lt;br /&gt;
| FormatConditions || XRange.idl:RangeImpl ||   ||  &lt;br /&gt;
|-&lt;br /&gt;
| Next || XRange.idl:RangeImpl ||  npower || in progress  &lt;br /&gt;
|-&lt;br /&gt;
| Previous || XRange.idl:RangeImpl ||  npower || in progess &lt;br /&gt;
|-&lt;br /&gt;
| SpecialCells || XRange.idl:RangeImpl ||   ||  &lt;br /&gt;
|-&lt;br /&gt;
| Top || XRange.idl:RangeImpl ||  npower || in progress  &lt;br /&gt;
|-&lt;br /&gt;
| Left || XRange.idl:RangeImpl ||  npower ||  in progress &lt;br /&gt;
|-&lt;br /&gt;
| Height || XRange.idl:RangeImpl ||  npower || in progress &lt;br /&gt;
|-&lt;br /&gt;
| Width || XRange.idl:RangeImpl ||  npower ||  in progress&lt;br /&gt;
|-&lt;br /&gt;
| RemoveSubtotal || XRange.idl:RangeImpl ||   ||  &lt;br /&gt;
|-&lt;br /&gt;
| Subtotal || XRange.idl:RangeImpl || || &lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Npower</name></author>
	</entry>
	<entry>
		<id>https://wiki.openoffice.org/w/index.php?title=Range_Object&amp;diff=33103</id>
		<title>Range Object</title>
		<link rel="alternate" type="text/html" href="https://wiki.openoffice.org/w/index.php?title=Range_Object&amp;diff=33103"/>
		<updated>2007-05-23T09:51:47Z</updated>

		<summary type="html">&lt;p&gt;Npower: /* Range Object */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== Range Object ===&lt;br /&gt;
{| style=&amp;quot;vertical-align:top; text-align:left; background-color:#efefef;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background-color:#d6d6d6;font-weight:bold;&amp;quot; &lt;br /&gt;
| method/property name || helperapi idl:implementation || Porting started by? || Status || Notes ||&lt;br /&gt;
|-&lt;br /&gt;
| Calculate || XRange.idl:RangeImpl || npower || done || not tested&lt;br /&gt;
|-&lt;br /&gt;
| Item || XRange.idl:RangeImpl || npower || done || not tested &lt;br /&gt;
|-&lt;br /&gt;
| AutoOutline || XRange.idl:RangeImpl ||  npower ||  done || not tested&lt;br /&gt;
|-&lt;br /&gt;
| ClearOutline || XRange.idl:RangeImpl || npower  || done || not tested&lt;br /&gt;
|-&lt;br /&gt;
| AddIndent || XRange.idl:FormatImpl ||   ||  ( lipservice implementation )&lt;br /&gt;
|-&lt;br /&gt;
| Group || XRange.idl:RangeImpl || npower  || done || not tested&lt;br /&gt;
|-&lt;br /&gt;
| UnGroup || XRange.idl:RangeImpl ||  npower || done || not tested&lt;br /&gt;
|-&lt;br /&gt;
| Merge || XRange.idl:RangeImpl || npower  || done || not tested&lt;br /&gt;
|-&lt;br /&gt;
| UnMerge || XRange.idl:RangeImpl || npower  || done || not tested&lt;br /&gt;
|-&lt;br /&gt;
| Style || XRange.idl:RangeImpl ||  npower || done || not tested&lt;br /&gt;
|-&lt;br /&gt;
| FormatConditions || XRange.idl:RangeImpl ||   ||  &lt;br /&gt;
|-&lt;br /&gt;
| Next || XRange.idl:RangeImpl ||   ||  &lt;br /&gt;
|-&lt;br /&gt;
| Previous || XRange.idl:RangeImpl ||   ||  &lt;br /&gt;
|-&lt;br /&gt;
| SpecialCells || XRange.idl:RangeImpl ||   ||  &lt;br /&gt;
|-&lt;br /&gt;
| Top || XRange.idl:RangeImpl ||   ||  &lt;br /&gt;
|-&lt;br /&gt;
| Left || XRange.idl:RangeImpl ||   ||  &lt;br /&gt;
|-&lt;br /&gt;
| Height || XRange.idl:RangeImpl ||   ||  &lt;br /&gt;
|-&lt;br /&gt;
| Width || XRange.idl:RangeImpl ||   ||  &lt;br /&gt;
|-&lt;br /&gt;
| RemoveSubtotal || XRange.idl:RangeImpl ||   ||  &lt;br /&gt;
|-&lt;br /&gt;
| Subtotal || XRange.idl:RangeImpl || || &lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Npower</name></author>
	</entry>
	<entry>
		<id>https://wiki.openoffice.org/w/index.php?title=Porting_notes&amp;diff=33101</id>
		<title>Porting notes</title>
		<link rel="alternate" type="text/html" href="https://wiki.openoffice.org/w/index.php?title=Porting_notes&amp;diff=33101"/>
		<updated>2007-05-23T09:49:31Z</updated>

		<summary type="html">&lt;p&gt;Npower: /* Calc Objects to port */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== Things to watch out for ===&lt;br /&gt;
* The mapping of the vba constants is different. Take for example the &amp;lt;tt&amp;gt;xlGuess&amp;lt;/tt&amp;gt; constant, in VBA it&amp;#039;s fully qualified name is &amp;lt;tt&amp;gt;Excel.XlYesNoGuess.xlGuess&amp;lt;/tt&amp;gt;, in the helperapi it&amp;#039;s &amp;lt;tt&amp;gt;com.sun.star.helper.constant.XlYesNoGuess.xlGuess&amp;lt;/tt&amp;gt; and in oovbaapi it&amp;#039;s &amp;lt;tt&amp;gt;org.openoffice.excel.XlYesNoGuess.xlGuess&amp;lt;/tt&amp;gt; &lt;br /&gt;
* All objects in the helperapi extend [http://api.openoffice.org/source/browse/*checkout*/api/helperapi/impl/com/sun/star/helper/HelperInterfaceAdaptor.java?rev=1.1 HelperInterfaceAdaptor], nothing similar (yet) exists in oovbaapi so this can be ignored in the implementation&lt;br /&gt;
* There are a quite few helper classes in the helperapi project e.g. &amp;lt;tt&amp;gt;RangeHelper.java&amp;lt;/tt&amp;gt; they shouldn&amp;#039;t be confused with the actual implementation objects we wish to port.&lt;br /&gt;
* classes and idl files of the same name can exist in multiple namespaces and this can be confusing. Because the helperapi was written with both the word and excel api(s) in mind there can be classes that share a common implementation and interfaces e.g.&lt;br /&gt;
** &amp;lt;tt&amp;gt;com/sun/star/helper/calc/XShape.idl&amp;lt;/tt&amp;gt;&lt;br /&gt;
** &amp;lt;tt&amp;gt;com/sun/star/helper/common/XShape.idl&amp;lt;/tt&amp;gt;&lt;br /&gt;
** &amp;lt;tt&amp;gt;com/sun/star/helper/writer/XShape.idl&amp;lt;/tt&amp;gt;&lt;br /&gt;
* Collections, these are handled differently see implementing a vba [[Porting notes#Collection|Collection]] in oovbaapi&lt;br /&gt;
* Every helperapi idl method defines [http://api.openoffice.org/source/browse/*checkout*/api/udkapi/com/sun/star/script/BasicErrorException.idl BasicErrorException] which allows and api method to transfer an error code and associated string paramater to basic.&lt;br /&gt;
&lt;br /&gt;
=== Hints for porting idl ===&lt;br /&gt;
==== Objects with Default Properties ====&lt;br /&gt;
This is something not handled by the helperapi but something you should be aware of when implementing a vba compatibility object. What is a default property, an example probably explains the concept better.&lt;br /&gt;
&lt;br /&gt;
 Range(&amp;quot;a1&amp;quot;) = &amp;quot;text&amp;quot;&lt;br /&gt;
&lt;br /&gt;
is a short cut for&lt;br /&gt;
&lt;br /&gt;
 Range(&amp;quot;a1&amp;quot;).Value = &amp;quot;text&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;Value&amp;lt;/tt&amp;gt; is a default property in the example above. We can provide similar behavior in basic with a compatibility api object ensuring the object implements [http://api.openoffice.org/source/browse/*checkout*/api/udkapi/com/sun/star/script/XDefaultProperty.idl XDefaultProperty.idl ]&lt;br /&gt;
&lt;br /&gt;
==== Objects with Default Method ====&lt;br /&gt;
&lt;br /&gt;
Similar to above some vba objects have a default method e.g. the &amp;lt;tt&amp;gt;Collection&amp;lt;/tt&amp;gt; object&lt;br /&gt;
&lt;br /&gt;
 set col = Sheets&lt;br /&gt;
 msgbox col(1).Name&lt;br /&gt;
&lt;br /&gt;
is a short cut for&lt;br /&gt;
&lt;br /&gt;
 set col = Sheets&lt;br /&gt;
 msgbox col.Item(1).Name&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;Item&amp;lt;/tt&amp;gt; is a default method in the example above. We can provide similar behavior in basic with a compatibility api object ensuring the object implements [http://api.openoffice.org/source/browse/*checkout*/api/udkapi/com/sun/star/script/XDefaultMethod.idl XDefaultMethod.idl ]&lt;br /&gt;
&lt;br /&gt;
==== Porting Collection objects ====&lt;br /&gt;
Generally all collection objects have a &amp;lt;tt&amp;gt;Count&amp;lt;/tt&amp;gt; and an &amp;lt;tt&amp;gt;Item&amp;lt;/tt&amp;gt; method and additionally the behaviour mentioned above. Also Collection objects can be used in a &amp;lt;tt&amp;gt;For Each&amp;lt;/tt&amp;gt; loop. To cater for that a helper implementation object &amp;lt;tt&amp;gt;ScVbaCollectionBaseImpl&amp;lt;/tt&amp;gt; provides the necessary information to the basic runtime to allow it to provide the classic vba &amp;lt;tt&amp;gt;Collection&amp;lt;/tt&amp;gt; class syntax support. It also requires to be initialised by an XIndexAccess implementation. Additionally the class inheriting from  &amp;lt;tt&amp;gt;ScVbaCollectionBaseImpl&amp;lt;/tt&amp;gt; must provide the  translation between the object iterated ( via XIndexAccess ) and the corrosponding compatibilty object returned to openoffice basic via the the &amp;lt;tt&amp;gt;createCollectionObject&amp;lt;/tt&amp;gt; method.&lt;br /&gt;
&lt;br /&gt;
A example of a ported &amp;lt;tt&amp;gt;Collection&amp;lt;/tt&amp;gt; object can be found in the [[Porting example]] section&lt;br /&gt;
&lt;br /&gt;
=== Calc Objects to port ===&lt;br /&gt;
{| style=&amp;quot;vertical-align:top; text-align:left; background-color:#efefef;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background-color:#d6d6d6;font-weight:bold;&amp;quot; &lt;br /&gt;
| Object || helperapi implementation name || Porting started by || Status || Notes&lt;br /&gt;
|-&lt;br /&gt;
| XAutoFilter.idl || [http://api.openoffice.org/source/browse/*checkout*/api/helperapi/impl/com/sun/star/helper/calc/AutoFilterImpl.java AutoFilterImpl] ||  ||   || there is a partial (untested) implementation in the porting example section, would be nice for some one to finish&lt;br /&gt;
|-&lt;br /&gt;
| XFilter.idl || [http://api.openoffice.org/source/browse/*checkout*/api/helperapi/impl/com/sun/star/helper/calc/FilterImpl.java FilterImpl.java]  ||  ||  || see above.&lt;br /&gt;
|-&lt;br /&gt;
| XFilters.idl || [http://api.openoffice.org/source/browse/*checkout*/api/helperapi/impl/com/sun/star/helper/calc/FiltersImpl.java FiltersImpl.java] ||  ||  || see above.&lt;br /&gt;
|-&lt;br /&gt;
| XAxes.idl || [http://api.openoffice.org/source/browse/*checkout*/api/helperapi/impl/com/sun/star/helper/calc/AxesImpl.java AxesImpl.java]  ||  npower || in progress ||&lt;br /&gt;
|-&lt;br /&gt;
| XAxis.idl || [http://api.openoffice.org/source/browse/*checkout*/api/helperapi/impl/com/sun/star/helper/calc/AxesImpl.java AxisImpl.java]  || npower || in progress  ||&lt;br /&gt;
|-&lt;br /&gt;
| XAxisTitle.idl || [http://api.openoffice.org/source/browse/*checkout*/api/helperapi/impl/com/sun/star/helper/calc/AxesTitleImpl.java AxisTitleImpl.java] ||  npower || complete  || not-tested&lt;br /&gt;
|-&lt;br /&gt;
| XCalc.idl || xxxx  || not required for porting see [[Application Object]] ||  || This is not a &amp;#039;real&amp;#039; object but in a collection of global method/attributes that probably should be part of the XApplication.idl interface&lt;br /&gt;
|-&lt;br /&gt;
| XChartObject.idl || [http://api.openoffice.org/source/browse/*checkout*/api/helperapi/impl/com/sun/star/helper/calc/ChartObjectImpl.java ChartObjectImpl.java] || npower || complete || not-tested&lt;br /&gt;
|-&lt;br /&gt;
| XChartObjects.idl || [http://api.openoffice.org/source/browse/*checkout*/api/helperapi/impl/com/sun/star/helper/calc/ChartObjectsImpl.java ChartObjectsImpl.java] || npower || complete || not-tested &lt;br /&gt;
|-&lt;br /&gt;
| XChart.idl || [http://api.openoffice.org/source/browse/*checkout*/api/helperapi/impl/com/sun/star/helper/calc/ChartImpl.java ChartImpl.java] || npower || in progress || &lt;br /&gt;
|-&lt;br /&gt;
| XCharts.idl ||  [http://api.openoffice.org/source/browse/*checkout*/api/helperapi/impl/com/sun/star/helper/calc/ChartsImpl.java ChartsImpl.java]  ||  npower ||  in progress ||&lt;br /&gt;
|-&lt;br /&gt;
| XChartTitle.idl || [http://api.openoffice.org/source/browse/*checkout*/api/helperapi/impl/com/sun/star/helper/calc/ChartTileImpl.java ChartTitleImpl.java]  || npower || complete || not-tested&lt;br /&gt;
|-&lt;br /&gt;
| XDataLabel.idl || [http://api.openoffice.org/source/browse/*checkout*/api/helperapi/impl/com/sun/star/helper/calc/DataLabelImp.java DataLabelImpl.java] || npower || in progress ||&lt;br /&gt;
|-&lt;br /&gt;
| XDataLabels.idl || [http://api.openoffice.org/source/browse/*checkout*/api/helperapi/impl/com/sun/star/helper/calc/DataLabelsImp.java DataLabelsImpl.java] ||  npower || in progress ||&lt;br /&gt;
|-&lt;br /&gt;
| XFormatCondition.idl || xxxx  ||  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
| XFormatConditions.idl || xxxx  ||  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
| XFormat.idl || xxxx  || npower || complete  || not tested &lt;br /&gt;
|-&lt;br /&gt;
| XHPageBreak.idl || xxxx  ||  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
| XHPageBreaks.idl || xxxx  ||  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
| XName.idl || xxxx  || sola ||  ||&lt;br /&gt;
|-&lt;br /&gt;
| XNames.idl || xxxx  || sola ||  ||&lt;br /&gt;
|-&lt;br /&gt;
| XPageBreak.idl || xxxx  ||  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
|[http://api.openoffice.org/source/browse/api/helperapi/com/sun/star/helper/calc/XPageSetup.idl XPageSetup.idl] || [http://api.openoffice.org/source/browse/api/helperapi/impl/com/sun/star/helper/calc/PageSetupImpl.java PageSetupImpl]  || zhang ||&lt;br /&gt;
|-&lt;br /&gt;
|[http://api.openoffice.org/source/browse/api/helperapi/com/sun/star/helper/calc/XPane.idl XPane.idl] || [http://api.openoffice.org/source/browse/api/helperapi/impl/com/sun/star/helper/calc/PaneImpl.java PaneImpl]  || Jiao.Jianhua || calc complete||&lt;br /&gt;
|-&lt;br /&gt;
| XPoint.idl || xxxx  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
| XPoints.idl || xxxx  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
| XProtection.idl || xxxx  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
| XQueryTable.idl || xxxx  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
| XQueryTables.idl || xxxx  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
| XShape.idl || xxxx  || jiao.jianhua || in progress ||&lt;br /&gt;
|-&lt;br /&gt;
| XShapes.idl || xxxx  || jiao.jianhua  || calc complete, no full text ||&lt;br /&gt;
|-&lt;br /&gt;
| XStyle.idl || xxxx  ||  npower || complete || not tested&lt;br /&gt;
|-&lt;br /&gt;
| XStyles.idl || xxxx  || npower || inprogress ||&lt;br /&gt;
|-&lt;br /&gt;
| XTitle.idl || xxxx  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
| XVPageBreak.idl || xxxx  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
| XVPageBreaks.idl|| xxxx  ||  ||&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Common Objects to port ===&lt;br /&gt;
{| style=&amp;quot;vertical-align:top; text-align:left; background-color:#efefef;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background-color:#d6d6d6;font-weight:bold;&amp;quot; &lt;br /&gt;
| Object || helperapi implementation name || Porting stared by? || Status ||&lt;br /&gt;
|-&lt;br /&gt;
| XAutoFilter.idl || xxxx || ||&lt;br /&gt;
|-&lt;br /&gt;
| XPictureFormat || xxxx || Jiao.Jianhua || in progress&lt;br /&gt;
|-&lt;br /&gt;
| XColorFormat || xxxx || Jiao.Jianhua || calc complete, no full text ||&lt;br /&gt;
|-&lt;br /&gt;
| XPosSize || xxxx || Jiao.Jianhua || implemented in org.openoffice.XControl ||&lt;br /&gt;
|-&lt;br /&gt;
| XWindow || xxxx || ||&lt;br /&gt;
|-&lt;br /&gt;
| XFileSearch || xxxx || ||&lt;br /&gt;
|-&lt;br /&gt;
| XWrapFormat || xxxx || || in word ||&lt;br /&gt;
|-&lt;br /&gt;
| XFillFormat || xxxx || Jiao.Jianhua || calc complete, no full text ||&lt;br /&gt;
|-&lt;br /&gt;
| XShapeRange || xxxx || Jiao.Jianhua || calc complete, no full text ||&lt;br /&gt;
|-&lt;br /&gt;
| XFoundFiles || xxxx || ||&lt;br /&gt;
|-&lt;br /&gt;
| XLineFormat || xxxx || Jiao.Jianhua || calc complete, no full text ||&lt;br /&gt;
|-&lt;br /&gt;
| XTextFrame || xxxx || Jiao.Jianhua || calc complete, no full text ||&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Missing attributes/methods ( common to helperapi objects ) to port ===&lt;br /&gt;
[[Application Object]]&lt;br /&gt;
&lt;br /&gt;
[[Range Object]]&lt;/div&gt;</summary>
		<author><name>Npower</name></author>
	</entry>
	<entry>
		<id>https://wiki.openoffice.org/w/index.php?title=VBA&amp;diff=33056</id>
		<title>VBA</title>
		<link rel="alternate" type="text/html" href="https://wiki.openoffice.org/w/index.php?title=VBA&amp;diff=33056"/>
		<updated>2007-05-23T08:37:04Z</updated>

		<summary type="html">&lt;p&gt;Npower: /* Dashboard */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
[[VBA zh|中]]&lt;br /&gt;
&lt;br /&gt;
[http://vba.openoffice.org VBA interoperability] project is a joint Novell &amp;amp; Sun incubator project whose aim is to deliver a way to run Excel and Word macros natively in imported documents.&lt;br /&gt;
* Noel Power ( co-lead )&lt;br /&gt;
* Andreas Breagas ( co-lead )&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Visual Basic for Applications&amp;#039;&amp;#039;&amp;#039; (&amp;#039;&amp;#039;&amp;#039;VBA&amp;#039;&amp;#039;&amp;#039;) is an implementation of Microsoft&amp;#039;s  [[wikipedia:Visual Basic|Visual Basic]] which is built into all Microsoft Office applications. &lt;br /&gt;
 &lt;br /&gt;
== Latest news ==&lt;br /&gt;
* cws [http://eis.services.openoffice.org/EIS2/cws.ShowCWS?Path=SRC680%2Fnpower6 npower6] has been integrated into m211&lt;br /&gt;
* Update Wiki Page with latest info&lt;br /&gt;
* [http://blogs.sun.com/GullFOSS/entry/sun_and_novell_work_together Novell and Sun to work together] on the VBA incubator project&lt;br /&gt;
* I am delighted that Andreas Bregas now joins me to co-lead the vba incubator project&lt;br /&gt;
&lt;br /&gt;
== Terminology ==&lt;br /&gt;
&lt;br /&gt;
* [[helperapi]] - The compatibility API generously donated by Sun that was part of their migration toolkit &lt;br /&gt;
* [[oovbaapi]] - the ooo-build vba interoperability solution originally implemented by Novell + object implementations from the helperapi.  Note: [[Ooo-build]] contains the latest VBA model and patches which allows you to run macros from your Microsoft Office documents. This model is under heavy development by Novell and others and the changes are continuously ported to openoffice. It is expected that many macros won&amp;#039;t run for now.&lt;br /&gt;
&lt;br /&gt;
== Dashboard ==&lt;br /&gt;
&lt;br /&gt;
* cws [http://eis.services.openoffice.org/EIS2/cws.ShowCWS?Path=SRC680%2Fnpower7 npower7] now IS &amp;#039;Ready for QA&amp;#039;&lt;br /&gt;
* cws [http://eis.services.openoffice.org/EIS2/cws.ShowCWS?Path=SRC680%2Fnpower6 npower6] integrated&lt;br /&gt;
* cws [http://eis.services.openoffice.org/EIS2/cws.ShowCWS?Path=SRC680%2Fnpower8 npower8] ( started ) ( contains )&lt;br /&gt;
    * some helperapi object porting &lt;br /&gt;
    * changes to include new multi-inheritance style idl and new style service definitions&lt;br /&gt;
    * removal of idl for compatibilty constants[1]&lt;br /&gt;
&lt;br /&gt;
[1] these will be generated using the mechanism from the helperapi ( basically the idl is generated from metadata files, the idl files are not preserved ( or needed ) but the types database generated from the idl files&lt;br /&gt;
&lt;br /&gt;
Task queue and status ( in order of priority )&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;vertical-align:top; text-align:left; background-color:#efefef;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background-color:#d6d6d6;font-weight:bold;&amp;quot; &lt;br /&gt;
| Feature || Description|| Issue # || Planned cws || State || Milestone integrated || &lt;br /&gt;
|-&lt;br /&gt;
| autogenerate constants in oovbaapi || port helperapi constant solution to oovbaapi module || 75551 || npower8 || started  || n/a ||&lt;br /&gt;
|-&lt;br /&gt;
| ooo-build api sync || synchronise ooo-build api changes with upstream || 77189 || npower8 || started  || n/a ||&lt;br /&gt;
|-&lt;br /&gt;
| array of array indexing  || in vba array of array indexing is very common, e.g. &amp;lt;tt&amp;gt;myArray(1)(2)&amp;lt;/tt&amp;gt;|| n/a || n/a || n/a  || n/a ||&lt;br /&gt;
|-&lt;br /&gt;
| toolbox control event support  || these controls support a loose binding where the presence of a macro event handler of the form &amp;lt;tt&amp;gt;controlname_xxx e.g. controlname_click&amp;lt;/tt&amp;gt;  results in the appropriate macro getting called when the associated action takes place || n/a || n/a || n/a  || n/a |||&lt;br /&gt;
|-&lt;br /&gt;
| port helperapi constants  || helperapi constants are autogenerated from metadata files, they are more complete than those already present in the oovbaapi module added in npower6 || 75551 || npower8 || planned  || n/a ||&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Completed Features&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;vertical-align:top; text-align:left; background-color:#efefef;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background-color:#d6d6d6;font-weight:bold;&amp;quot; &lt;br /&gt;
| Feature || Description|| Issue # || Planned cws || State || Milestone integrated || &lt;br /&gt;
|-&lt;br /&gt;
| vba constants || adjust basic runtime to be &amp;#039;conditionally&amp;#039; aware of the vba constants defined in oovbaapi module || 68897 || npower7 || complete  || n/a ||&lt;br /&gt;
|-&lt;br /&gt;
| support dim of vba object || adjust basic runtime to be &amp;#039;conditionally&amp;#039; allow a vba compatibilty api object to be used like &amp;lt;tt&amp;gt;Dim r1 as Range&amp;lt;/tt&amp;gt; || 68897 || npower7 || complete || n/a ||&lt;br /&gt;
|-&lt;br /&gt;
| compatible erase array || in vba compatibility mode erase does not behave as expected || 70380 || npower7 || complete  || n/a ||&lt;br /&gt;
|-&lt;br /&gt;
| null variant behaviour || in vba compatibility mode operations on null variant objects behave differently || 71827 || npower7 || complete  || n/a ||&lt;br /&gt;
|-&lt;br /&gt;
| &amp;#039;Like&amp;#039;  || new &amp;#039;Like&amp;#039; operator for basic || 73830 || npower7 || complete  || n/a ||&lt;br /&gt;
|-&lt;br /&gt;
| Module scope variable  || in vba module scope variables lifetime is tied to the document containing the macro ||  76819 || npower7 || complete  || n/a ||&lt;br /&gt;
|-&lt;br /&gt;
| support simple range short cut references || in vba the evaluate function is used for resolving many things, one of theses is short cut range references  e.g. &amp;#039;[a1:b2]&amp;#039; || 68898 || npower7 || complete  || n/a ||&lt;br /&gt;
|-&lt;br /&gt;
| fix accent handling || in vba mode accents in modules or macros are not handled || 76818 || npower7 || complete  || n/a ||&lt;br /&gt;
|-&lt;br /&gt;
| fix object comparison || in vba mode there is a problem comparing objects with default paramaters ( when the default is not specified ) ||  76820 || npower7 || complete  || n/a ||&lt;br /&gt;
|-&lt;br /&gt;
| class module import || when class modules are imported the correct &amp;#039;option&amp;#039; should be set ||  76822 || npower7 || complete || n/a ||&lt;br /&gt;
|-&lt;br /&gt;
| migrate ooo-build code || suck in the mountain of idl and implementation code from ooo-build  || 74096 || npower6 || complete || m211 ||&lt;br /&gt;
|-&lt;br /&gt;
| import vba code || conditionally import ( uncommented ) vba code and set appropriate  module options || 64570 || npower6 || complete  || m211 ||&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Broader scope tasks that need more investigation ( and splitting into smaller tasks ) (to be added)&lt;br /&gt;
&lt;br /&gt;
create list of items that may need promoting from vba compatibility to &amp;lt;tt&amp;gt;Standard&amp;lt;/tt&amp;gt; ooo-basic behaviour e.g. like issue [[http://www.openoffice.org/issues/show_bug.cgi?id=70380 70380]]&lt;br /&gt;
&lt;br /&gt;
== How to enable the VBA model ==&lt;br /&gt;
&lt;br /&gt;
The VBA model is enabled by default in the current ooo-build. It&amp;#039;s enough to [[Getting It|get]], [[Building with ooobuild|build]], [[Installing|install]], and [[Running|be able to run]] it. &lt;br /&gt;
&lt;br /&gt;
If you are using upstream OpenOffice.org and wish to play with this feature then check out and build the cws [http://eis.services.openoffice.org/EIS2/cws.ShowCWS?Path=SRC680%2Fnpower6 npower6] which contains the initial code drop for the oovbaapi &lt;br /&gt;
&lt;br /&gt;
== How to disable the VBA model ==&lt;br /&gt;
&lt;br /&gt;
Depending on how your version of OpenOffice.org delivers the VBA feature to you, there are a number of ways to disable it. &lt;br /&gt;
&lt;br /&gt;
If you have an Openoffice.org built by a linux distro ( or a windows one from Novell ) that has the vba interop feature then all you need do is navigate to the &amp;#039;Tools.Options.Load/Save.VBAProperties&amp;#039; page and uncheck the &amp;#039;Load Excelbasic code to edit&amp;#039; option.&lt;br /&gt;
&lt;br /&gt;
If you are using an own build ( incorporating ) [http://eis.services.openoffice.org/EIS2/cws.ShowCWS?Path=SRC680%2Fnpower6 cws-npower6] the above method will always work. But if you built the vba interop feature as an office extension then you can of course disable or delete the vbaapi.oxt extension using the Extension Manager.&lt;br /&gt;
&lt;br /&gt;
== How can I help you? ==&lt;br /&gt;
&lt;br /&gt;
We need help in a couple of areas, [[Porting notes|porting]] objects from the [[helperapi]], understanding the VBA usage patterns, implementation and testing; see below.&lt;br /&gt;
&lt;br /&gt;
== Porting Objects from the HelperApi ==&lt;br /&gt;
&lt;br /&gt;
What is the [[helperapi]]?&lt;br /&gt;
&lt;br /&gt;
Have a look at the [[porting notes]]&lt;br /&gt;
&lt;br /&gt;
Have a look at a [[porting example]]&lt;br /&gt;
&lt;br /&gt;
[[Porting_notes#Calc_Objects_to_port|list]] of objects that need porting&lt;br /&gt;
&lt;br /&gt;
[[Porting_notes#Missing_attributes.2Fmethods_to_port|list]] of methods ( to be ported from [[helperapi]] ) to existing objects&lt;br /&gt;
&lt;br /&gt;
== Understanding the VBA usage patterns ==&lt;br /&gt;
&lt;br /&gt;
VBA model is huge and we need help in understanding the VBA usage patterns for prioritizing as we progress. It&amp;#039;s important to receive as many Microsoft Office documents with macros as possible for analysis. &amp;#039;&amp;#039;&amp;#039;We are interested in documents from developers and regular people too.&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
=== Dumping the VBA from your MS Office documents ===&lt;br /&gt;
&lt;br /&gt;
==== libgsf ====&lt;br /&gt;
&lt;br /&gt;
If you&amp;#039;re worried about the sheet data you can use &amp;#039;&amp;#039;test-msvba&amp;#039;&amp;#039; from the [http://freshmeat.net/projects/libgsf/ libgsf]. Download the latest [http://cvs.gnome.org/viewcvs/libgsf/tests/test-msvba.c test-msvba.c] file and compile it with the following command:&lt;br /&gt;
&lt;br /&gt;
 gcc `pkg-config --libs --cflags libgsf-1` -o test-msvba test-msvba.c&lt;br /&gt;
&lt;br /&gt;
Note: you need to have libgsf-devel package installed.&lt;br /&gt;
&lt;br /&gt;
Now, you can dump the VBA from your documents with the following command:&lt;br /&gt;
&lt;br /&gt;
 find -name &amp;#039;*.xls&amp;#039; -exec sh -c &amp;#039;test-msvba {} &amp;gt;&amp;gt; ~/excel-vba-stream-for-noel.bas&amp;#039; \;&lt;br /&gt;
&lt;br /&gt;
==== pole ====&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;p&amp;gt;Or you can use [http://pole.berlios.de/ POLE] with GUI. POLE is a portable C++ library to access structured storage. It is designed to be compatible with Microsoft structured storage, also sometimes known as OLE Compound Document.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Exporting modules from the Microsoft Excel ===&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;p&amp;gt;Open your document and edit associated macros. You can see list of modules on the left side of your screen. Use the right mouse button and select &amp;#039;&amp;#039;Export&amp;#039;&amp;#039; from the context menu. The whole module will be saved as one huge &amp;#039;&amp;#039;*.bas&amp;#039;&amp;#039;.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Where to send ===&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;p&amp;gt;If you are going to send pure VBA streams, send them directly to [Noel dot Power at Novell dot com].&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Implementation ==&lt;br /&gt;
&lt;br /&gt;
=== The desired sequence ===&lt;br /&gt;
&lt;br /&gt;
==== Add an extension to the IDL ====&lt;br /&gt;
&lt;br /&gt;
The IDL lives in oovbaapi/org/openoffice/*, the IDL syntax can easily be gleaned from a few other IDL files. Two things are worth bearing in mind:&lt;br /&gt;
* it&amp;#039;s important that the argument names are correct, so that the &amp;lt;tt&amp;gt;MsgBox title:=&amp;quot;hello&amp;quot;&amp;lt;/tt&amp;gt; syntax works correctly.&lt;br /&gt;
* for optional arguments, or variant types you need to use the &amp;lt;tt&amp;gt;any&amp;lt;/tt&amp;gt; type&lt;br /&gt;
&lt;br /&gt;
Having edited the IDL extension you need to:&lt;br /&gt;
* run: &amp;lt;tt&amp;gt;build &amp;amp;&amp;amp; deliver&amp;lt;/tt&amp;gt; in oovbaapi (perhaps remove types.db first),&lt;br /&gt;
&lt;br /&gt;
==== Add the extension to the implementation ====&lt;br /&gt;
&lt;br /&gt;
The impl. code lives in &amp;lt;tt&amp;gt;sc/source/ui/vba/&amp;lt;/tt&amp;gt; - create the right header and source files.&lt;br /&gt;
Add the method (with the correct prototype) to the header - often it&amp;#039;s easiest to cut/paste that from the compiled C++ headers in &amp;lt;tt&amp;gt;sc/unxlngixxx/inc/org/openoffice/vba/&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Then implement the method itself in the .cxx file. Run &amp;lt;tt&amp;gt;build debug=true&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Running it ====&lt;br /&gt;
&lt;br /&gt;
You did use [linkoo] right ? - in which case - just re-run soffice.bin (killall -9 soffice.bin first to ensure there is no lurking factory process).&lt;br /&gt;
&lt;br /&gt;
Now of course - you want to add a new test to exercise it to ooo-build/test/macro/*. And of course loop back to the beginning.&lt;br /&gt;
Once you&amp;#039;ve got something you want to share - a simple &amp;lt;tt&amp;gt;cvs diff -u | tee /tmp/foo.diff&amp;lt;/tt&amp;gt; in ooo-build/scratch will yield a patch you can mail to Noel / the ooo-build mailing list to get your code folded in.&lt;br /&gt;
NB. it&amp;#039;s important you sign the [http://www.openoffice.org/licenses/jca.pdf JCA] first.&lt;br /&gt;
&lt;br /&gt;
== Testing ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;It&amp;#039;s extremely important to test the work which is already done. You can use test cases from the &amp;#039;&amp;#039;ooo-build/test/macro&amp;#039;&amp;#039; directory, you can extend them or you can write your own test cases.&amp;lt;/p&amp;gt;&lt;br /&gt;
It&amp;#039;s a good idea to write test cases directly in the Microsoft Excel?&lt;br /&gt;
&lt;br /&gt;
== Accessing the VBA API from other languages ==&lt;br /&gt;
&lt;br /&gt;
The VBA API is implemented by an UNO service, the service is accessible via a singleton. As such it is possible to use the API from any language that has an UNO binding. The main entry points to the API are certain global variables { Application, ActiveWorkbook and ActiveSheet } or methods { WorkSheets, WorkBooks } exported by the service. Using these globals as a starting point the rest of the api can be accessed.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;NOTE:&amp;#039;&amp;#039;&amp;#039;  Beaware the idl is not stable, ( nor won&amp;#039;t be for the forseeable future be &amp;#039;published&amp;#039; ) it WILL change, so if you are using a language that has a binary dependency on the interface ( like c++ &amp;amp; java ) then consider yourselves warned. &lt;br /&gt;
&lt;br /&gt;
=== Python ===&lt;br /&gt;
&lt;br /&gt;
 vba = uno.getComponentContext().getByName(&amp;quot;/singletons/org.openoffice.vba.theGlobals&amp;quot;)&lt;br /&gt;
 sheet = vba.ActiveSheet&lt;br /&gt;
 book = vba.ActiveWorkbook&lt;br /&gt;
&lt;br /&gt;
=== Java ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
import org.openoffice.vba.*;&lt;br /&gt;
&amp;quot;&lt;br /&gt;
// getComponentCtxFromSomewhere is a fictional&lt;br /&gt;
// routine representing acquisition of the component context&lt;br /&gt;
// from e.g. remote ServiceManage if the code is a remote client&lt;br /&gt;
// or from the XScriptContext if this were a java ScriptingFramework script &lt;br /&gt;
&lt;br /&gt;
XComponentContext ctx = getComponentCtxFromSomewhere(); &lt;br /&gt;
Object oGlobs = ctx.getValueByName(&lt;br /&gt;
                &amp;quot;/singletons/org.openoffice.vba.theGlobals&amp;quot;);&lt;br /&gt;
XGlobals xGlobs = AnyConverter.toObject(&lt;br /&gt;
                new Type(XGlobals.class), oGlobs);&lt;br /&gt;
XWorkBook xWBook =  xGlobs.getActiveWorkbook();&lt;br /&gt;
XWorkSheet xSheet = xGlobs.getActiveWorkSheet();&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== OO Basic ===&lt;br /&gt;
&lt;br /&gt;
Basic allows access to the global variables automatically just like VBA does, there is no need to create any services or access any singletons to use the API&lt;br /&gt;
&lt;br /&gt;
 msgbox &amp;quot;Name of the current document is &amp;quot; &amp;amp;amp; ActiveWorkbook.Path&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Development]]&lt;/div&gt;</summary>
		<author><name>Npower</name></author>
	</entry>
	<entry>
		<id>https://wiki.openoffice.org/w/index.php?title=Range_Object&amp;diff=32753</id>
		<title>Range Object</title>
		<link rel="alternate" type="text/html" href="https://wiki.openoffice.org/w/index.php?title=Range_Object&amp;diff=32753"/>
		<updated>2007-05-21T09:10:16Z</updated>

		<summary type="html">&lt;p&gt;Npower: /* Range Object */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== Range Object ===&lt;br /&gt;
{| style=&amp;quot;vertical-align:top; text-align:left; background-color:#efefef;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background-color:#d6d6d6;font-weight:bold;&amp;quot; &lt;br /&gt;
| method/property name || helperapi idl:implementation || Porting started by? || Status ||&lt;br /&gt;
|-&lt;br /&gt;
| Calculate || XRange.idl:RangeImpl || npower || done&lt;br /&gt;
|-&lt;br /&gt;
| Item || XRange.idl:RangeImpl || npower || done&lt;br /&gt;
|-&lt;br /&gt;
| AutoOutline || XRange.idl:RangeImpl ||  npower ||  done&lt;br /&gt;
|-&lt;br /&gt;
| ClearOutline || XRange.idl:RangeImpl || npower  || done&lt;br /&gt;
|-&lt;br /&gt;
| AddIndent || XRange.idl:FormatImpl ||   ||  ( lipservice implementation, doesn&amp;#039;t do anything )&lt;br /&gt;
|-&lt;br /&gt;
| Group || XRange.idl:RangeImpl || npower  || done &lt;br /&gt;
|-&lt;br /&gt;
| UnGroup || XRange.idl:RangeImpl ||  npower || done &lt;br /&gt;
|-&lt;br /&gt;
| Merge || XRange.idl:RangeImpl || npower  || done &lt;br /&gt;
|-&lt;br /&gt;
| UnMerge || XRange.idl:RangeImpl || npower  || done &lt;br /&gt;
|-&lt;br /&gt;
| Style || XRange.idl:RangeImpl ||  npower || in-progress &lt;br /&gt;
|-&lt;br /&gt;
| FormatConditions || XRange.idl:RangeImpl ||   ||  &lt;br /&gt;
|-&lt;br /&gt;
| Next || XRange.idl:RangeImpl ||   ||  &lt;br /&gt;
|-&lt;br /&gt;
| Previous || XRange.idl:RangeImpl ||   ||  &lt;br /&gt;
|-&lt;br /&gt;
| SpecialCells || XRange.idl:RangeImpl ||   ||  &lt;br /&gt;
|-&lt;br /&gt;
| Top || XRange.idl:RangeImpl ||   ||  &lt;br /&gt;
|-&lt;br /&gt;
| Left || XRange.idl:RangeImpl ||   ||  &lt;br /&gt;
|-&lt;br /&gt;
| Height || XRange.idl:RangeImpl ||   ||  &lt;br /&gt;
|-&lt;br /&gt;
| Width || XRange.idl:RangeImpl ||   ||  &lt;br /&gt;
|-&lt;br /&gt;
| RemoveSubtotal || XRange.idl:RangeImpl ||   ||  &lt;br /&gt;
|-&lt;br /&gt;
| Subtotal || XRange.idl:RangeImpl || || &lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Npower</name></author>
	</entry>
	<entry>
		<id>https://wiki.openoffice.org/w/index.php?title=Porting_notes&amp;diff=32522</id>
		<title>Porting notes</title>
		<link rel="alternate" type="text/html" href="https://wiki.openoffice.org/w/index.php?title=Porting_notes&amp;diff=32522"/>
		<updated>2007-05-18T11:30:24Z</updated>

		<summary type="html">&lt;p&gt;Npower: /* Missing attributes/methods to port */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== Things to watch out for ===&lt;br /&gt;
* The mapping of the vba constants is different. Take for example the &amp;lt;tt&amp;gt;xlGuess&amp;lt;/tt&amp;gt; constant, in VBA it&amp;#039;s fully qualified name is &amp;lt;tt&amp;gt;Excel.XlYesNoGuess.xlGuess&amp;lt;/tt&amp;gt;, in the helperapi it&amp;#039;s &amp;lt;tt&amp;gt;com.sun.star.helper.constant.XlYesNoGuess.xlGuess&amp;lt;/tt&amp;gt; and in oovbaapi it&amp;#039;s &amp;lt;tt&amp;gt;org.openoffice.excel.XlYesNoGuess.xlGuess&amp;lt;/tt&amp;gt; &lt;br /&gt;
* All objects in the helperapi extend [http://api.openoffice.org/source/browse/*checkout*/api/helperapi/impl/com/sun/star/helper/HelperInterfaceAdaptor.java?rev=1.1 HelperInterfaceAdaptor], nothing similar (yet) exists in oovbaapi so this can be ignored in the implementation&lt;br /&gt;
* There are a quite few helper classes in the helperapi project e.g. &amp;lt;tt&amp;gt;RangeHelper.java&amp;lt;/tt&amp;gt; they shouldn&amp;#039;t be confused with the actual implementation objects we wish to port.&lt;br /&gt;
* classes and idl files of the same name can exist in multiple namespaces and this can be confusing. Because the helperapi was written with both the word and excel api(s) in mind there can be classes that share a common implementation and interfaces e.g.&lt;br /&gt;
** &amp;lt;tt&amp;gt;com/sun/star/helper/calc/XShape.idl&amp;lt;/tt&amp;gt;&lt;br /&gt;
** &amp;lt;tt&amp;gt;com/sun/star/helper/common/XShape.idl&amp;lt;/tt&amp;gt;&lt;br /&gt;
** &amp;lt;tt&amp;gt;com/sun/star/helper/writer/XShape.idl&amp;lt;/tt&amp;gt;&lt;br /&gt;
* Collections, these are handled differently see implementing a vba [[Porting notes#Collection|Collection]] in oovbaapi&lt;br /&gt;
* Every helperapi idl method defines [http://api.openoffice.org/source/browse/*checkout*/api/udkapi/com/sun/star/script/BasicErrorException.idl BasicErrorException] which allows and api method to transfer an error code and associated string paramater to basic.&lt;br /&gt;
&lt;br /&gt;
=== Hints for porting idl ===&lt;br /&gt;
==== Objects with Default Properties ====&lt;br /&gt;
This is something not handled by the helperapi but something you should be aware of when implementing a vba compatibility object. What is a default property, an example probably explains the concept better.&lt;br /&gt;
&lt;br /&gt;
 Range(&amp;quot;a1&amp;quot;) = &amp;quot;text&amp;quot;&lt;br /&gt;
&lt;br /&gt;
is a short cut for&lt;br /&gt;
&lt;br /&gt;
 Range(&amp;quot;a1&amp;quot;).Value = &amp;quot;text&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;Value&amp;lt;/tt&amp;gt; is a default property in the example above. We can provide similar behavior in basic with a compatibility api object ensuring the object implements [http://api.openoffice.org/source/browse/*checkout*/api/udkapi/com/sun/star/script/XDefaultProperty.idl XDefaultProperty.idl ]&lt;br /&gt;
&lt;br /&gt;
==== Objects with Default Method ====&lt;br /&gt;
&lt;br /&gt;
Similar to above some vba objects have a default method e.g. the &amp;lt;tt&amp;gt;Collection&amp;lt;/tt&amp;gt; object&lt;br /&gt;
&lt;br /&gt;
 set col = Sheets&lt;br /&gt;
 msgbox col(1).Name&lt;br /&gt;
&lt;br /&gt;
is a short cut for&lt;br /&gt;
&lt;br /&gt;
 set col = Sheets&lt;br /&gt;
 msgbox col.Item(1).Name&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;Item&amp;lt;/tt&amp;gt; is a default method in the example above. We can provide similar behavior in basic with a compatibility api object ensuring the object implements [http://api.openoffice.org/source/browse/*checkout*/api/udkapi/com/sun/star/script/XDefaultMethod.idl XDefaultMethod.idl ]&lt;br /&gt;
&lt;br /&gt;
==== Porting Collection objects ====&lt;br /&gt;
Generally all collection objects have a &amp;lt;tt&amp;gt;Count&amp;lt;/tt&amp;gt; and an &amp;lt;tt&amp;gt;Item&amp;lt;/tt&amp;gt; method and additionally the behaviour mentioned above. Also Collection objects can be used in a &amp;lt;tt&amp;gt;For Each&amp;lt;/tt&amp;gt; loop. To cater for that a helper implementation object &amp;lt;tt&amp;gt;ScVbaCollectionBaseImpl&amp;lt;/tt&amp;gt; provides the necessary information to the basic runtime to allow it to provide the classic vba &amp;lt;tt&amp;gt;Collection&amp;lt;/tt&amp;gt; class syntax support. It also requires to be initialised by an XIndexAccess implementation. Additionally the class inheriting from  &amp;lt;tt&amp;gt;ScVbaCollectionBaseImpl&amp;lt;/tt&amp;gt; must provide the  translation between the object iterated ( via XIndexAccess ) and the corrosponding compatibilty object returned to openoffice basic via the the &amp;lt;tt&amp;gt;createCollectionObject&amp;lt;/tt&amp;gt; method.&lt;br /&gt;
&lt;br /&gt;
A example of a ported &amp;lt;tt&amp;gt;Collection&amp;lt;/tt&amp;gt; object can be found in the [[Porting example]] section&lt;br /&gt;
&lt;br /&gt;
=== Calc Objects to port ===&lt;br /&gt;
{| style=&amp;quot;vertical-align:top; text-align:left; background-color:#efefef;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background-color:#d6d6d6;font-weight:bold;&amp;quot; &lt;br /&gt;
| Object || helperapi implementation name || Porting started by || Status || Notes&lt;br /&gt;
|-&lt;br /&gt;
| XAutoFilter.idl || [http://api.openoffice.org/source/browse/*checkout*/api/helperapi/impl/com/sun/star/helper/calc/AutoFilterImpl.java AutoFilterImpl] ||  ||   || there is a partial (untested) implementation in the porting example section, would be nice for some one to finish&lt;br /&gt;
|-&lt;br /&gt;
| XFilter.idl || [http://api.openoffice.org/source/browse/*checkout*/api/helperapi/impl/com/sun/star/helper/calc/FilterImpl.java FilterImpl.java]  ||  ||  || see above.&lt;br /&gt;
|-&lt;br /&gt;
| XFilters.idl || [http://api.openoffice.org/source/browse/*checkout*/api/helperapi/impl/com/sun/star/helper/calc/FiltersImpl.java FiltersImpl.java] ||  ||  || see above.&lt;br /&gt;
|-&lt;br /&gt;
| XAxes.idl || [http://api.openoffice.org/source/browse/*checkout*/api/helperapi/impl/com/sun/star/helper/calc/AxesImpl.java AxesImpl.java]  ||  npower || in progress ||&lt;br /&gt;
|-&lt;br /&gt;
| XAxis.idl || [http://api.openoffice.org/source/browse/*checkout*/api/helperapi/impl/com/sun/star/helper/calc/AxesImpl.java AxisImpl.java]  || npower || in progress  ||&lt;br /&gt;
|-&lt;br /&gt;
| XAxisTitle.idl || [http://api.openoffice.org/source/browse/*checkout*/api/helperapi/impl/com/sun/star/helper/calc/AxesTitleImpl.java AxisTitleImpl.java] ||  npower || complete  || not-tested&lt;br /&gt;
|-&lt;br /&gt;
| XCalc.idl || xxxx  || not required for porting see [[Application Object]] ||  || This is not a &amp;#039;real&amp;#039; object but in a collection of global method/attributes that probably should be part of the XApplication.idl interface&lt;br /&gt;
|-&lt;br /&gt;
| XChartObject.idl || [http://api.openoffice.org/source/browse/*checkout*/api/helperapi/impl/com/sun/star/helper/calc/ChartObjectImpl.java ChartObjectImpl.java] || npower || complete || not-tested&lt;br /&gt;
|-&lt;br /&gt;
| XChartObjects.idl || [http://api.openoffice.org/source/browse/*checkout*/api/helperapi/impl/com/sun/star/helper/calc/ChartObjectsImpl.java ChartObjectsImpl.java] || npower || complete || not-tested &lt;br /&gt;
|-&lt;br /&gt;
| XChart.idl || [http://api.openoffice.org/source/browse/*checkout*/api/helperapi/impl/com/sun/star/helper/calc/ChartImpl.java ChartImpl.java] || npower || in progress || &lt;br /&gt;
|-&lt;br /&gt;
| XCharts.idl ||  [http://api.openoffice.org/source/browse/*checkout*/api/helperapi/impl/com/sun/star/helper/calc/ChartsImpl.java ChartsImpl.java]  ||  npower ||  in progress ||&lt;br /&gt;
|-&lt;br /&gt;
| XChartTitle.idl || [http://api.openoffice.org/source/browse/*checkout*/api/helperapi/impl/com/sun/star/helper/calc/ChartTileImpl.java ChartTitleImpl.java]  || npower || complete || not-tested&lt;br /&gt;
|-&lt;br /&gt;
| XDataLabel.idl || [http://api.openoffice.org/source/browse/*checkout*/api/helperapi/impl/com/sun/star/helper/calc/DataLabelImp.java DataLabelImpl.java] || npower || in progress ||&lt;br /&gt;
|-&lt;br /&gt;
| XDataLabels.idl || [http://api.openoffice.org/source/browse/*checkout*/api/helperapi/impl/com/sun/star/helper/calc/DataLabelsImp.java DataLabelsImpl.java] ||  npower || in progress ||&lt;br /&gt;
|-&lt;br /&gt;
| XFormatCondition.idl || xxxx  ||  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
| XFormatConditions.idl || xxxx  ||  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
| XFormat.idl || xxxx  || npower || in progress ||&lt;br /&gt;
|-&lt;br /&gt;
| XHPageBreak.idl || xxxx  ||  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
| XHPageBreaks.idl || xxxx  ||  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
| XName.idl || xxxx  || sola ||  ||&lt;br /&gt;
|-&lt;br /&gt;
| XNames.idl || xxxx  || sola ||  ||&lt;br /&gt;
|-&lt;br /&gt;
| XPageBreak.idl || xxxx  ||  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
|[http://api.openoffice.org/source/browse/api/helperapi/com/sun/star/helper/calc/XPageSetup.idl XPageSetup.idl] || [http://api.openoffice.org/source/browse/api/helperapi/impl/com/sun/star/helper/calc/PageSetupImpl.java PageSetupImpl]  || zhang ||&lt;br /&gt;
|-&lt;br /&gt;
|[http://api.openoffice.org/source/browse/api/helperapi/com/sun/star/helper/calc/XPane.idl XPane.idl] || [http://api.openoffice.org/source/browse/api/helperapi/impl/com/sun/star/helper/calc/PaneImpl.java PaneImpl]  || Jiao.Jianhua || calc complete||&lt;br /&gt;
|-&lt;br /&gt;
| XPoint.idl || xxxx  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
| XPoints.idl || xxxx  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
| XProtection.idl || xxxx  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
| XQueryTable.idl || xxxx  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
| XQueryTables.idl || xxxx  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
| XShape.idl || xxxx  || jiao.jianhua || in progress ||&lt;br /&gt;
|-&lt;br /&gt;
| XShapes.idl || xxxx  || jiao.jianhua  || calc complete, no full text ||&lt;br /&gt;
|-&lt;br /&gt;
| XStyle.idl || xxxx  ||  npower || in-progress&lt;br /&gt;
|-&lt;br /&gt;
| XStyles.idl || xxxx  ||  || &lt;br /&gt;
|-&lt;br /&gt;
| XTitle.idl || xxxx  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
| XVPageBreak.idl || xxxx  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
| XVPageBreaks.idl|| xxxx  ||  ||&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Common Objects to port ===&lt;br /&gt;
{| style=&amp;quot;vertical-align:top; text-align:left; background-color:#efefef;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background-color:#d6d6d6;font-weight:bold;&amp;quot; &lt;br /&gt;
| Object || helperapi implementation name || Porting stared by? || Status ||&lt;br /&gt;
|-&lt;br /&gt;
| XAutoFilter.idl || xxxx || ||&lt;br /&gt;
|-&lt;br /&gt;
| XPictureFormat || xxxx || Jiao.Jianhua || in progress&lt;br /&gt;
|-&lt;br /&gt;
| XColorFormat || xxxx || Jiao.Jianhua || calc complete, no full text ||&lt;br /&gt;
|-&lt;br /&gt;
| XPosSize || xxxx || Jiao.Jianhua || implemented in org.openoffice.XControl ||&lt;br /&gt;
|-&lt;br /&gt;
| XWindow || xxxx || ||&lt;br /&gt;
|-&lt;br /&gt;
| XFileSearch || xxxx || ||&lt;br /&gt;
|-&lt;br /&gt;
| XWrapFormat || xxxx || || in word ||&lt;br /&gt;
|-&lt;br /&gt;
| XFillFormat || xxxx || Jiao.Jianhua || calc complete, no full text ||&lt;br /&gt;
|-&lt;br /&gt;
| XShapeRange || xxxx || Jiao.Jianhua || calc complete, no full text ||&lt;br /&gt;
|-&lt;br /&gt;
| XFoundFiles || xxxx || ||&lt;br /&gt;
|-&lt;br /&gt;
| XLineFormat || xxxx || Jiao.Jianhua || calc complete, no full text ||&lt;br /&gt;
|-&lt;br /&gt;
| XTextFrame || xxxx || Jiao.Jianhua || calc complete, no full text ||&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Missing attributes/methods ( common to helperapi objects ) to port ===&lt;br /&gt;
[[Application Object]]&lt;br /&gt;
&lt;br /&gt;
[[Range Object]]&lt;/div&gt;</summary>
		<author><name>Npower</name></author>
	</entry>
	<entry>
		<id>https://wiki.openoffice.org/w/index.php?title=Porting_notes&amp;diff=32521</id>
		<title>Porting notes</title>
		<link rel="alternate" type="text/html" href="https://wiki.openoffice.org/w/index.php?title=Porting_notes&amp;diff=32521"/>
		<updated>2007-05-18T11:14:35Z</updated>

		<summary type="html">&lt;p&gt;Npower: /* Calc Objects to port */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== Things to watch out for ===&lt;br /&gt;
* The mapping of the vba constants is different. Take for example the &amp;lt;tt&amp;gt;xlGuess&amp;lt;/tt&amp;gt; constant, in VBA it&amp;#039;s fully qualified name is &amp;lt;tt&amp;gt;Excel.XlYesNoGuess.xlGuess&amp;lt;/tt&amp;gt;, in the helperapi it&amp;#039;s &amp;lt;tt&amp;gt;com.sun.star.helper.constant.XlYesNoGuess.xlGuess&amp;lt;/tt&amp;gt; and in oovbaapi it&amp;#039;s &amp;lt;tt&amp;gt;org.openoffice.excel.XlYesNoGuess.xlGuess&amp;lt;/tt&amp;gt; &lt;br /&gt;
* All objects in the helperapi extend [http://api.openoffice.org/source/browse/*checkout*/api/helperapi/impl/com/sun/star/helper/HelperInterfaceAdaptor.java?rev=1.1 HelperInterfaceAdaptor], nothing similar (yet) exists in oovbaapi so this can be ignored in the implementation&lt;br /&gt;
* There are a quite few helper classes in the helperapi project e.g. &amp;lt;tt&amp;gt;RangeHelper.java&amp;lt;/tt&amp;gt; they shouldn&amp;#039;t be confused with the actual implementation objects we wish to port.&lt;br /&gt;
* classes and idl files of the same name can exist in multiple namespaces and this can be confusing. Because the helperapi was written with both the word and excel api(s) in mind there can be classes that share a common implementation and interfaces e.g.&lt;br /&gt;
** &amp;lt;tt&amp;gt;com/sun/star/helper/calc/XShape.idl&amp;lt;/tt&amp;gt;&lt;br /&gt;
** &amp;lt;tt&amp;gt;com/sun/star/helper/common/XShape.idl&amp;lt;/tt&amp;gt;&lt;br /&gt;
** &amp;lt;tt&amp;gt;com/sun/star/helper/writer/XShape.idl&amp;lt;/tt&amp;gt;&lt;br /&gt;
* Collections, these are handled differently see implementing a vba [[Porting notes#Collection|Collection]] in oovbaapi&lt;br /&gt;
* Every helperapi idl method defines [http://api.openoffice.org/source/browse/*checkout*/api/udkapi/com/sun/star/script/BasicErrorException.idl BasicErrorException] which allows and api method to transfer an error code and associated string paramater to basic.&lt;br /&gt;
&lt;br /&gt;
=== Hints for porting idl ===&lt;br /&gt;
==== Objects with Default Properties ====&lt;br /&gt;
This is something not handled by the helperapi but something you should be aware of when implementing a vba compatibility object. What is a default property, an example probably explains the concept better.&lt;br /&gt;
&lt;br /&gt;
 Range(&amp;quot;a1&amp;quot;) = &amp;quot;text&amp;quot;&lt;br /&gt;
&lt;br /&gt;
is a short cut for&lt;br /&gt;
&lt;br /&gt;
 Range(&amp;quot;a1&amp;quot;).Value = &amp;quot;text&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;Value&amp;lt;/tt&amp;gt; is a default property in the example above. We can provide similar behavior in basic with a compatibility api object ensuring the object implements [http://api.openoffice.org/source/browse/*checkout*/api/udkapi/com/sun/star/script/XDefaultProperty.idl XDefaultProperty.idl ]&lt;br /&gt;
&lt;br /&gt;
==== Objects with Default Method ====&lt;br /&gt;
&lt;br /&gt;
Similar to above some vba objects have a default method e.g. the &amp;lt;tt&amp;gt;Collection&amp;lt;/tt&amp;gt; object&lt;br /&gt;
&lt;br /&gt;
 set col = Sheets&lt;br /&gt;
 msgbox col(1).Name&lt;br /&gt;
&lt;br /&gt;
is a short cut for&lt;br /&gt;
&lt;br /&gt;
 set col = Sheets&lt;br /&gt;
 msgbox col.Item(1).Name&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;Item&amp;lt;/tt&amp;gt; is a default method in the example above. We can provide similar behavior in basic with a compatibility api object ensuring the object implements [http://api.openoffice.org/source/browse/*checkout*/api/udkapi/com/sun/star/script/XDefaultMethod.idl XDefaultMethod.idl ]&lt;br /&gt;
&lt;br /&gt;
==== Porting Collection objects ====&lt;br /&gt;
Generally all collection objects have a &amp;lt;tt&amp;gt;Count&amp;lt;/tt&amp;gt; and an &amp;lt;tt&amp;gt;Item&amp;lt;/tt&amp;gt; method and additionally the behaviour mentioned above. Also Collection objects can be used in a &amp;lt;tt&amp;gt;For Each&amp;lt;/tt&amp;gt; loop. To cater for that a helper implementation object &amp;lt;tt&amp;gt;ScVbaCollectionBaseImpl&amp;lt;/tt&amp;gt; provides the necessary information to the basic runtime to allow it to provide the classic vba &amp;lt;tt&amp;gt;Collection&amp;lt;/tt&amp;gt; class syntax support. It also requires to be initialised by an XIndexAccess implementation. Additionally the class inheriting from  &amp;lt;tt&amp;gt;ScVbaCollectionBaseImpl&amp;lt;/tt&amp;gt; must provide the  translation between the object iterated ( via XIndexAccess ) and the corrosponding compatibilty object returned to openoffice basic via the the &amp;lt;tt&amp;gt;createCollectionObject&amp;lt;/tt&amp;gt; method.&lt;br /&gt;
&lt;br /&gt;
A example of a ported &amp;lt;tt&amp;gt;Collection&amp;lt;/tt&amp;gt; object can be found in the [[Porting example]] section&lt;br /&gt;
&lt;br /&gt;
=== Calc Objects to port ===&lt;br /&gt;
{| style=&amp;quot;vertical-align:top; text-align:left; background-color:#efefef;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background-color:#d6d6d6;font-weight:bold;&amp;quot; &lt;br /&gt;
| Object || helperapi implementation name || Porting started by || Status || Notes&lt;br /&gt;
|-&lt;br /&gt;
| XAutoFilter.idl || [http://api.openoffice.org/source/browse/*checkout*/api/helperapi/impl/com/sun/star/helper/calc/AutoFilterImpl.java AutoFilterImpl] ||  ||   || there is a partial (untested) implementation in the porting example section, would be nice for some one to finish&lt;br /&gt;
|-&lt;br /&gt;
| XFilter.idl || [http://api.openoffice.org/source/browse/*checkout*/api/helperapi/impl/com/sun/star/helper/calc/FilterImpl.java FilterImpl.java]  ||  ||  || see above.&lt;br /&gt;
|-&lt;br /&gt;
| XFilters.idl || [http://api.openoffice.org/source/browse/*checkout*/api/helperapi/impl/com/sun/star/helper/calc/FiltersImpl.java FiltersImpl.java] ||  ||  || see above.&lt;br /&gt;
|-&lt;br /&gt;
| XAxes.idl || [http://api.openoffice.org/source/browse/*checkout*/api/helperapi/impl/com/sun/star/helper/calc/AxesImpl.java AxesImpl.java]  ||  npower || in progress ||&lt;br /&gt;
|-&lt;br /&gt;
| XAxis.idl || [http://api.openoffice.org/source/browse/*checkout*/api/helperapi/impl/com/sun/star/helper/calc/AxesImpl.java AxisImpl.java]  || npower || in progress  ||&lt;br /&gt;
|-&lt;br /&gt;
| XAxisTitle.idl || [http://api.openoffice.org/source/browse/*checkout*/api/helperapi/impl/com/sun/star/helper/calc/AxesTitleImpl.java AxisTitleImpl.java] ||  npower || complete  || not-tested&lt;br /&gt;
|-&lt;br /&gt;
| XCalc.idl || xxxx  || not required for porting see [[Application Object]] ||  || This is not a &amp;#039;real&amp;#039; object but in a collection of global method/attributes that probably should be part of the XApplication.idl interface&lt;br /&gt;
|-&lt;br /&gt;
| XChartObject.idl || [http://api.openoffice.org/source/browse/*checkout*/api/helperapi/impl/com/sun/star/helper/calc/ChartObjectImpl.java ChartObjectImpl.java] || npower || complete || not-tested&lt;br /&gt;
|-&lt;br /&gt;
| XChartObjects.idl || [http://api.openoffice.org/source/browse/*checkout*/api/helperapi/impl/com/sun/star/helper/calc/ChartObjectsImpl.java ChartObjectsImpl.java] || npower || complete || not-tested &lt;br /&gt;
|-&lt;br /&gt;
| XChart.idl || [http://api.openoffice.org/source/browse/*checkout*/api/helperapi/impl/com/sun/star/helper/calc/ChartImpl.java ChartImpl.java] || npower || in progress || &lt;br /&gt;
|-&lt;br /&gt;
| XCharts.idl ||  [http://api.openoffice.org/source/browse/*checkout*/api/helperapi/impl/com/sun/star/helper/calc/ChartsImpl.java ChartsImpl.java]  ||  npower ||  in progress ||&lt;br /&gt;
|-&lt;br /&gt;
| XChartTitle.idl || [http://api.openoffice.org/source/browse/*checkout*/api/helperapi/impl/com/sun/star/helper/calc/ChartTileImpl.java ChartTitleImpl.java]  || npower || complete || not-tested&lt;br /&gt;
|-&lt;br /&gt;
| XDataLabel.idl || [http://api.openoffice.org/source/browse/*checkout*/api/helperapi/impl/com/sun/star/helper/calc/DataLabelImp.java DataLabelImpl.java] || npower || in progress ||&lt;br /&gt;
|-&lt;br /&gt;
| XDataLabels.idl || [http://api.openoffice.org/source/browse/*checkout*/api/helperapi/impl/com/sun/star/helper/calc/DataLabelsImp.java DataLabelsImpl.java] ||  npower || in progress ||&lt;br /&gt;
|-&lt;br /&gt;
| XFormatCondition.idl || xxxx  ||  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
| XFormatConditions.idl || xxxx  ||  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
| XFormat.idl || xxxx  || npower || in progress ||&lt;br /&gt;
|-&lt;br /&gt;
| XHPageBreak.idl || xxxx  ||  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
| XHPageBreaks.idl || xxxx  ||  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
| XName.idl || xxxx  || sola ||  ||&lt;br /&gt;
|-&lt;br /&gt;
| XNames.idl || xxxx  || sola ||  ||&lt;br /&gt;
|-&lt;br /&gt;
| XPageBreak.idl || xxxx  ||  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
|[http://api.openoffice.org/source/browse/api/helperapi/com/sun/star/helper/calc/XPageSetup.idl XPageSetup.idl] || [http://api.openoffice.org/source/browse/api/helperapi/impl/com/sun/star/helper/calc/PageSetupImpl.java PageSetupImpl]  || zhang ||&lt;br /&gt;
|-&lt;br /&gt;
|[http://api.openoffice.org/source/browse/api/helperapi/com/sun/star/helper/calc/XPane.idl XPane.idl] || [http://api.openoffice.org/source/browse/api/helperapi/impl/com/sun/star/helper/calc/PaneImpl.java PaneImpl]  || Jiao.Jianhua || calc complete||&lt;br /&gt;
|-&lt;br /&gt;
| XPoint.idl || xxxx  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
| XPoints.idl || xxxx  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
| XProtection.idl || xxxx  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
| XQueryTable.idl || xxxx  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
| XQueryTables.idl || xxxx  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
| XShape.idl || xxxx  || jiao.jianhua || in progress ||&lt;br /&gt;
|-&lt;br /&gt;
| XShapes.idl || xxxx  || jiao.jianhua  || calc complete, no full text ||&lt;br /&gt;
|-&lt;br /&gt;
| XStyle.idl || xxxx  ||  npower || in-progress&lt;br /&gt;
|-&lt;br /&gt;
| XStyles.idl || xxxx  ||  || &lt;br /&gt;
|-&lt;br /&gt;
| XTitle.idl || xxxx  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
| XVPageBreak.idl || xxxx  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
| XVPageBreaks.idl|| xxxx  ||  ||&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Common Objects to port ===&lt;br /&gt;
{| style=&amp;quot;vertical-align:top; text-align:left; background-color:#efefef;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background-color:#d6d6d6;font-weight:bold;&amp;quot; &lt;br /&gt;
| Object || helperapi implementation name || Porting stared by? || Status ||&lt;br /&gt;
|-&lt;br /&gt;
| XAutoFilter.idl || xxxx || ||&lt;br /&gt;
|-&lt;br /&gt;
| XPictureFormat || xxxx || Jiao.Jianhua || in progress&lt;br /&gt;
|-&lt;br /&gt;
| XColorFormat || xxxx || Jiao.Jianhua || calc complete, no full text ||&lt;br /&gt;
|-&lt;br /&gt;
| XPosSize || xxxx || Jiao.Jianhua || implemented in org.openoffice.XControl ||&lt;br /&gt;
|-&lt;br /&gt;
| XWindow || xxxx || ||&lt;br /&gt;
|-&lt;br /&gt;
| XFileSearch || xxxx || ||&lt;br /&gt;
|-&lt;br /&gt;
| XWrapFormat || xxxx || || in word ||&lt;br /&gt;
|-&lt;br /&gt;
| XFillFormat || xxxx || Jiao.Jianhua || calc complete, no full text ||&lt;br /&gt;
|-&lt;br /&gt;
| XShapeRange || xxxx || Jiao.Jianhua || calc complete, no full text ||&lt;br /&gt;
|-&lt;br /&gt;
| XFoundFiles || xxxx || ||&lt;br /&gt;
|-&lt;br /&gt;
| XLineFormat || xxxx || Jiao.Jianhua || calc complete, no full text ||&lt;br /&gt;
|-&lt;br /&gt;
| XTextFrame || xxxx || Jiao.Jianhua || calc complete, no full text ||&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Missing attributes/methods to port ===&lt;br /&gt;
[[Application Object]]&lt;br /&gt;
&lt;br /&gt;
[[Range Object]]&lt;/div&gt;</summary>
		<author><name>Npower</name></author>
	</entry>
	<entry>
		<id>https://wiki.openoffice.org/w/index.php?title=Porting_notes&amp;diff=32518</id>
		<title>Porting notes</title>
		<link rel="alternate" type="text/html" href="https://wiki.openoffice.org/w/index.php?title=Porting_notes&amp;diff=32518"/>
		<updated>2007-05-18T11:08:40Z</updated>

		<summary type="html">&lt;p&gt;Npower: /* Calc Objects to port */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== Things to watch out for ===&lt;br /&gt;
* The mapping of the vba constants is different. Take for example the &amp;lt;tt&amp;gt;xlGuess&amp;lt;/tt&amp;gt; constant, in VBA it&amp;#039;s fully qualified name is &amp;lt;tt&amp;gt;Excel.XlYesNoGuess.xlGuess&amp;lt;/tt&amp;gt;, in the helperapi it&amp;#039;s &amp;lt;tt&amp;gt;com.sun.star.helper.constant.XlYesNoGuess.xlGuess&amp;lt;/tt&amp;gt; and in oovbaapi it&amp;#039;s &amp;lt;tt&amp;gt;org.openoffice.excel.XlYesNoGuess.xlGuess&amp;lt;/tt&amp;gt; &lt;br /&gt;
* All objects in the helperapi extend [http://api.openoffice.org/source/browse/*checkout*/api/helperapi/impl/com/sun/star/helper/HelperInterfaceAdaptor.java?rev=1.1 HelperInterfaceAdaptor], nothing similar (yet) exists in oovbaapi so this can be ignored in the implementation&lt;br /&gt;
* There are a quite few helper classes in the helperapi project e.g. &amp;lt;tt&amp;gt;RangeHelper.java&amp;lt;/tt&amp;gt; they shouldn&amp;#039;t be confused with the actual implementation objects we wish to port.&lt;br /&gt;
* classes and idl files of the same name can exist in multiple namespaces and this can be confusing. Because the helperapi was written with both the word and excel api(s) in mind there can be classes that share a common implementation and interfaces e.g.&lt;br /&gt;
** &amp;lt;tt&amp;gt;com/sun/star/helper/calc/XShape.idl&amp;lt;/tt&amp;gt;&lt;br /&gt;
** &amp;lt;tt&amp;gt;com/sun/star/helper/common/XShape.idl&amp;lt;/tt&amp;gt;&lt;br /&gt;
** &amp;lt;tt&amp;gt;com/sun/star/helper/writer/XShape.idl&amp;lt;/tt&amp;gt;&lt;br /&gt;
* Collections, these are handled differently see implementing a vba [[Porting notes#Collection|Collection]] in oovbaapi&lt;br /&gt;
* Every helperapi idl method defines [http://api.openoffice.org/source/browse/*checkout*/api/udkapi/com/sun/star/script/BasicErrorException.idl BasicErrorException] which allows and api method to transfer an error code and associated string paramater to basic.&lt;br /&gt;
&lt;br /&gt;
=== Hints for porting idl ===&lt;br /&gt;
==== Objects with Default Properties ====&lt;br /&gt;
This is something not handled by the helperapi but something you should be aware of when implementing a vba compatibility object. What is a default property, an example probably explains the concept better.&lt;br /&gt;
&lt;br /&gt;
 Range(&amp;quot;a1&amp;quot;) = &amp;quot;text&amp;quot;&lt;br /&gt;
&lt;br /&gt;
is a short cut for&lt;br /&gt;
&lt;br /&gt;
 Range(&amp;quot;a1&amp;quot;).Value = &amp;quot;text&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;Value&amp;lt;/tt&amp;gt; is a default property in the example above. We can provide similar behavior in basic with a compatibility api object ensuring the object implements [http://api.openoffice.org/source/browse/*checkout*/api/udkapi/com/sun/star/script/XDefaultProperty.idl XDefaultProperty.idl ]&lt;br /&gt;
&lt;br /&gt;
==== Objects with Default Method ====&lt;br /&gt;
&lt;br /&gt;
Similar to above some vba objects have a default method e.g. the &amp;lt;tt&amp;gt;Collection&amp;lt;/tt&amp;gt; object&lt;br /&gt;
&lt;br /&gt;
 set col = Sheets&lt;br /&gt;
 msgbox col(1).Name&lt;br /&gt;
&lt;br /&gt;
is a short cut for&lt;br /&gt;
&lt;br /&gt;
 set col = Sheets&lt;br /&gt;
 msgbox col.Item(1).Name&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;Item&amp;lt;/tt&amp;gt; is a default method in the example above. We can provide similar behavior in basic with a compatibility api object ensuring the object implements [http://api.openoffice.org/source/browse/*checkout*/api/udkapi/com/sun/star/script/XDefaultMethod.idl XDefaultMethod.idl ]&lt;br /&gt;
&lt;br /&gt;
==== Porting Collection objects ====&lt;br /&gt;
Generally all collection objects have a &amp;lt;tt&amp;gt;Count&amp;lt;/tt&amp;gt; and an &amp;lt;tt&amp;gt;Item&amp;lt;/tt&amp;gt; method and additionally the behaviour mentioned above. Also Collection objects can be used in a &amp;lt;tt&amp;gt;For Each&amp;lt;/tt&amp;gt; loop. To cater for that a helper implementation object &amp;lt;tt&amp;gt;ScVbaCollectionBaseImpl&amp;lt;/tt&amp;gt; provides the necessary information to the basic runtime to allow it to provide the classic vba &amp;lt;tt&amp;gt;Collection&amp;lt;/tt&amp;gt; class syntax support. It also requires to be initialised by an XIndexAccess implementation. Additionally the class inheriting from  &amp;lt;tt&amp;gt;ScVbaCollectionBaseImpl&amp;lt;/tt&amp;gt; must provide the  translation between the object iterated ( via XIndexAccess ) and the corrosponding compatibilty object returned to openoffice basic via the the &amp;lt;tt&amp;gt;createCollectionObject&amp;lt;/tt&amp;gt; method.&lt;br /&gt;
&lt;br /&gt;
A example of a ported &amp;lt;tt&amp;gt;Collection&amp;lt;/tt&amp;gt; object can be found in the [[Porting example]] section&lt;br /&gt;
&lt;br /&gt;
=== Calc Objects to port ===&lt;br /&gt;
{| style=&amp;quot;vertical-align:top; text-align:left; background-color:#efefef;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background-color:#d6d6d6;font-weight:bold;&amp;quot; &lt;br /&gt;
| Object || helperapi implementation name || Porting started by || Status || Notes&lt;br /&gt;
|-&lt;br /&gt;
| XAutoFilter.idl || [http://api.openoffice.org/source/browse/*checkout*/api/helperapi/impl/com/sun/star/helper/calc/AutoFilterImpl.java AutoFilterImpl] ||  ||   || there is a partial (untested) implementation in the porting example section, would be nice for some one to finish&lt;br /&gt;
|-&lt;br /&gt;
| XFilter.idl || [http://api.openoffice.org/source/browse/*checkout*/api/helperapi/impl/com/sun/star/helper/calc/FilterImpl.java FilterImpl.java]  ||  ||  || see above.&lt;br /&gt;
|-&lt;br /&gt;
| XFilters.idl || [http://api.openoffice.org/source/browse/*checkout*/api/helperapi/impl/com/sun/star/helper/calc/FiltersImpl.java FiltersImpl.java] ||  ||  || see above.&lt;br /&gt;
|-&lt;br /&gt;
| XAxes.idl || [http://api.openoffice.org/source/browse/*checkout*/api/helperapi/impl/com/sun/star/helper/calc/AxesImpl.java AxesImpl.java]  ||  npower || in progress ||&lt;br /&gt;
|-&lt;br /&gt;
| XAxis.idl || [http://api.openoffice.org/source/browse/*checkout*/api/helperapi/impl/com/sun/star/helper/calc/AxesImpl.java AxisImpl.java]  || npower || in progress  ||&lt;br /&gt;
|-&lt;br /&gt;
| XAxisTitle.idl || [http://api.openoffice.org/source/browse/*checkout*/api/helperapi/impl/com/sun/star/helper/calc/AxesTitleImpl.java AxisTitleImpl.java] ||  npower || complete  || not-tested&lt;br /&gt;
|-&lt;br /&gt;
| XCalc.idl || xxxx  || not required for porting see [[Application Object]] ||  || This is not a &amp;#039;real&amp;#039; object but in a collection of global method/attributes that probably should be part of the XApplication.idl interface&lt;br /&gt;
|-&lt;br /&gt;
| XChartObject.idl || [http://api.openoffice.org/source/browse/*checkout*/api/helperapi/impl/com/sun/star/helper/calc/ChartObjectImpl.java ChartObjectImpl.java] || npower || complete || not-tested&lt;br /&gt;
|-&lt;br /&gt;
| XChartObjects.idl || [http://api.openoffice.org/source/browse/*checkout*/api/helperapi/impl/com/sun/star/helper/calc/ChartObjectsImpl.java ChartObjectsImpl.java] || npower || complete || not-tested &lt;br /&gt;
|-&lt;br /&gt;
| XChart.idl || [http://api.openoffice.org/source/browse/*checkout*/api/helperapi/impl/com/sun/star/helper/calc/ChartImpl.java ChartImpl.java] || npower || in progress || &lt;br /&gt;
|-&lt;br /&gt;
| XCharts.idl ||  [http://api.openoffice.org/source/browse/*checkout*/api/helperapi/impl/com/sun/star/helper/calc/ChartsImpl.java ChartsImpl.java]  ||  npower ||  in progress ||&lt;br /&gt;
|-&lt;br /&gt;
| XChartTitle.idl || [http://api.openoffice.org/source/browse/*checkout*/api/helperapi/impl/com/sun/star/helper/calc/ChartTileImpl.java ChartTitleImpl.java]  || npower || complete || not-tested&lt;br /&gt;
|-&lt;br /&gt;
| XDataLabel.idl || [http://api.openoffice.org/source/browse/*checkout*/api/helperapi/impl/com/sun/star/helper/calc/DataLabelImp.java DataLabelImpl.java] || npower || in progress ||&lt;br /&gt;
|-&lt;br /&gt;
| XDataLabels.idl || [http://api.openoffice.org/source/browse/*checkout*/api/helperapi/impl/com/sun/star/helper/calc/DataLabelsImp.java DataLabelsImpl.java] ||  npower || in progress ||&lt;br /&gt;
|-&lt;br /&gt;
| XFormatCondition.idl || xxxx  ||  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
| XFormatConditions.idl || xxxx  ||  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
| XFormat.idl || xxxx  ||  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
| XHPageBreak.idl || xxxx  ||  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
| XHPageBreaks.idl || xxxx  ||  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
| XName.idl || xxxx  || sola ||  ||&lt;br /&gt;
|-&lt;br /&gt;
| XNames.idl || xxxx  || sola ||  ||&lt;br /&gt;
|-&lt;br /&gt;
| XPageBreak.idl || xxxx  ||  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
|[http://api.openoffice.org/source/browse/api/helperapi/com/sun/star/helper/calc/XPageSetup.idl XPageSetup.idl] || [http://api.openoffice.org/source/browse/api/helperapi/impl/com/sun/star/helper/calc/PageSetupImpl.java PageSetupImpl]  || zhang ||&lt;br /&gt;
|-&lt;br /&gt;
|[http://api.openoffice.org/source/browse/api/helperapi/com/sun/star/helper/calc/XPane.idl XPane.idl] || [http://api.openoffice.org/source/browse/api/helperapi/impl/com/sun/star/helper/calc/PaneImpl.java PaneImpl]  || Jiao.Jianhua || calc complete||&lt;br /&gt;
|-&lt;br /&gt;
| XPoint.idl || xxxx  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
| XPoints.idl || xxxx  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
| XProtection.idl || xxxx  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
| XQueryTable.idl || xxxx  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
| XQueryTables.idl || xxxx  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
| XShape.idl || xxxx  || jiao.jianhua || in progress ||&lt;br /&gt;
|-&lt;br /&gt;
| XShapes.idl || xxxx  || jiao.jianhua  || calc complete, no full text ||&lt;br /&gt;
|-&lt;br /&gt;
| XStyle.idl || xxxx  ||  npower || in-progress&lt;br /&gt;
|-&lt;br /&gt;
| XStyles.idl || xxxx  || npower || in-progress&lt;br /&gt;
|-&lt;br /&gt;
| XTitle.idl || xxxx  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
| XVPageBreak.idl || xxxx  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
| XVPageBreaks.idl|| xxxx  ||  ||&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Common Objects to port ===&lt;br /&gt;
{| style=&amp;quot;vertical-align:top; text-align:left; background-color:#efefef;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background-color:#d6d6d6;font-weight:bold;&amp;quot; &lt;br /&gt;
| Object || helperapi implementation name || Porting stared by? || Status ||&lt;br /&gt;
|-&lt;br /&gt;
| XAutoFilter.idl || xxxx || ||&lt;br /&gt;
|-&lt;br /&gt;
| XPictureFormat || xxxx || Jiao.Jianhua || in progress&lt;br /&gt;
|-&lt;br /&gt;
| XColorFormat || xxxx || Jiao.Jianhua || calc complete, no full text ||&lt;br /&gt;
|-&lt;br /&gt;
| XPosSize || xxxx || Jiao.Jianhua || implemented in org.openoffice.XControl ||&lt;br /&gt;
|-&lt;br /&gt;
| XWindow || xxxx || ||&lt;br /&gt;
|-&lt;br /&gt;
| XFileSearch || xxxx || ||&lt;br /&gt;
|-&lt;br /&gt;
| XWrapFormat || xxxx || || in word ||&lt;br /&gt;
|-&lt;br /&gt;
| XFillFormat || xxxx || Jiao.Jianhua || calc complete, no full text ||&lt;br /&gt;
|-&lt;br /&gt;
| XShapeRange || xxxx || Jiao.Jianhua || calc complete, no full text ||&lt;br /&gt;
|-&lt;br /&gt;
| XFoundFiles || xxxx || ||&lt;br /&gt;
|-&lt;br /&gt;
| XLineFormat || xxxx || Jiao.Jianhua || calc complete, no full text ||&lt;br /&gt;
|-&lt;br /&gt;
| XTextFrame || xxxx || Jiao.Jianhua || calc complete, no full text ||&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Missing attributes/methods to port ===&lt;br /&gt;
[[Application Object]]&lt;br /&gt;
&lt;br /&gt;
[[Range Object]]&lt;/div&gt;</summary>
		<author><name>Npower</name></author>
	</entry>
	<entry>
		<id>https://wiki.openoffice.org/w/index.php?title=Range_Object&amp;diff=32515</id>
		<title>Range Object</title>
		<link rel="alternate" type="text/html" href="https://wiki.openoffice.org/w/index.php?title=Range_Object&amp;diff=32515"/>
		<updated>2007-05-18T10:43:57Z</updated>

		<summary type="html">&lt;p&gt;Npower: /* Range Object */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== Range Object ===&lt;br /&gt;
{| style=&amp;quot;vertical-align:top; text-align:left; background-color:#efefef;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background-color:#d6d6d6;font-weight:bold;&amp;quot; &lt;br /&gt;
| method/property name || helperapi idl:implementation || Porting stared by? || Status ||&lt;br /&gt;
|-&lt;br /&gt;
| Calculate || XRange.idl:RangeImpl || npower || done&lt;br /&gt;
|-&lt;br /&gt;
| Item || XRange.idl:RangeImpl || npower || done&lt;br /&gt;
|-&lt;br /&gt;
| AutoOutline || XRange.idl:RangeImpl ||  npower ||  done&lt;br /&gt;
|-&lt;br /&gt;
| ClearOutline || XRange.idl:RangeImpl || npower  || done&lt;br /&gt;
|-&lt;br /&gt;
| AddIndent || XRange.idl:FormatImpl ||   ||  ( lipservice implementation, doesn&amp;#039;t do anything )&lt;br /&gt;
|-&lt;br /&gt;
| Group || XRange.idl:RangeImpl || npower  || done &lt;br /&gt;
|-&lt;br /&gt;
| UnGroup || XRange.idl:RangeImpl ||  npower || done &lt;br /&gt;
|-&lt;br /&gt;
| Merge || XRange.idl:RangeImpl || npower  || done &lt;br /&gt;
|-&lt;br /&gt;
| UnMerge || XRange.idl:RangeImpl || npower  || done &lt;br /&gt;
|-&lt;br /&gt;
| Style || XRange.idl:RangeImpl ||  npower || in-progress &lt;br /&gt;
|-&lt;br /&gt;
| FormatConditions || XRange.idl:RangeImpl ||   ||  &lt;br /&gt;
|-&lt;br /&gt;
| Next || XRange.idl:RangeImpl ||   ||  &lt;br /&gt;
|-&lt;br /&gt;
| Previous || XRange.idl:RangeImpl ||   ||  &lt;br /&gt;
|-&lt;br /&gt;
| SpecialCells || XRange.idl:RangeImpl ||   ||  &lt;br /&gt;
|-&lt;br /&gt;
| Top || XRange.idl:RangeImpl ||   ||  &lt;br /&gt;
|-&lt;br /&gt;
| Left || XRange.idl:RangeImpl ||   ||  &lt;br /&gt;
|-&lt;br /&gt;
| Height || XRange.idl:RangeImpl ||   ||  &lt;br /&gt;
|-&lt;br /&gt;
| Width || XRange.idl:RangeImpl ||   ||  &lt;br /&gt;
|-&lt;br /&gt;
| RemoveSubtotal || XRange.idl:RangeImpl ||   ||  &lt;br /&gt;
|-&lt;br /&gt;
| Subtotal || XRange.idl:RangeImpl || || &lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Npower</name></author>
	</entry>
	<entry>
		<id>https://wiki.openoffice.org/w/index.php?title=Range_Object&amp;diff=32488</id>
		<title>Range Object</title>
		<link rel="alternate" type="text/html" href="https://wiki.openoffice.org/w/index.php?title=Range_Object&amp;diff=32488"/>
		<updated>2007-05-17T17:20:47Z</updated>

		<summary type="html">&lt;p&gt;Npower: /* Range Object */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== Range Object ===&lt;br /&gt;
{| style=&amp;quot;vertical-align:top; text-align:left; background-color:#efefef;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background-color:#d6d6d6;font-weight:bold;&amp;quot; &lt;br /&gt;
| method/property name || helperapi idl:implementation || Porting stared by? || Status ||&lt;br /&gt;
|-&lt;br /&gt;
| Calculate || XRange.idl:RangeImpl || npower || done&lt;br /&gt;
|-&lt;br /&gt;
| Item || XRange.idl:RangeImpl || npower || done&lt;br /&gt;
|-&lt;br /&gt;
| AutoOutline || XRange.idl:RangeImpl ||  npower ||  done&lt;br /&gt;
|-&lt;br /&gt;
| ClearOutline || XRange.idl:RangeImpl || npower  || done&lt;br /&gt;
|-&lt;br /&gt;
| AddIndent || XRange.idl:FormatImpl ||   ||  ( lipservice implementation, doesn&amp;#039;t do anything )&lt;br /&gt;
|-&lt;br /&gt;
| Group || XRange.idl:RangeImpl ||   ||  &lt;br /&gt;
|-&lt;br /&gt;
| UnGroup || XRange.idl:RangeImpl ||   ||  &lt;br /&gt;
|-&lt;br /&gt;
| Merge || XRange.idl:RangeImpl ||   ||  &lt;br /&gt;
|-&lt;br /&gt;
| UnMerge || XRange.idl:RangeImpl ||   ||  &lt;br /&gt;
|-&lt;br /&gt;
| Style || XRange.idl:RangeImpl ||   ||  &lt;br /&gt;
|-&lt;br /&gt;
| FormatConditions || XRange.idl:RangeImpl ||   ||  &lt;br /&gt;
|-&lt;br /&gt;
| Next || XRange.idl:RangeImpl ||   ||  &lt;br /&gt;
|-&lt;br /&gt;
| Previous || XRange.idl:RangeImpl ||   ||  &lt;br /&gt;
|-&lt;br /&gt;
| SpecialCells || XRange.idl:RangeImpl ||   ||  &lt;br /&gt;
|-&lt;br /&gt;
| Top || XRange.idl:RangeImpl ||   ||  &lt;br /&gt;
|-&lt;br /&gt;
| Left || XRange.idl:RangeImpl ||   ||  &lt;br /&gt;
|-&lt;br /&gt;
| Height || XRange.idl:RangeImpl ||   ||  &lt;br /&gt;
|-&lt;br /&gt;
| Width || XRange.idl:RangeImpl ||   ||  &lt;br /&gt;
|-&lt;br /&gt;
| RemoveSubtotal || XRange.idl:RangeImpl ||   ||  &lt;br /&gt;
|-&lt;br /&gt;
| Subtotal || XRange.idl:RangeImpl || || &lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Npower</name></author>
	</entry>
	<entry>
		<id>https://wiki.openoffice.org/w/index.php?title=Range_Object&amp;diff=32486</id>
		<title>Range Object</title>
		<link rel="alternate" type="text/html" href="https://wiki.openoffice.org/w/index.php?title=Range_Object&amp;diff=32486"/>
		<updated>2007-05-17T14:17:17Z</updated>

		<summary type="html">&lt;p&gt;Npower: /* Range Object */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== Range Object ===&lt;br /&gt;
{| style=&amp;quot;vertical-align:top; text-align:left; background-color:#efefef;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background-color:#d6d6d6;font-weight:bold;&amp;quot; &lt;br /&gt;
| method/property name || helperapi idl:implementation || Porting stared by? || Status ||&lt;br /&gt;
|-&lt;br /&gt;
| Calculate || XRange.idl:RangeImpl || npower || done&lt;br /&gt;
|-&lt;br /&gt;
| Item || XRange.idl:RangeImpl ||  || &lt;br /&gt;
|-&lt;br /&gt;
| AutoOutline || XRange.idl:RangeImpl ||  npower ||  ( this is only a stub in the helperapi )&lt;br /&gt;
|-&lt;br /&gt;
| ClearOutline || XRange.idl:RangeImpl ||   || &lt;br /&gt;
|-&lt;br /&gt;
| AddIndent || XRange.idl:FormatImpl ||   ||  ( lipservice implementation, doesn&amp;#039;t do anything )&lt;br /&gt;
|-&lt;br /&gt;
| Group || XRange.idl:RangeImpl ||   ||  &lt;br /&gt;
|-&lt;br /&gt;
| UnGroup || XRange.idl:RangeImpl ||   ||  &lt;br /&gt;
|-&lt;br /&gt;
| Merge || XRange.idl:RangeImpl ||   ||  &lt;br /&gt;
|-&lt;br /&gt;
| UnMerge || XRange.idl:RangeImpl ||   ||  &lt;br /&gt;
|-&lt;br /&gt;
| Style || XRange.idl:RangeImpl ||   ||  &lt;br /&gt;
|-&lt;br /&gt;
| FormatConditions || XRange.idl:RangeImpl ||   ||  &lt;br /&gt;
|-&lt;br /&gt;
| Next || XRange.idl:RangeImpl ||   ||  &lt;br /&gt;
|-&lt;br /&gt;
| Previous || XRange.idl:RangeImpl ||   ||  &lt;br /&gt;
|-&lt;br /&gt;
| SpecialCells || XRange.idl:RangeImpl ||   ||  &lt;br /&gt;
|-&lt;br /&gt;
| Top || XRange.idl:RangeImpl ||   ||  &lt;br /&gt;
|-&lt;br /&gt;
| Left || XRange.idl:RangeImpl ||   ||  &lt;br /&gt;
|-&lt;br /&gt;
| Height || XRange.idl:RangeImpl ||   ||  &lt;br /&gt;
|-&lt;br /&gt;
| Width || XRange.idl:RangeImpl ||   ||  &lt;br /&gt;
|-&lt;br /&gt;
| RemoveSubtotal || XRange.idl:RangeImpl ||   ||  &lt;br /&gt;
|-&lt;br /&gt;
| Subtotal || XRange.idl:RangeImpl || || &lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Npower</name></author>
	</entry>
	<entry>
		<id>https://wiki.openoffice.org/w/index.php?title=Range_Object&amp;diff=32485</id>
		<title>Range Object</title>
		<link rel="alternate" type="text/html" href="https://wiki.openoffice.org/w/index.php?title=Range_Object&amp;diff=32485"/>
		<updated>2007-05-17T14:14:35Z</updated>

		<summary type="html">&lt;p&gt;Npower: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== Range Object ===&lt;br /&gt;
{| style=&amp;quot;vertical-align:top; text-align:left; background-color:#efefef;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background-color:#d6d6d6;font-weight:bold;&amp;quot; &lt;br /&gt;
| method/property name || helperapi idl:implementation || Porting stared by? || Status ||&lt;br /&gt;
|-&lt;br /&gt;
| Calculate || XRange.idl:RangeImpl || npower || done&lt;br /&gt;
|-&lt;br /&gt;
| Item || XRange.idl:RangeImpl ||  || &lt;br /&gt;
|-&lt;br /&gt;
| AutoOutline || XRange.idl:RangeImpl ||  npower ||  ( this is only a stub in the helperapi )&lt;br /&gt;
|-&lt;br /&gt;
| ClearOutline || XRange.idl:RangeImpl ||   || &lt;br /&gt;
|-&lt;br /&gt;
| AddIndent || XRange.idl:FormatImpl ||   ||  &lt;br /&gt;
|-&lt;br /&gt;
| Group || XRange.idl:RangeImpl ||   ||  &lt;br /&gt;
|-&lt;br /&gt;
| UnGroup || XRange.idl:RangeImpl ||   ||  &lt;br /&gt;
|-&lt;br /&gt;
| Merge || XRange.idl:RangeImpl ||   ||  &lt;br /&gt;
|-&lt;br /&gt;
| UnMerge || XRange.idl:RangeImpl ||   ||  &lt;br /&gt;
|-&lt;br /&gt;
| Style || XRange.idl:RangeImpl ||   ||  &lt;br /&gt;
|-&lt;br /&gt;
| FormatConditions || XRange.idl:RangeImpl ||   ||  &lt;br /&gt;
|-&lt;br /&gt;
| Next || XRange.idl:RangeImpl ||   ||  &lt;br /&gt;
|-&lt;br /&gt;
| Previous || XRange.idl:RangeImpl ||   ||  &lt;br /&gt;
|-&lt;br /&gt;
| SpecialCells || XRange.idl:RangeImpl ||   ||  &lt;br /&gt;
|-&lt;br /&gt;
| Top || XRange.idl:RangeImpl ||   ||  &lt;br /&gt;
|-&lt;br /&gt;
| Left || XRange.idl:RangeImpl ||   ||  &lt;br /&gt;
|-&lt;br /&gt;
| Height || XRange.idl:RangeImpl ||   ||  &lt;br /&gt;
|-&lt;br /&gt;
| Width || XRange.idl:RangeImpl ||   ||  &lt;br /&gt;
|-&lt;br /&gt;
| RemoveSubtotal || XRange.idl:RangeImpl ||   ||  &lt;br /&gt;
|-&lt;br /&gt;
| Subtotal || XRange.idl:RangeImpl || || &lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Npower</name></author>
	</entry>
	<entry>
		<id>https://wiki.openoffice.org/w/index.php?title=Porting_notes&amp;diff=32484</id>
		<title>Porting notes</title>
		<link rel="alternate" type="text/html" href="https://wiki.openoffice.org/w/index.php?title=Porting_notes&amp;diff=32484"/>
		<updated>2007-05-17T14:06:14Z</updated>

		<summary type="html">&lt;p&gt;Npower: /* Missing attributes/methods to port */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== Things to watch out for ===&lt;br /&gt;
* The mapping of the vba constants is different. Take for example the &amp;lt;tt&amp;gt;xlGuess&amp;lt;/tt&amp;gt; constant, in VBA it&amp;#039;s fully qualified name is &amp;lt;tt&amp;gt;Excel.XlYesNoGuess.xlGuess&amp;lt;/tt&amp;gt;, in the helperapi it&amp;#039;s &amp;lt;tt&amp;gt;com.sun.star.helper.constant.XlYesNoGuess.xlGuess&amp;lt;/tt&amp;gt; and in oovbaapi it&amp;#039;s &amp;lt;tt&amp;gt;org.openoffice.excel.XlYesNoGuess.xlGuess&amp;lt;/tt&amp;gt; &lt;br /&gt;
* All objects in the helperapi extend [http://api.openoffice.org/source/browse/*checkout*/api/helperapi/impl/com/sun/star/helper/HelperInterfaceAdaptor.java?rev=1.1 HelperInterfaceAdaptor], nothing similar (yet) exists in oovbaapi so this can be ignored in the implementation&lt;br /&gt;
* There are a quite few helper classes in the helperapi project e.g. &amp;lt;tt&amp;gt;RangeHelper.java&amp;lt;/tt&amp;gt; they shouldn&amp;#039;t be confused with the actual implementation objects we wish to port.&lt;br /&gt;
* classes and idl files of the same name can exist in multiple namespaces and this can be confusing. Because the helperapi was written with both the word and excel api(s) in mind there can be classes that share a common implementation and interfaces e.g.&lt;br /&gt;
** &amp;lt;tt&amp;gt;com/sun/star/helper/calc/XShape.idl&amp;lt;/tt&amp;gt;&lt;br /&gt;
** &amp;lt;tt&amp;gt;com/sun/star/helper/common/XShape.idl&amp;lt;/tt&amp;gt;&lt;br /&gt;
** &amp;lt;tt&amp;gt;com/sun/star/helper/writer/XShape.idl&amp;lt;/tt&amp;gt;&lt;br /&gt;
* Collections, these are handled differently see implementing a vba [[Porting notes#Collection|Collection]] in oovbaapi&lt;br /&gt;
* Every helperapi idl method defines [http://api.openoffice.org/source/browse/*checkout*/api/udkapi/com/sun/star/script/BasicErrorException.idl BasicErrorException] which allows and api method to transfer an error code and associated string paramater to basic.&lt;br /&gt;
&lt;br /&gt;
=== Hints for porting idl ===&lt;br /&gt;
==== Objects with Default Properties ====&lt;br /&gt;
This is something not handled by the helperapi but something you should be aware of when implementing a vba compatibility object. What is a default property, an example probably explains the concept better.&lt;br /&gt;
&lt;br /&gt;
 Range(&amp;quot;a1&amp;quot;) = &amp;quot;text&amp;quot;&lt;br /&gt;
&lt;br /&gt;
is a short cut for&lt;br /&gt;
&lt;br /&gt;
 Range(&amp;quot;a1&amp;quot;).Value = &amp;quot;text&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;Value&amp;lt;/tt&amp;gt; is a default property in the example above. We can provide similar behavior in basic with a compatibility api object ensuring the object implements [http://api.openoffice.org/source/browse/*checkout*/api/udkapi/com/sun/star/script/XDefaultProperty.idl XDefaultProperty.idl ]&lt;br /&gt;
&lt;br /&gt;
==== Objects with Default Method ====&lt;br /&gt;
&lt;br /&gt;
Similar to above some vba objects have a default method e.g. the &amp;lt;tt&amp;gt;Collection&amp;lt;/tt&amp;gt; object&lt;br /&gt;
&lt;br /&gt;
 set col = Sheets&lt;br /&gt;
 msgbox col(1).Name&lt;br /&gt;
&lt;br /&gt;
is a short cut for&lt;br /&gt;
&lt;br /&gt;
 set col = Sheets&lt;br /&gt;
 msgbox col.Item(1).Name&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;Item&amp;lt;/tt&amp;gt; is a default method in the example above. We can provide similar behavior in basic with a compatibility api object ensuring the object implements [http://api.openoffice.org/source/browse/*checkout*/api/udkapi/com/sun/star/script/XDefaultMethod.idl XDefaultMethod.idl ]&lt;br /&gt;
&lt;br /&gt;
==== Porting Collection objects ====&lt;br /&gt;
Generally all collection objects have a &amp;lt;tt&amp;gt;Count&amp;lt;/tt&amp;gt; and an &amp;lt;tt&amp;gt;Item&amp;lt;/tt&amp;gt; method and additionally the behaviour mentioned above. Also Collection objects can be used in a &amp;lt;tt&amp;gt;For Each&amp;lt;/tt&amp;gt; loop. To cater for that a helper implementation object &amp;lt;tt&amp;gt;ScVbaCollectionBaseImpl&amp;lt;/tt&amp;gt; provides the necessary information to the basic runtime to allow it to provide the classic vba &amp;lt;tt&amp;gt;Collection&amp;lt;/tt&amp;gt; class syntax support. It also requires to be initialised by an XIndexAccess implementation. Additionally the class inheriting from  &amp;lt;tt&amp;gt;ScVbaCollectionBaseImpl&amp;lt;/tt&amp;gt; must provide the  translation between the object iterated ( via XIndexAccess ) and the corrosponding compatibilty object returned to openoffice basic via the the &amp;lt;tt&amp;gt;createCollectionObject&amp;lt;/tt&amp;gt; method.&lt;br /&gt;
&lt;br /&gt;
A example of a ported &amp;lt;tt&amp;gt;Collection&amp;lt;/tt&amp;gt; object can be found in the [[Porting example]] section&lt;br /&gt;
&lt;br /&gt;
=== Calc Objects to port ===&lt;br /&gt;
{| style=&amp;quot;vertical-align:top; text-align:left; background-color:#efefef;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background-color:#d6d6d6;font-weight:bold;&amp;quot; &lt;br /&gt;
| Object || helperapi implementation name || Porting started by || Status || Notes&lt;br /&gt;
|-&lt;br /&gt;
| XAutoFilter.idl || [http://api.openoffice.org/source/browse/*checkout*/api/helperapi/impl/com/sun/star/helper/calc/AutoFilterImpl.java AutoFilterImpl] ||  ||   || there is a partial (untested) implementation in the porting example section, would be nice for some one to finish&lt;br /&gt;
|-&lt;br /&gt;
| XFilter.idl || [http://api.openoffice.org/source/browse/*checkout*/api/helperapi/impl/com/sun/star/helper/calc/FilterImpl.java FilterImpl.java]  ||  ||  || see above.&lt;br /&gt;
|-&lt;br /&gt;
| XFilters.idl || [http://api.openoffice.org/source/browse/*checkout*/api/helperapi/impl/com/sun/star/helper/calc/FiltersImpl.java FiltersImpl.java] ||  ||  || see above.&lt;br /&gt;
|-&lt;br /&gt;
| XAxes.idl || [http://api.openoffice.org/source/browse/*checkout*/api/helperapi/impl/com/sun/star/helper/calc/AxesImpl.java AxesImpl.java]  ||  npower || in progress ||&lt;br /&gt;
|-&lt;br /&gt;
| XAxis.idl || [http://api.openoffice.org/source/browse/*checkout*/api/helperapi/impl/com/sun/star/helper/calc/AxesImpl.java AxisImpl.java]  || npower || in progress  ||&lt;br /&gt;
|-&lt;br /&gt;
| XAxisTitle.idl || [http://api.openoffice.org/source/browse/*checkout*/api/helperapi/impl/com/sun/star/helper/calc/AxesTitleImpl.java AxisTitleImpl.java] ||  npower || complete  || not-tested&lt;br /&gt;
|-&lt;br /&gt;
| XCalc.idl || xxxx  || not required for porting see [[Application Object]] ||  || This is not a &amp;#039;real&amp;#039; object but in a collection of global method/attributes that probably should be part of the XApplication.idl interface&lt;br /&gt;
|-&lt;br /&gt;
| XChartObject.idl || [http://api.openoffice.org/source/browse/*checkout*/api/helperapi/impl/com/sun/star/helper/calc/ChartObjectImpl.java ChartObjectImpl.java] || npower || complete || not-tested&lt;br /&gt;
|-&lt;br /&gt;
| XChartObjects.idl || [http://api.openoffice.org/source/browse/*checkout*/api/helperapi/impl/com/sun/star/helper/calc/ChartObjectsImpl.java ChartObjectsImpl.java] || npower || complete || not-tested &lt;br /&gt;
|-&lt;br /&gt;
| XChart.idl || [http://api.openoffice.org/source/browse/*checkout*/api/helperapi/impl/com/sun/star/helper/calc/ChartImpl.java ChartImpl.java] || npower || in progress || &lt;br /&gt;
|-&lt;br /&gt;
| XCharts.idl ||  [http://api.openoffice.org/source/browse/*checkout*/api/helperapi/impl/com/sun/star/helper/calc/ChartsImpl.java ChartsImpl.java]  ||  npower ||  in progress ||&lt;br /&gt;
|-&lt;br /&gt;
| XChartTitle.idl || [http://api.openoffice.org/source/browse/*checkout*/api/helperapi/impl/com/sun/star/helper/calc/ChartTileImpl.java ChartTitleImpl.java]  || npower || complete || not-tested&lt;br /&gt;
|-&lt;br /&gt;
| XDataLabel.idl || [http://api.openoffice.org/source/browse/*checkout*/api/helperapi/impl/com/sun/star/helper/calc/DataLabelImp.java DataLabelImpl.java] || npower || in progress ||&lt;br /&gt;
|-&lt;br /&gt;
| XDataLabels.idl || [http://api.openoffice.org/source/browse/*checkout*/api/helperapi/impl/com/sun/star/helper/calc/DataLabelsImp.java DataLabelsImpl.java] ||  npower || in progress ||&lt;br /&gt;
|-&lt;br /&gt;
| XFormatCondition.idl || xxxx  ||  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
| XFormatConditions.idl || xxxx  ||  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
| XFormat.idl || xxxx  ||  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
| XHPageBreak.idl || xxxx  ||  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
| XHPageBreaks.idl || xxxx  ||  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
| XName.idl || xxxx  || sola ||  ||&lt;br /&gt;
|-&lt;br /&gt;
| XNames.idl || xxxx  || sola ||  ||&lt;br /&gt;
|-&lt;br /&gt;
| XPageBreak.idl || xxxx  ||  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
|[http://api.openoffice.org/source/browse/api/helperapi/com/sun/star/helper/calc/XPageSetup.idl XPageSetup.idl] || [http://api.openoffice.org/source/browse/api/helperapi/impl/com/sun/star/helper/calc/PageSetupImpl.java PageSetupImpl]  || zhang ||&lt;br /&gt;
|-&lt;br /&gt;
|[http://api.openoffice.org/source/browse/api/helperapi/com/sun/star/helper/calc/XPane.idl XPane.idl] || [http://api.openoffice.org/source/browse/api/helperapi/impl/com/sun/star/helper/calc/PaneImpl.java PaneImpl]  || Jiao.Jianhua || calc complete||&lt;br /&gt;
|-&lt;br /&gt;
| XPoint.idl || xxxx  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
| XPoints.idl || xxxx  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
| XProtection.idl || xxxx  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
| XQueryTable.idl || xxxx  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
| XQueryTables.idl || xxxx  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
| XShape.idl || xxxx  || jiao.jianhua || in progress ||&lt;br /&gt;
|-&lt;br /&gt;
| XShapes.idl || xxxx  || jiao.jianhua  || calc complete, no full text ||&lt;br /&gt;
|-&lt;br /&gt;
| XStyle.idl || xxxx  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
| XStyles.idl || xxxx  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
| XTitle.idl || xxxx  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
| XVPageBreak.idl || xxxx  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
| XVPageBreaks.idl|| xxxx  ||  ||&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Common Objects to port ===&lt;br /&gt;
{| style=&amp;quot;vertical-align:top; text-align:left; background-color:#efefef;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background-color:#d6d6d6;font-weight:bold;&amp;quot; &lt;br /&gt;
| Object || helperapi implementation name || Porting stared by? || Status ||&lt;br /&gt;
|-&lt;br /&gt;
| XAutoFilter.idl || xxxx || ||&lt;br /&gt;
|-&lt;br /&gt;
| XPictureFormat || xxxx || Jiao.Jianhua || in progress&lt;br /&gt;
|-&lt;br /&gt;
| XColorFormat || xxxx || Jiao.Jianhua || calc complete, no full text ||&lt;br /&gt;
|-&lt;br /&gt;
| XPosSize || xxxx || Jiao.Jianhua || implemented in org.openoffice.XControl ||&lt;br /&gt;
|-&lt;br /&gt;
| XWindow || xxxx || ||&lt;br /&gt;
|-&lt;br /&gt;
| XFileSearch || xxxx || ||&lt;br /&gt;
|-&lt;br /&gt;
| XWrapFormat || xxxx || || in word ||&lt;br /&gt;
|-&lt;br /&gt;
| XFillFormat || xxxx || Jiao.Jianhua || calc complete, no full text ||&lt;br /&gt;
|-&lt;br /&gt;
| XShapeRange || xxxx || Jiao.Jianhua || calc complete, no full text ||&lt;br /&gt;
|-&lt;br /&gt;
| XFoundFiles || xxxx || ||&lt;br /&gt;
|-&lt;br /&gt;
| XLineFormat || xxxx || Jiao.Jianhua || calc complete, no full text ||&lt;br /&gt;
|-&lt;br /&gt;
| XTextFrame || xxxx || Jiao.Jianhua || calc complete, no full text ||&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Missing attributes/methods to port ===&lt;br /&gt;
[[Application Object]]&lt;br /&gt;
&lt;br /&gt;
[[Range Object]]&lt;/div&gt;</summary>
		<author><name>Npower</name></author>
	</entry>
	<entry>
		<id>https://wiki.openoffice.org/w/index.php?title=Porting_notes&amp;diff=32483</id>
		<title>Porting notes</title>
		<link rel="alternate" type="text/html" href="https://wiki.openoffice.org/w/index.php?title=Porting_notes&amp;diff=32483"/>
		<updated>2007-05-17T14:05:48Z</updated>

		<summary type="html">&lt;p&gt;Npower: /* Missing attributes/methods to port */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== Things to watch out for ===&lt;br /&gt;
* The mapping of the vba constants is different. Take for example the &amp;lt;tt&amp;gt;xlGuess&amp;lt;/tt&amp;gt; constant, in VBA it&amp;#039;s fully qualified name is &amp;lt;tt&amp;gt;Excel.XlYesNoGuess.xlGuess&amp;lt;/tt&amp;gt;, in the helperapi it&amp;#039;s &amp;lt;tt&amp;gt;com.sun.star.helper.constant.XlYesNoGuess.xlGuess&amp;lt;/tt&amp;gt; and in oovbaapi it&amp;#039;s &amp;lt;tt&amp;gt;org.openoffice.excel.XlYesNoGuess.xlGuess&amp;lt;/tt&amp;gt; &lt;br /&gt;
* All objects in the helperapi extend [http://api.openoffice.org/source/browse/*checkout*/api/helperapi/impl/com/sun/star/helper/HelperInterfaceAdaptor.java?rev=1.1 HelperInterfaceAdaptor], nothing similar (yet) exists in oovbaapi so this can be ignored in the implementation&lt;br /&gt;
* There are a quite few helper classes in the helperapi project e.g. &amp;lt;tt&amp;gt;RangeHelper.java&amp;lt;/tt&amp;gt; they shouldn&amp;#039;t be confused with the actual implementation objects we wish to port.&lt;br /&gt;
* classes and idl files of the same name can exist in multiple namespaces and this can be confusing. Because the helperapi was written with both the word and excel api(s) in mind there can be classes that share a common implementation and interfaces e.g.&lt;br /&gt;
** &amp;lt;tt&amp;gt;com/sun/star/helper/calc/XShape.idl&amp;lt;/tt&amp;gt;&lt;br /&gt;
** &amp;lt;tt&amp;gt;com/sun/star/helper/common/XShape.idl&amp;lt;/tt&amp;gt;&lt;br /&gt;
** &amp;lt;tt&amp;gt;com/sun/star/helper/writer/XShape.idl&amp;lt;/tt&amp;gt;&lt;br /&gt;
* Collections, these are handled differently see implementing a vba [[Porting notes#Collection|Collection]] in oovbaapi&lt;br /&gt;
* Every helperapi idl method defines [http://api.openoffice.org/source/browse/*checkout*/api/udkapi/com/sun/star/script/BasicErrorException.idl BasicErrorException] which allows and api method to transfer an error code and associated string paramater to basic.&lt;br /&gt;
&lt;br /&gt;
=== Hints for porting idl ===&lt;br /&gt;
==== Objects with Default Properties ====&lt;br /&gt;
This is something not handled by the helperapi but something you should be aware of when implementing a vba compatibility object. What is a default property, an example probably explains the concept better.&lt;br /&gt;
&lt;br /&gt;
 Range(&amp;quot;a1&amp;quot;) = &amp;quot;text&amp;quot;&lt;br /&gt;
&lt;br /&gt;
is a short cut for&lt;br /&gt;
&lt;br /&gt;
 Range(&amp;quot;a1&amp;quot;).Value = &amp;quot;text&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;Value&amp;lt;/tt&amp;gt; is a default property in the example above. We can provide similar behavior in basic with a compatibility api object ensuring the object implements [http://api.openoffice.org/source/browse/*checkout*/api/udkapi/com/sun/star/script/XDefaultProperty.idl XDefaultProperty.idl ]&lt;br /&gt;
&lt;br /&gt;
==== Objects with Default Method ====&lt;br /&gt;
&lt;br /&gt;
Similar to above some vba objects have a default method e.g. the &amp;lt;tt&amp;gt;Collection&amp;lt;/tt&amp;gt; object&lt;br /&gt;
&lt;br /&gt;
 set col = Sheets&lt;br /&gt;
 msgbox col(1).Name&lt;br /&gt;
&lt;br /&gt;
is a short cut for&lt;br /&gt;
&lt;br /&gt;
 set col = Sheets&lt;br /&gt;
 msgbox col.Item(1).Name&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;Item&amp;lt;/tt&amp;gt; is a default method in the example above. We can provide similar behavior in basic with a compatibility api object ensuring the object implements [http://api.openoffice.org/source/browse/*checkout*/api/udkapi/com/sun/star/script/XDefaultMethod.idl XDefaultMethod.idl ]&lt;br /&gt;
&lt;br /&gt;
==== Porting Collection objects ====&lt;br /&gt;
Generally all collection objects have a &amp;lt;tt&amp;gt;Count&amp;lt;/tt&amp;gt; and an &amp;lt;tt&amp;gt;Item&amp;lt;/tt&amp;gt; method and additionally the behaviour mentioned above. Also Collection objects can be used in a &amp;lt;tt&amp;gt;For Each&amp;lt;/tt&amp;gt; loop. To cater for that a helper implementation object &amp;lt;tt&amp;gt;ScVbaCollectionBaseImpl&amp;lt;/tt&amp;gt; provides the necessary information to the basic runtime to allow it to provide the classic vba &amp;lt;tt&amp;gt;Collection&amp;lt;/tt&amp;gt; class syntax support. It also requires to be initialised by an XIndexAccess implementation. Additionally the class inheriting from  &amp;lt;tt&amp;gt;ScVbaCollectionBaseImpl&amp;lt;/tt&amp;gt; must provide the  translation between the object iterated ( via XIndexAccess ) and the corrosponding compatibilty object returned to openoffice basic via the the &amp;lt;tt&amp;gt;createCollectionObject&amp;lt;/tt&amp;gt; method.&lt;br /&gt;
&lt;br /&gt;
A example of a ported &amp;lt;tt&amp;gt;Collection&amp;lt;/tt&amp;gt; object can be found in the [[Porting example]] section&lt;br /&gt;
&lt;br /&gt;
=== Calc Objects to port ===&lt;br /&gt;
{| style=&amp;quot;vertical-align:top; text-align:left; background-color:#efefef;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background-color:#d6d6d6;font-weight:bold;&amp;quot; &lt;br /&gt;
| Object || helperapi implementation name || Porting started by || Status || Notes&lt;br /&gt;
|-&lt;br /&gt;
| XAutoFilter.idl || [http://api.openoffice.org/source/browse/*checkout*/api/helperapi/impl/com/sun/star/helper/calc/AutoFilterImpl.java AutoFilterImpl] ||  ||   || there is a partial (untested) implementation in the porting example section, would be nice for some one to finish&lt;br /&gt;
|-&lt;br /&gt;
| XFilter.idl || [http://api.openoffice.org/source/browse/*checkout*/api/helperapi/impl/com/sun/star/helper/calc/FilterImpl.java FilterImpl.java]  ||  ||  || see above.&lt;br /&gt;
|-&lt;br /&gt;
| XFilters.idl || [http://api.openoffice.org/source/browse/*checkout*/api/helperapi/impl/com/sun/star/helper/calc/FiltersImpl.java FiltersImpl.java] ||  ||  || see above.&lt;br /&gt;
|-&lt;br /&gt;
| XAxes.idl || [http://api.openoffice.org/source/browse/*checkout*/api/helperapi/impl/com/sun/star/helper/calc/AxesImpl.java AxesImpl.java]  ||  npower || in progress ||&lt;br /&gt;
|-&lt;br /&gt;
| XAxis.idl || [http://api.openoffice.org/source/browse/*checkout*/api/helperapi/impl/com/sun/star/helper/calc/AxesImpl.java AxisImpl.java]  || npower || in progress  ||&lt;br /&gt;
|-&lt;br /&gt;
| XAxisTitle.idl || [http://api.openoffice.org/source/browse/*checkout*/api/helperapi/impl/com/sun/star/helper/calc/AxesTitleImpl.java AxisTitleImpl.java] ||  npower || complete  || not-tested&lt;br /&gt;
|-&lt;br /&gt;
| XCalc.idl || xxxx  || not required for porting see [[Application Object]] ||  || This is not a &amp;#039;real&amp;#039; object but in a collection of global method/attributes that probably should be part of the XApplication.idl interface&lt;br /&gt;
|-&lt;br /&gt;
| XChartObject.idl || [http://api.openoffice.org/source/browse/*checkout*/api/helperapi/impl/com/sun/star/helper/calc/ChartObjectImpl.java ChartObjectImpl.java] || npower || complete || not-tested&lt;br /&gt;
|-&lt;br /&gt;
| XChartObjects.idl || [http://api.openoffice.org/source/browse/*checkout*/api/helperapi/impl/com/sun/star/helper/calc/ChartObjectsImpl.java ChartObjectsImpl.java] || npower || complete || not-tested &lt;br /&gt;
|-&lt;br /&gt;
| XChart.idl || [http://api.openoffice.org/source/browse/*checkout*/api/helperapi/impl/com/sun/star/helper/calc/ChartImpl.java ChartImpl.java] || npower || in progress || &lt;br /&gt;
|-&lt;br /&gt;
| XCharts.idl ||  [http://api.openoffice.org/source/browse/*checkout*/api/helperapi/impl/com/sun/star/helper/calc/ChartsImpl.java ChartsImpl.java]  ||  npower ||  in progress ||&lt;br /&gt;
|-&lt;br /&gt;
| XChartTitle.idl || [http://api.openoffice.org/source/browse/*checkout*/api/helperapi/impl/com/sun/star/helper/calc/ChartTileImpl.java ChartTitleImpl.java]  || npower || complete || not-tested&lt;br /&gt;
|-&lt;br /&gt;
| XDataLabel.idl || [http://api.openoffice.org/source/browse/*checkout*/api/helperapi/impl/com/sun/star/helper/calc/DataLabelImp.java DataLabelImpl.java] || npower || in progress ||&lt;br /&gt;
|-&lt;br /&gt;
| XDataLabels.idl || [http://api.openoffice.org/source/browse/*checkout*/api/helperapi/impl/com/sun/star/helper/calc/DataLabelsImp.java DataLabelsImpl.java] ||  npower || in progress ||&lt;br /&gt;
|-&lt;br /&gt;
| XFormatCondition.idl || xxxx  ||  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
| XFormatConditions.idl || xxxx  ||  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
| XFormat.idl || xxxx  ||  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
| XHPageBreak.idl || xxxx  ||  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
| XHPageBreaks.idl || xxxx  ||  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
| XName.idl || xxxx  || sola ||  ||&lt;br /&gt;
|-&lt;br /&gt;
| XNames.idl || xxxx  || sola ||  ||&lt;br /&gt;
|-&lt;br /&gt;
| XPageBreak.idl || xxxx  ||  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
|[http://api.openoffice.org/source/browse/api/helperapi/com/sun/star/helper/calc/XPageSetup.idl XPageSetup.idl] || [http://api.openoffice.org/source/browse/api/helperapi/impl/com/sun/star/helper/calc/PageSetupImpl.java PageSetupImpl]  || zhang ||&lt;br /&gt;
|-&lt;br /&gt;
|[http://api.openoffice.org/source/browse/api/helperapi/com/sun/star/helper/calc/XPane.idl XPane.idl] || [http://api.openoffice.org/source/browse/api/helperapi/impl/com/sun/star/helper/calc/PaneImpl.java PaneImpl]  || Jiao.Jianhua || calc complete||&lt;br /&gt;
|-&lt;br /&gt;
| XPoint.idl || xxxx  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
| XPoints.idl || xxxx  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
| XProtection.idl || xxxx  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
| XQueryTable.idl || xxxx  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
| XQueryTables.idl || xxxx  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
| XShape.idl || xxxx  || jiao.jianhua || in progress ||&lt;br /&gt;
|-&lt;br /&gt;
| XShapes.idl || xxxx  || jiao.jianhua  || calc complete, no full text ||&lt;br /&gt;
|-&lt;br /&gt;
| XStyle.idl || xxxx  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
| XStyles.idl || xxxx  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
| XTitle.idl || xxxx  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
| XVPageBreak.idl || xxxx  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
| XVPageBreaks.idl|| xxxx  ||  ||&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Common Objects to port ===&lt;br /&gt;
{| style=&amp;quot;vertical-align:top; text-align:left; background-color:#efefef;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background-color:#d6d6d6;font-weight:bold;&amp;quot; &lt;br /&gt;
| Object || helperapi implementation name || Porting stared by? || Status ||&lt;br /&gt;
|-&lt;br /&gt;
| XAutoFilter.idl || xxxx || ||&lt;br /&gt;
|-&lt;br /&gt;
| XPictureFormat || xxxx || Jiao.Jianhua || in progress&lt;br /&gt;
|-&lt;br /&gt;
| XColorFormat || xxxx || Jiao.Jianhua || calc complete, no full text ||&lt;br /&gt;
|-&lt;br /&gt;
| XPosSize || xxxx || Jiao.Jianhua || implemented in org.openoffice.XControl ||&lt;br /&gt;
|-&lt;br /&gt;
| XWindow || xxxx || ||&lt;br /&gt;
|-&lt;br /&gt;
| XFileSearch || xxxx || ||&lt;br /&gt;
|-&lt;br /&gt;
| XWrapFormat || xxxx || || in word ||&lt;br /&gt;
|-&lt;br /&gt;
| XFillFormat || xxxx || Jiao.Jianhua || calc complete, no full text ||&lt;br /&gt;
|-&lt;br /&gt;
| XShapeRange || xxxx || Jiao.Jianhua || calc complete, no full text ||&lt;br /&gt;
|-&lt;br /&gt;
| XFoundFiles || xxxx || ||&lt;br /&gt;
|-&lt;br /&gt;
| XLineFormat || xxxx || Jiao.Jianhua || calc complete, no full text ||&lt;br /&gt;
|-&lt;br /&gt;
| XTextFrame || xxxx || Jiao.Jianhua || calc complete, no full text ||&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Missing attributes/methods to port ===&lt;br /&gt;
[[Application Object]]&lt;br /&gt;
[[Range Object]]&lt;/div&gt;</summary>
		<author><name>Npower</name></author>
	</entry>
	<entry>
		<id>https://wiki.openoffice.org/w/index.php?title=VBA&amp;diff=31198</id>
		<title>VBA</title>
		<link rel="alternate" type="text/html" href="https://wiki.openoffice.org/w/index.php?title=VBA&amp;diff=31198"/>
		<updated>2007-05-02T09:03:48Z</updated>

		<summary type="html">&lt;p&gt;Npower: /* Latest news */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
[[VBA zh|中]]&lt;br /&gt;
&lt;br /&gt;
[http://vba.openoffice.org VBA interoperability] project is a joint Novell &amp;amp; Sun incubator project whose aim is to deliver a way to run Excel and Word macros natively in imported documents.&lt;br /&gt;
* Noel Power ( co-lead )&lt;br /&gt;
* Andreas Breagas ( co-lead )&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Visual Basic for Applications&amp;#039;&amp;#039;&amp;#039; (&amp;#039;&amp;#039;&amp;#039;VBA&amp;#039;&amp;#039;&amp;#039;) is an implementation of Microsoft&amp;#039;s  [[wikipedia:Visual Basic|Visual Basic]] which is built into all Microsoft Office applications. &lt;br /&gt;
 &lt;br /&gt;
== Latest news ==&lt;br /&gt;
* cws [http://eis.services.openoffice.org/EIS2/cws.ShowCWS?Path=SRC680%2Fnpower6 npower6] has been integrated into m211&lt;br /&gt;
* Update Wiki Page with latest info&lt;br /&gt;
* [http://blogs.sun.com/GullFOSS/entry/sun_and_novell_work_together Novell and Sun to work together] on the VBA incubator project&lt;br /&gt;
* I am delighted that Andreas Bregas now joins me to co-lead the vba incubator project&lt;br /&gt;
&lt;br /&gt;
== Terminology ==&lt;br /&gt;
&lt;br /&gt;
* [[helperapi]] - The compatibility API generously donated by Sun that was part of their migration toolkit &lt;br /&gt;
* [[oovbaapi]] - the ooo-build vba interoperability solution originally implemented by Novell + object implementations from the helperapi.  Note: [[Ooo-build]] contains the latest VBA model and patches which allows you to run macros from your Microsoft Office documents. This model is under heavy development by Novell and others and the changes are continuously ported to openoffice. It is expected that many macros won&amp;#039;t run for now.&lt;br /&gt;
&lt;br /&gt;
== Dashboard ==&lt;br /&gt;
&lt;br /&gt;
* cws [http://eis.services.openoffice.org/EIS2/cws.ShowCWS?Path=SRC680%2Fnpower7 npower7] approaching &amp;#039;Ready for QA&amp;#039;&lt;br /&gt;
* cws [http://eis.services.openoffice.org/EIS2/cws.ShowCWS?Path=SRC680%2Fnpower6 npower6] integrated&lt;br /&gt;
* cws npower8 ( planned ) ( will contain )&lt;br /&gt;
    * some helperapi object porting &lt;br /&gt;
    * changes to include new multi-inheritance style idl and new style service definitions&lt;br /&gt;
    * removal of idl for compatibilty constants[1]&lt;br /&gt;
&lt;br /&gt;
[1] these will be generated using the mechanism from the helperapi ( basically the idl is generated from metadata files, the idl files are not preserved ( or needed ) but the types database generated from the idl files&lt;br /&gt;
&lt;br /&gt;
Task queue and status ( in order of priority )&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;vertical-align:top; text-align:left; background-color:#efefef;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background-color:#d6d6d6;font-weight:bold;&amp;quot; &lt;br /&gt;
| Feature || Description|| Issue # || Planned cws || State || Milestone integrated || &lt;br /&gt;
|-&lt;br /&gt;
| vba constants || adjust basic runtime to be &amp;#039;conditionally&amp;#039; aware of the vba constants defined in oovbaapi module || 68897 || npower7 || started  || n/a ||&lt;br /&gt;
|-&lt;br /&gt;
| support dim of vba object || adjust basic runtime to be &amp;#039;conditionally&amp;#039; allow a vba compatibilty api object to be used like &amp;lt;tt&amp;gt;Dim r1 as Range&amp;lt;/tt&amp;gt; || 68897 || npower7 || started || n/a ||&lt;br /&gt;
|-&lt;br /&gt;
| compatible erase array || in vba compatibility mode erase does not behave as expected || 70380 || npower7 || started  || n/a ||&lt;br /&gt;
|-&lt;br /&gt;
| null variant behaviour || in vba compatibility mode operations on null variant objects behave differently || 71827 || npower7 || started  || n/a ||&lt;br /&gt;
|-&lt;br /&gt;
| &amp;#039;Like&amp;#039;  || new &amp;#039;Like&amp;#039; operator for basic || 73830 || npower7 || started  || n/a ||&lt;br /&gt;
|-&lt;br /&gt;
| Module scope variable  || in vba module scope variables lifetime is tied to the document containing the macro ||  76819 || npower7 || started  || n/a ||&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
| support simple range short cut references || in vba the evaluate function is used for resolving many things, one of theses is short cut range references  e.g. &amp;#039;[a1:b2]&amp;#039; || 68898 || npower7 || started  || n/a ||&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
| fix accent handling || in vba mode accents in modules or macros are not handled || 76818 || npower7 || started  || n/a ||&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
| fix object comparison || in vba mode there is a problem comparing objects with default paramaters ( when the default is not specified ) ||  76820 || npower7 || started  || n/a ||&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
| class module import || when class modules are imported the correct &amp;#039;option&amp;#039; should be set ||  76822 || npower7 || started  || n/a ||&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
| array of array indexing  || in vba array of array indexing is very common, e.g. &amp;lt;tt&amp;gt;myArray(1)(2)&amp;lt;/tt&amp;gt;|| n/a || n/a || n/a  || n/a ||&lt;br /&gt;
|-&lt;br /&gt;
| toolbox control event support  || these controls support a loose binding where the presence of a macro event handler of the form &amp;lt;tt&amp;gt;controlname_xxx e.g. controlname_click&amp;lt;/tt&amp;gt;  results in the appropriate macro getting called when the associated action takes place || n/a || n/a || n/a  || n/a |||&lt;br /&gt;
|--&lt;br /&gt;
| port helperapi constants  || helperapi constants are autogenerated from metadata files, they are more complete than those already present in the oovbaapi module added in npower6 || 75551 || nower8 || planned  || n/a ||&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Completed Features&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;vertical-align:top; text-align:left; background-color:#efefef;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background-color:#d6d6d6;font-weight:bold;&amp;quot; &lt;br /&gt;
| Feature || Description|| Issue # || Planned cws || State || Milestone integrated || &lt;br /&gt;
|-&lt;br /&gt;
| migrate ooo-build code || suck in the mountain of idl and implementation code from ooo-build  || 74096 || npower6 || complete || m211 ||&lt;br /&gt;
|-&lt;br /&gt;
| import vba code || conditionally import ( uncommented ) vba code and set appropriate  module options || 64570 || npower6 || complete  || m211 ||&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Broader scope tasks that need more investigation ( and splitting into smaller tasks ) (to be added)&lt;br /&gt;
&lt;br /&gt;
create list of items that may need promoting from vba compatibility to &amp;lt;tt&amp;gt;Standard&amp;lt;/tt&amp;gt; ooo-basic behaviour e.g. like issue [[http://www.openoffice.org/issues/show_bug.cgi?id=70380 70380]]&lt;br /&gt;
&lt;br /&gt;
== How to enable the VBA model ==&lt;br /&gt;
&lt;br /&gt;
The VBA model is enabled by default in the current ooo-build. It&amp;#039;s enough to [[Getting It|get]], [[Building with ooobuild|build]], [[Installing|install]], and [[Running|be able to run]] it. &lt;br /&gt;
&lt;br /&gt;
If you are using upstream OpenOffice.org and wish to play with this feature then check out and build the cws [http://eis.services.openoffice.org/EIS2/cws.ShowCWS?Path=SRC680%2Fnpower6 npower6] which contains the initial code drop for the oovbaapi &lt;br /&gt;
&lt;br /&gt;
== How to disable the VBA model ==&lt;br /&gt;
&lt;br /&gt;
Depending on how your version of OpenOffice.org delivers the VBA feature to you, there are a number of ways to disable it. &lt;br /&gt;
&lt;br /&gt;
If you have an Openoffice.org built by a linux distro ( or a windows one from Novell ) that has the vba interop feature then all you need do is navigate to the &amp;#039;Tools.Options.Load/Save.VBAProperties&amp;#039; page and uncheck the &amp;#039;Load Excelbasic code to edit&amp;#039; option.&lt;br /&gt;
&lt;br /&gt;
If you are using an own build ( incorporating ) [http://eis.services.openoffice.org/EIS2/cws.ShowCWS?Path=SRC680%2Fnpower6 cws-npower6] the above method will always work. But if you built the vba interop feature as an office extension then you can of course disable or delete the vbaapi.oxt extension using the Extension Manager.&lt;br /&gt;
&lt;br /&gt;
== How can I help you? ==&lt;br /&gt;
&lt;br /&gt;
We need help in a couple of areas, [[Porting notes|porting]] objects from the [[helperapi]], understanding the VBA usage patterns, implementation and testing; see below.&lt;br /&gt;
&lt;br /&gt;
== Porting Objects from the HelperApi ==&lt;br /&gt;
&lt;br /&gt;
What is the [[helperapi]]?&lt;br /&gt;
&lt;br /&gt;
Have a look at the [[porting notes]]&lt;br /&gt;
&lt;br /&gt;
Have a look at a [[porting example]]&lt;br /&gt;
&lt;br /&gt;
[[Porting_notes#Calc_Objects_to_port|list]] of objects that need porting&lt;br /&gt;
&lt;br /&gt;
[[Porting_notes#Missing_attributes.2Fmethods_to_port|list]] of methods ( to be ported from [[helperapi]] ) to existing objects&lt;br /&gt;
&lt;br /&gt;
== Understanding the VBA usage patterns ==&lt;br /&gt;
&lt;br /&gt;
VBA model is huge and we need help in understanding the VBA usage patterns for prioritizing as we progress. It&amp;#039;s important to receive as many Microsoft Office documents with macros as possible for analysis. &amp;#039;&amp;#039;&amp;#039;We are interested in documents from developers and regular people too.&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
=== Dumping the VBA from your MS Office documents ===&lt;br /&gt;
&lt;br /&gt;
==== libgsf ====&lt;br /&gt;
&lt;br /&gt;
If you&amp;#039;re worried about the sheet data you can use &amp;#039;&amp;#039;test-msvba&amp;#039;&amp;#039; from the [http://freshmeat.net/projects/libgsf/ libgsf]. Download the latest [http://cvs.gnome.org/viewcvs/libgsf/tests/test-msvba.c test-msvba.c] file and compile it with the following command:&lt;br /&gt;
&lt;br /&gt;
 gcc `pkg-config --libs --cflags libgsf-1` -o test-msvba test-msvba.c&lt;br /&gt;
&lt;br /&gt;
Note: you need to have libgsf-devel package installed.&lt;br /&gt;
&lt;br /&gt;
Now, you can dump the VBA from your documents with the following command:&lt;br /&gt;
&lt;br /&gt;
 find -name &amp;#039;*.xls&amp;#039; -exec sh -c &amp;#039;test-msvba {} &amp;gt;&amp;gt; ~/excel-vba-stream-for-noel.bas&amp;#039; \;&lt;br /&gt;
&lt;br /&gt;
==== pole ====&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;p&amp;gt;Or you can use [http://pole.berlios.de/ POLE] with GUI. POLE is a portable C++ library to access structured storage. It is designed to be compatible with Microsoft structured storage, also sometimes known as OLE Compound Document.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Exporting modules from the Microsoft Excel ===&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;p&amp;gt;Open your document and edit associated macros. You can see list of modules on the left side of your screen. Use the right mouse button and select &amp;#039;&amp;#039;Export&amp;#039;&amp;#039; from the context menu. The whole module will be saved as one huge &amp;#039;&amp;#039;*.bas&amp;#039;&amp;#039;.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Where to send ===&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;p&amp;gt;If you are going to send pure VBA streams, send them directly to [Noel dot Power at Novell dot com].&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Implementation ==&lt;br /&gt;
&lt;br /&gt;
=== The desired sequence ===&lt;br /&gt;
&lt;br /&gt;
==== Add an extension to the IDL ====&lt;br /&gt;
&lt;br /&gt;
The IDL lives in oovbaapi/org/openoffice/*, the IDL syntax can easily be gleaned from a few other IDL files. Two things are worth bearing in mind:&lt;br /&gt;
* it&amp;#039;s important that the argument names are correct, so that the &amp;lt;tt&amp;gt;MsgBox title:=&amp;quot;hello&amp;quot;&amp;lt;/tt&amp;gt; syntax works correctly.&lt;br /&gt;
* for optional arguments, or variant types you need to use the &amp;lt;tt&amp;gt;any&amp;lt;/tt&amp;gt; type&lt;br /&gt;
&lt;br /&gt;
Having edited the IDL extension you need to:&lt;br /&gt;
* run: &amp;lt;tt&amp;gt;build &amp;amp;&amp;amp; deliver&amp;lt;/tt&amp;gt; in oovbaapi (perhaps remove types.db first),&lt;br /&gt;
&lt;br /&gt;
==== Add the extension to the implementation ====&lt;br /&gt;
&lt;br /&gt;
The impl. code lives in &amp;lt;tt&amp;gt;sc/source/ui/vba/&amp;lt;/tt&amp;gt; - create the right header and source files.&lt;br /&gt;
Add the method (with the correct prototype) to the header - often it&amp;#039;s easiest to cut/paste that from the compiled C++ headers in &amp;lt;tt&amp;gt;sc/unxlngixxx/inc/org/openoffice/vba/&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Then implement the method itself in the .cxx file. Run &amp;lt;tt&amp;gt;build debug=true&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Running it ====&lt;br /&gt;
&lt;br /&gt;
You did use [linkoo] right ? - in which case - just re-run soffice.bin (killall -9 soffice.bin first to ensure there is no lurking factory process).&lt;br /&gt;
&lt;br /&gt;
Now of course - you want to add a new test to exercise it to ooo-build/test/macro/*. And of course loop back to the beginning.&lt;br /&gt;
Once you&amp;#039;ve got something you want to share - a simple &amp;lt;tt&amp;gt;cvs diff -u | tee /tmp/foo.diff&amp;lt;/tt&amp;gt; in ooo-build/scratch will yield a patch you can mail to Noel / the ooo-build mailing list to get your code folded in.&lt;br /&gt;
NB. it&amp;#039;s important you sign the [http://www.openoffice.org/licenses/jca.pdf JCA] first.&lt;br /&gt;
&lt;br /&gt;
== Testing ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;It&amp;#039;s extremely important to test the work which is already done. You can use test cases from the &amp;#039;&amp;#039;ooo-build/test/macro&amp;#039;&amp;#039; directory, you can extend them or you can write your own test cases.&amp;lt;/p&amp;gt;&lt;br /&gt;
It&amp;#039;s a good idea to write test cases directly in the Microsoft Excel?&lt;br /&gt;
&lt;br /&gt;
== Accessing the VBA API from other languages ==&lt;br /&gt;
&lt;br /&gt;
The VBA API is implemented by an UNO service, the service is accessible via a singleton. As such it is possible to use the API from any language that has an UNO binding. The main entry points to the API are certain global variables { Application, ActiveWorkbook and ActiveSheet } or methods { WorkSheets, WorkBooks } exported by the service. Using these globals as a starting point the rest of the api can be accessed.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;NOTE:&amp;#039;&amp;#039;&amp;#039;  Beaware the idl is not stable, ( nor won&amp;#039;t be for the forseeable future be &amp;#039;published&amp;#039; ) it WILL change, so if you are using a language that has a binary dependency on the interface ( like c++ &amp;amp; java ) then consider yourselves warned. &lt;br /&gt;
&lt;br /&gt;
=== Python ===&lt;br /&gt;
&lt;br /&gt;
 vba = uno.getComponentContext().getByName(&amp;quot;/singletons/org.openoffice.vba.theGlobals&amp;quot;)&lt;br /&gt;
 sheet = vba.ActiveSheet&lt;br /&gt;
 book = vba.ActiveWorkbook&lt;br /&gt;
&lt;br /&gt;
=== Java ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
import org.openoffice.vba.*;&lt;br /&gt;
&amp;quot;&lt;br /&gt;
// getComponentCtxFromSomewhere is a fictional&lt;br /&gt;
// routine representing acquisition of the component context&lt;br /&gt;
// from e.g. remote ServiceManage if the code is a remote client&lt;br /&gt;
// or from the XScriptContext if this were a java ScriptingFramework script &lt;br /&gt;
&lt;br /&gt;
XComponentContext ctx = getComponentCtxFromSomewhere(); &lt;br /&gt;
Object oGlobs = ctx.getValueByName(&lt;br /&gt;
                &amp;quot;/singletons/org.openoffice.vba.theGlobals&amp;quot;);&lt;br /&gt;
XGlobals xGlobs = AnyConverter.toObject(&lt;br /&gt;
                new Type(XGlobals.class), oGlobs);&lt;br /&gt;
XWorkBook xWBook =  xGlobs.getActiveWorkbook();&lt;br /&gt;
XWorkSheet xSheet = xGlobs.getActiveWorkSheet();&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== OO Basic ===&lt;br /&gt;
&lt;br /&gt;
Basic allows access to the global variables automatically just like VBA does, there is no need to create any services or access any singletons to use the API&lt;br /&gt;
&lt;br /&gt;
 msgbox &amp;quot;Name of the current document is &amp;quot; &amp;amp;amp; ActiveWorkbook.Path&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Development]]&lt;/div&gt;</summary>
		<author><name>Npower</name></author>
	</entry>
	<entry>
		<id>https://wiki.openoffice.org/w/index.php?title=VBA&amp;diff=31197</id>
		<title>VBA</title>
		<link rel="alternate" type="text/html" href="https://wiki.openoffice.org/w/index.php?title=VBA&amp;diff=31197"/>
		<updated>2007-05-02T08:59:53Z</updated>

		<summary type="html">&lt;p&gt;Npower: /* Dashboard */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
[[VBA zh|中]]&lt;br /&gt;
&lt;br /&gt;
[http://vba.openoffice.org VBA interoperability] project is a joint Novell &amp;amp; Sun incubator project whose aim is to deliver a way to run Excel and Word macros natively in imported documents.&lt;br /&gt;
* Noel Power ( co-lead )&lt;br /&gt;
* Andreas Breagas ( co-lead )&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Visual Basic for Applications&amp;#039;&amp;#039;&amp;#039; (&amp;#039;&amp;#039;&amp;#039;VBA&amp;#039;&amp;#039;&amp;#039;) is an implementation of Microsoft&amp;#039;s  [[wikipedia:Visual Basic|Visual Basic]] which is built into all Microsoft Office applications. &lt;br /&gt;
 &lt;br /&gt;
== Latest news ==&lt;br /&gt;
&lt;br /&gt;
* Update Wiki Page with latest info&lt;br /&gt;
* [http://blogs.sun.com/GullFOSS/entry/sun_and_novell_work_together Novell and Sun to work together] on the VBA incubator project&lt;br /&gt;
* I am delighted that Andreas Bregas now joins me to co-lead the vba incubator project&lt;br /&gt;
* cws [http://eis.services.openoffice.org/EIS2/cws.ShowCWS?Path=SRC680%2Fnpower6 npower6] will contain the initial code drop&lt;br /&gt;
&lt;br /&gt;
== Terminology ==&lt;br /&gt;
&lt;br /&gt;
* [[helperapi]] - The compatibility API generously donated by Sun that was part of their migration toolkit &lt;br /&gt;
* [[oovbaapi]] - the ooo-build vba interoperability solution originally implemented by Novell + object implementations from the helperapi.  Note: [[Ooo-build]] contains the latest VBA model and patches which allows you to run macros from your Microsoft Office documents. This model is under heavy development by Novell and others and the changes are continuously ported to openoffice. It is expected that many macros won&amp;#039;t run for now.&lt;br /&gt;
&lt;br /&gt;
== Dashboard ==&lt;br /&gt;
&lt;br /&gt;
* cws [http://eis.services.openoffice.org/EIS2/cws.ShowCWS?Path=SRC680%2Fnpower7 npower7] approaching &amp;#039;Ready for QA&amp;#039;&lt;br /&gt;
* cws [http://eis.services.openoffice.org/EIS2/cws.ShowCWS?Path=SRC680%2Fnpower6 npower6] integrated&lt;br /&gt;
* cws npower8 ( planned ) ( will contain )&lt;br /&gt;
    * some helperapi object porting &lt;br /&gt;
    * changes to include new multi-inheritance style idl and new style service definitions&lt;br /&gt;
    * removal of idl for compatibilty constants[1]&lt;br /&gt;
&lt;br /&gt;
[1] these will be generated using the mechanism from the helperapi ( basically the idl is generated from metadata files, the idl files are not preserved ( or needed ) but the types database generated from the idl files&lt;br /&gt;
&lt;br /&gt;
Task queue and status ( in order of priority )&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;vertical-align:top; text-align:left; background-color:#efefef;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background-color:#d6d6d6;font-weight:bold;&amp;quot; &lt;br /&gt;
| Feature || Description|| Issue # || Planned cws || State || Milestone integrated || &lt;br /&gt;
|-&lt;br /&gt;
| vba constants || adjust basic runtime to be &amp;#039;conditionally&amp;#039; aware of the vba constants defined in oovbaapi module || 68897 || npower7 || started  || n/a ||&lt;br /&gt;
|-&lt;br /&gt;
| support dim of vba object || adjust basic runtime to be &amp;#039;conditionally&amp;#039; allow a vba compatibilty api object to be used like &amp;lt;tt&amp;gt;Dim r1 as Range&amp;lt;/tt&amp;gt; || 68897 || npower7 || started || n/a ||&lt;br /&gt;
|-&lt;br /&gt;
| compatible erase array || in vba compatibility mode erase does not behave as expected || 70380 || npower7 || started  || n/a ||&lt;br /&gt;
|-&lt;br /&gt;
| null variant behaviour || in vba compatibility mode operations on null variant objects behave differently || 71827 || npower7 || started  || n/a ||&lt;br /&gt;
|-&lt;br /&gt;
| &amp;#039;Like&amp;#039;  || new &amp;#039;Like&amp;#039; operator for basic || 73830 || npower7 || started  || n/a ||&lt;br /&gt;
|-&lt;br /&gt;
| Module scope variable  || in vba module scope variables lifetime is tied to the document containing the macro ||  76819 || npower7 || started  || n/a ||&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
| support simple range short cut references || in vba the evaluate function is used for resolving many things, one of theses is short cut range references  e.g. &amp;#039;[a1:b2]&amp;#039; || 68898 || npower7 || started  || n/a ||&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
| fix accent handling || in vba mode accents in modules or macros are not handled || 76818 || npower7 || started  || n/a ||&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
| fix object comparison || in vba mode there is a problem comparing objects with default paramaters ( when the default is not specified ) ||  76820 || npower7 || started  || n/a ||&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
| class module import || when class modules are imported the correct &amp;#039;option&amp;#039; should be set ||  76822 || npower7 || started  || n/a ||&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
| array of array indexing  || in vba array of array indexing is very common, e.g. &amp;lt;tt&amp;gt;myArray(1)(2)&amp;lt;/tt&amp;gt;|| n/a || n/a || n/a  || n/a ||&lt;br /&gt;
|-&lt;br /&gt;
| toolbox control event support  || these controls support a loose binding where the presence of a macro event handler of the form &amp;lt;tt&amp;gt;controlname_xxx e.g. controlname_click&amp;lt;/tt&amp;gt;  results in the appropriate macro getting called when the associated action takes place || n/a || n/a || n/a  || n/a |||&lt;br /&gt;
|--&lt;br /&gt;
| port helperapi constants  || helperapi constants are autogenerated from metadata files, they are more complete than those already present in the oovbaapi module added in npower6 || 75551 || nower8 || planned  || n/a ||&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Completed Features&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;vertical-align:top; text-align:left; background-color:#efefef;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background-color:#d6d6d6;font-weight:bold;&amp;quot; &lt;br /&gt;
| Feature || Description|| Issue # || Planned cws || State || Milestone integrated || &lt;br /&gt;
|-&lt;br /&gt;
| migrate ooo-build code || suck in the mountain of idl and implementation code from ooo-build  || 74096 || npower6 || complete || m211 ||&lt;br /&gt;
|-&lt;br /&gt;
| import vba code || conditionally import ( uncommented ) vba code and set appropriate  module options || 64570 || npower6 || complete  || m211 ||&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Broader scope tasks that need more investigation ( and splitting into smaller tasks ) (to be added)&lt;br /&gt;
&lt;br /&gt;
create list of items that may need promoting from vba compatibility to &amp;lt;tt&amp;gt;Standard&amp;lt;/tt&amp;gt; ooo-basic behaviour e.g. like issue [[http://www.openoffice.org/issues/show_bug.cgi?id=70380 70380]]&lt;br /&gt;
&lt;br /&gt;
== How to enable the VBA model ==&lt;br /&gt;
&lt;br /&gt;
The VBA model is enabled by default in the current ooo-build. It&amp;#039;s enough to [[Getting It|get]], [[Building with ooobuild|build]], [[Installing|install]], and [[Running|be able to run]] it. &lt;br /&gt;
&lt;br /&gt;
If you are using upstream OpenOffice.org and wish to play with this feature then check out and build the cws [http://eis.services.openoffice.org/EIS2/cws.ShowCWS?Path=SRC680%2Fnpower6 npower6] which contains the initial code drop for the oovbaapi &lt;br /&gt;
&lt;br /&gt;
== How to disable the VBA model ==&lt;br /&gt;
&lt;br /&gt;
Depending on how your version of OpenOffice.org delivers the VBA feature to you, there are a number of ways to disable it. &lt;br /&gt;
&lt;br /&gt;
If you have an Openoffice.org built by a linux distro ( or a windows one from Novell ) that has the vba interop feature then all you need do is navigate to the &amp;#039;Tools.Options.Load/Save.VBAProperties&amp;#039; page and uncheck the &amp;#039;Load Excelbasic code to edit&amp;#039; option.&lt;br /&gt;
&lt;br /&gt;
If you are using an own build ( incorporating ) [http://eis.services.openoffice.org/EIS2/cws.ShowCWS?Path=SRC680%2Fnpower6 cws-npower6] the above method will always work. But if you built the vba interop feature as an office extension then you can of course disable or delete the vbaapi.oxt extension using the Extension Manager.&lt;br /&gt;
&lt;br /&gt;
== How can I help you? ==&lt;br /&gt;
&lt;br /&gt;
We need help in a couple of areas, [[Porting notes|porting]] objects from the [[helperapi]], understanding the VBA usage patterns, implementation and testing; see below.&lt;br /&gt;
&lt;br /&gt;
== Porting Objects from the HelperApi ==&lt;br /&gt;
&lt;br /&gt;
What is the [[helperapi]]?&lt;br /&gt;
&lt;br /&gt;
Have a look at the [[porting notes]]&lt;br /&gt;
&lt;br /&gt;
Have a look at a [[porting example]]&lt;br /&gt;
&lt;br /&gt;
[[Porting_notes#Calc_Objects_to_port|list]] of objects that need porting&lt;br /&gt;
&lt;br /&gt;
[[Porting_notes#Missing_attributes.2Fmethods_to_port|list]] of methods ( to be ported from [[helperapi]] ) to existing objects&lt;br /&gt;
&lt;br /&gt;
== Understanding the VBA usage patterns ==&lt;br /&gt;
&lt;br /&gt;
VBA model is huge and we need help in understanding the VBA usage patterns for prioritizing as we progress. It&amp;#039;s important to receive as many Microsoft Office documents with macros as possible for analysis. &amp;#039;&amp;#039;&amp;#039;We are interested in documents from developers and regular people too.&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
=== Dumping the VBA from your MS Office documents ===&lt;br /&gt;
&lt;br /&gt;
==== libgsf ====&lt;br /&gt;
&lt;br /&gt;
If you&amp;#039;re worried about the sheet data you can use &amp;#039;&amp;#039;test-msvba&amp;#039;&amp;#039; from the [http://freshmeat.net/projects/libgsf/ libgsf]. Download the latest [http://cvs.gnome.org/viewcvs/libgsf/tests/test-msvba.c test-msvba.c] file and compile it with the following command:&lt;br /&gt;
&lt;br /&gt;
 gcc `pkg-config --libs --cflags libgsf-1` -o test-msvba test-msvba.c&lt;br /&gt;
&lt;br /&gt;
Note: you need to have libgsf-devel package installed.&lt;br /&gt;
&lt;br /&gt;
Now, you can dump the VBA from your documents with the following command:&lt;br /&gt;
&lt;br /&gt;
 find -name &amp;#039;*.xls&amp;#039; -exec sh -c &amp;#039;test-msvba {} &amp;gt;&amp;gt; ~/excel-vba-stream-for-noel.bas&amp;#039; \;&lt;br /&gt;
&lt;br /&gt;
==== pole ====&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;p&amp;gt;Or you can use [http://pole.berlios.de/ POLE] with GUI. POLE is a portable C++ library to access structured storage. It is designed to be compatible with Microsoft structured storage, also sometimes known as OLE Compound Document.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Exporting modules from the Microsoft Excel ===&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;p&amp;gt;Open your document and edit associated macros. You can see list of modules on the left side of your screen. Use the right mouse button and select &amp;#039;&amp;#039;Export&amp;#039;&amp;#039; from the context menu. The whole module will be saved as one huge &amp;#039;&amp;#039;*.bas&amp;#039;&amp;#039;.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Where to send ===&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;p&amp;gt;If you are going to send pure VBA streams, send them directly to [Noel dot Power at Novell dot com].&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Implementation ==&lt;br /&gt;
&lt;br /&gt;
=== The desired sequence ===&lt;br /&gt;
&lt;br /&gt;
==== Add an extension to the IDL ====&lt;br /&gt;
&lt;br /&gt;
The IDL lives in oovbaapi/org/openoffice/*, the IDL syntax can easily be gleaned from a few other IDL files. Two things are worth bearing in mind:&lt;br /&gt;
* it&amp;#039;s important that the argument names are correct, so that the &amp;lt;tt&amp;gt;MsgBox title:=&amp;quot;hello&amp;quot;&amp;lt;/tt&amp;gt; syntax works correctly.&lt;br /&gt;
* for optional arguments, or variant types you need to use the &amp;lt;tt&amp;gt;any&amp;lt;/tt&amp;gt; type&lt;br /&gt;
&lt;br /&gt;
Having edited the IDL extension you need to:&lt;br /&gt;
* run: &amp;lt;tt&amp;gt;build &amp;amp;&amp;amp; deliver&amp;lt;/tt&amp;gt; in oovbaapi (perhaps remove types.db first),&lt;br /&gt;
&lt;br /&gt;
==== Add the extension to the implementation ====&lt;br /&gt;
&lt;br /&gt;
The impl. code lives in &amp;lt;tt&amp;gt;sc/source/ui/vba/&amp;lt;/tt&amp;gt; - create the right header and source files.&lt;br /&gt;
Add the method (with the correct prototype) to the header - often it&amp;#039;s easiest to cut/paste that from the compiled C++ headers in &amp;lt;tt&amp;gt;sc/unxlngixxx/inc/org/openoffice/vba/&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Then implement the method itself in the .cxx file. Run &amp;lt;tt&amp;gt;build debug=true&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Running it ====&lt;br /&gt;
&lt;br /&gt;
You did use [linkoo] right ? - in which case - just re-run soffice.bin (killall -9 soffice.bin first to ensure there is no lurking factory process).&lt;br /&gt;
&lt;br /&gt;
Now of course - you want to add a new test to exercise it to ooo-build/test/macro/*. And of course loop back to the beginning.&lt;br /&gt;
Once you&amp;#039;ve got something you want to share - a simple &amp;lt;tt&amp;gt;cvs diff -u | tee /tmp/foo.diff&amp;lt;/tt&amp;gt; in ooo-build/scratch will yield a patch you can mail to Noel / the ooo-build mailing list to get your code folded in.&lt;br /&gt;
NB. it&amp;#039;s important you sign the [http://www.openoffice.org/licenses/jca.pdf JCA] first.&lt;br /&gt;
&lt;br /&gt;
== Testing ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;It&amp;#039;s extremely important to test the work which is already done. You can use test cases from the &amp;#039;&amp;#039;ooo-build/test/macro&amp;#039;&amp;#039; directory, you can extend them or you can write your own test cases.&amp;lt;/p&amp;gt;&lt;br /&gt;
It&amp;#039;s a good idea to write test cases directly in the Microsoft Excel?&lt;br /&gt;
&lt;br /&gt;
== Accessing the VBA API from other languages ==&lt;br /&gt;
&lt;br /&gt;
The VBA API is implemented by an UNO service, the service is accessible via a singleton. As such it is possible to use the API from any language that has an UNO binding. The main entry points to the API are certain global variables { Application, ActiveWorkbook and ActiveSheet } or methods { WorkSheets, WorkBooks } exported by the service. Using these globals as a starting point the rest of the api can be accessed.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;NOTE:&amp;#039;&amp;#039;&amp;#039;  Beaware the idl is not stable, ( nor won&amp;#039;t be for the forseeable future be &amp;#039;published&amp;#039; ) it WILL change, so if you are using a language that has a binary dependency on the interface ( like c++ &amp;amp; java ) then consider yourselves warned. &lt;br /&gt;
&lt;br /&gt;
=== Python ===&lt;br /&gt;
&lt;br /&gt;
 vba = uno.getComponentContext().getByName(&amp;quot;/singletons/org.openoffice.vba.theGlobals&amp;quot;)&lt;br /&gt;
 sheet = vba.ActiveSheet&lt;br /&gt;
 book = vba.ActiveWorkbook&lt;br /&gt;
&lt;br /&gt;
=== Java ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
import org.openoffice.vba.*;&lt;br /&gt;
&amp;quot;&lt;br /&gt;
// getComponentCtxFromSomewhere is a fictional&lt;br /&gt;
// routine representing acquisition of the component context&lt;br /&gt;
// from e.g. remote ServiceManage if the code is a remote client&lt;br /&gt;
// or from the XScriptContext if this were a java ScriptingFramework script &lt;br /&gt;
&lt;br /&gt;
XComponentContext ctx = getComponentCtxFromSomewhere(); &lt;br /&gt;
Object oGlobs = ctx.getValueByName(&lt;br /&gt;
                &amp;quot;/singletons/org.openoffice.vba.theGlobals&amp;quot;);&lt;br /&gt;
XGlobals xGlobs = AnyConverter.toObject(&lt;br /&gt;
                new Type(XGlobals.class), oGlobs);&lt;br /&gt;
XWorkBook xWBook =  xGlobs.getActiveWorkbook();&lt;br /&gt;
XWorkSheet xSheet = xGlobs.getActiveWorkSheet();&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== OO Basic ===&lt;br /&gt;
&lt;br /&gt;
Basic allows access to the global variables automatically just like VBA does, there is no need to create any services or access any singletons to use the API&lt;br /&gt;
&lt;br /&gt;
 msgbox &amp;quot;Name of the current document is &amp;quot; &amp;amp;amp; ActiveWorkbook.Path&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Development]]&lt;/div&gt;</summary>
		<author><name>Npower</name></author>
	</entry>
	<entry>
		<id>https://wiki.openoffice.org/w/index.php?title=VBA&amp;diff=31196</id>
		<title>VBA</title>
		<link rel="alternate" type="text/html" href="https://wiki.openoffice.org/w/index.php?title=VBA&amp;diff=31196"/>
		<updated>2007-05-02T08:57:52Z</updated>

		<summary type="html">&lt;p&gt;Npower: /* Dashboard */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
[[VBA zh|中]]&lt;br /&gt;
&lt;br /&gt;
[http://vba.openoffice.org VBA interoperability] project is a joint Novell &amp;amp; Sun incubator project whose aim is to deliver a way to run Excel and Word macros natively in imported documents.&lt;br /&gt;
* Noel Power ( co-lead )&lt;br /&gt;
* Andreas Breagas ( co-lead )&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Visual Basic for Applications&amp;#039;&amp;#039;&amp;#039; (&amp;#039;&amp;#039;&amp;#039;VBA&amp;#039;&amp;#039;&amp;#039;) is an implementation of Microsoft&amp;#039;s  [[wikipedia:Visual Basic|Visual Basic]] which is built into all Microsoft Office applications. &lt;br /&gt;
 &lt;br /&gt;
== Latest news ==&lt;br /&gt;
&lt;br /&gt;
* Update Wiki Page with latest info&lt;br /&gt;
* [http://blogs.sun.com/GullFOSS/entry/sun_and_novell_work_together Novell and Sun to work together] on the VBA incubator project&lt;br /&gt;
* I am delighted that Andreas Bregas now joins me to co-lead the vba incubator project&lt;br /&gt;
* cws [http://eis.services.openoffice.org/EIS2/cws.ShowCWS?Path=SRC680%2Fnpower6 npower6] will contain the initial code drop&lt;br /&gt;
&lt;br /&gt;
== Terminology ==&lt;br /&gt;
&lt;br /&gt;
* [[helperapi]] - The compatibility API generously donated by Sun that was part of their migration toolkit &lt;br /&gt;
* [[oovbaapi]] - the ooo-build vba interoperability solution originally implemented by Novell + object implementations from the helperapi.  Note: [[Ooo-build]] contains the latest VBA model and patches which allows you to run macros from your Microsoft Office documents. This model is under heavy development by Novell and others and the changes are continuously ported to openoffice. It is expected that many macros won&amp;#039;t run for now.&lt;br /&gt;
&lt;br /&gt;
== Dashboard ==&lt;br /&gt;
&lt;br /&gt;
* cws [http://eis.services.openoffice.org/EIS2/cws.ShowCWS?Path=SRC680%2Fnpower7 npower7] approaching &amp;#039;Ready for QA&amp;#039;&lt;br /&gt;
* cws [http://eis.services.openoffice.org/EIS2/cws.ShowCWS?Path=SRC680%2Fnpower6 npower6] integrated&lt;br /&gt;
* cws npower8 ( planned ) ( will contain )&lt;br /&gt;
    * some helperapi object porting &lt;br /&gt;
    * changes to include new multi-inheritance style idl and new style service definitions&lt;br /&gt;
    * removal of idl for compatibilty constants, these will be generated using the mechanism from the helperapi ( basically the idl is generated from metadata files, the idl files are not preserved ( or needed ) but the types database generated from the idl files is )&lt;br /&gt;
Task queue and status ( in order of priority )&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;vertical-align:top; text-align:left; background-color:#efefef;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background-color:#d6d6d6;font-weight:bold;&amp;quot; &lt;br /&gt;
| Feature || Description|| Issue # || Planned cws || State || Milestone integrated || &lt;br /&gt;
|-&lt;br /&gt;
| vba constants || adjust basic runtime to be &amp;#039;conditionally&amp;#039; aware of the vba constants defined in oovbaapi module || 68897 || npower7 || started  || n/a ||&lt;br /&gt;
|-&lt;br /&gt;
| support dim of vba object || adjust basic runtime to be &amp;#039;conditionally&amp;#039; allow a vba compatibilty api object to be used like &amp;lt;tt&amp;gt;Dim r1 as Range&amp;lt;/tt&amp;gt; || 68897 || npower7 || started || n/a ||&lt;br /&gt;
|-&lt;br /&gt;
| compatible erase array || in vba compatibility mode erase does not behave as expected || 70380 || npower7 || started  || n/a ||&lt;br /&gt;
|-&lt;br /&gt;
| null variant behaviour || in vba compatibility mode operations on null variant objects behave differently || 71827 || npower7 || started  || n/a ||&lt;br /&gt;
|-&lt;br /&gt;
| &amp;#039;Like&amp;#039;  || new &amp;#039;Like&amp;#039; operator for basic || 73830 || npower7 || started  || n/a ||&lt;br /&gt;
|-&lt;br /&gt;
| Module scope variable  || in vba module scope variables lifetime is tied to the document containing the macro ||  76819 || npower7 || started  || n/a ||&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
| support simple range short cut references || in vba the evaluate function is used for resolving many things, one of theses is short cut range references  e.g. &amp;#039;[a1:b2]&amp;#039; || 68898 || npower7 || started  || n/a ||&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
| fix accent handling || in vba mode accents in modules or macros are not handled || 76818 || npower7 || started  || n/a ||&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
| fix object comparison || in vba mode there is a problem comparing objects with default paramaters ( when the default is not specified ) ||  76820 || npower7 || started  || n/a ||&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
| class module import || when class modules are imported the correct &amp;#039;option&amp;#039; should be set ||  76822 || npower7 || started  || n/a ||&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
| array of array indexing  || in vba array of array indexing is very common, e.g. &amp;lt;tt&amp;gt;myArray(1)(2)&amp;lt;/tt&amp;gt;|| n/a || n/a || n/a  || n/a ||&lt;br /&gt;
|-&lt;br /&gt;
| toolbox control event support  || these controls support a loose binding where the presence of a macro event handler of the form &amp;lt;tt&amp;gt;controlname_xxx e.g. controlname_click&amp;lt;/tt&amp;gt;  results in the appropriate macro getting called when the associated action takes place || n/a || n/a || n/a  || n/a |||&lt;br /&gt;
|--&lt;br /&gt;
| port helperapi constants  || helperapi constants are autogenerated from metadata files, they are more complete than those already present in the oovbaapi module added in npower6 || 75551 || nower8 || planned  || n/a ||&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Completed Features&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;vertical-align:top; text-align:left; background-color:#efefef;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background-color:#d6d6d6;font-weight:bold;&amp;quot; &lt;br /&gt;
| Feature || Description|| Issue # || Planned cws || State || Milestone integrated || &lt;br /&gt;
|-&lt;br /&gt;
| migrate ooo-build code || suck in the mountain of idl and implementation code from ooo-build  || 74096 || npower6 || complete || m211 ||&lt;br /&gt;
|-&lt;br /&gt;
| import vba code || conditionally import ( uncommented ) vba code and set appropriate  module options || 64570 || npower6 || complete  || m211 ||&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Broader scope tasks that need more investigation ( and splitting into smaller tasks ) (to be added)&lt;br /&gt;
&lt;br /&gt;
create list of items that may need promoting from vba compatibility to &amp;lt;tt&amp;gt;Standard&amp;lt;/tt&amp;gt; ooo-basic behaviour e.g. like issue [[http://www.openoffice.org/issues/show_bug.cgi?id=70380 70380]]&lt;br /&gt;
&lt;br /&gt;
== How to enable the VBA model ==&lt;br /&gt;
&lt;br /&gt;
The VBA model is enabled by default in the current ooo-build. It&amp;#039;s enough to [[Getting It|get]], [[Building with ooobuild|build]], [[Installing|install]], and [[Running|be able to run]] it. &lt;br /&gt;
&lt;br /&gt;
If you are using upstream OpenOffice.org and wish to play with this feature then check out and build the cws [http://eis.services.openoffice.org/EIS2/cws.ShowCWS?Path=SRC680%2Fnpower6 npower6] which contains the initial code drop for the oovbaapi &lt;br /&gt;
&lt;br /&gt;
== How to disable the VBA model ==&lt;br /&gt;
&lt;br /&gt;
Depending on how your version of OpenOffice.org delivers the VBA feature to you, there are a number of ways to disable it. &lt;br /&gt;
&lt;br /&gt;
If you have an Openoffice.org built by a linux distro ( or a windows one from Novell ) that has the vba interop feature then all you need do is navigate to the &amp;#039;Tools.Options.Load/Save.VBAProperties&amp;#039; page and uncheck the &amp;#039;Load Excelbasic code to edit&amp;#039; option.&lt;br /&gt;
&lt;br /&gt;
If you are using an own build ( incorporating ) [http://eis.services.openoffice.org/EIS2/cws.ShowCWS?Path=SRC680%2Fnpower6 cws-npower6] the above method will always work. But if you built the vba interop feature as an office extension then you can of course disable or delete the vbaapi.oxt extension using the Extension Manager.&lt;br /&gt;
&lt;br /&gt;
== How can I help you? ==&lt;br /&gt;
&lt;br /&gt;
We need help in a couple of areas, [[Porting notes|porting]] objects from the [[helperapi]], understanding the VBA usage patterns, implementation and testing; see below.&lt;br /&gt;
&lt;br /&gt;
== Porting Objects from the HelperApi ==&lt;br /&gt;
&lt;br /&gt;
What is the [[helperapi]]?&lt;br /&gt;
&lt;br /&gt;
Have a look at the [[porting notes]]&lt;br /&gt;
&lt;br /&gt;
Have a look at a [[porting example]]&lt;br /&gt;
&lt;br /&gt;
[[Porting_notes#Calc_Objects_to_port|list]] of objects that need porting&lt;br /&gt;
&lt;br /&gt;
[[Porting_notes#Missing_attributes.2Fmethods_to_port|list]] of methods ( to be ported from [[helperapi]] ) to existing objects&lt;br /&gt;
&lt;br /&gt;
== Understanding the VBA usage patterns ==&lt;br /&gt;
&lt;br /&gt;
VBA model is huge and we need help in understanding the VBA usage patterns for prioritizing as we progress. It&amp;#039;s important to receive as many Microsoft Office documents with macros as possible for analysis. &amp;#039;&amp;#039;&amp;#039;We are interested in documents from developers and regular people too.&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
=== Dumping the VBA from your MS Office documents ===&lt;br /&gt;
&lt;br /&gt;
==== libgsf ====&lt;br /&gt;
&lt;br /&gt;
If you&amp;#039;re worried about the sheet data you can use &amp;#039;&amp;#039;test-msvba&amp;#039;&amp;#039; from the [http://freshmeat.net/projects/libgsf/ libgsf]. Download the latest [http://cvs.gnome.org/viewcvs/libgsf/tests/test-msvba.c test-msvba.c] file and compile it with the following command:&lt;br /&gt;
&lt;br /&gt;
 gcc `pkg-config --libs --cflags libgsf-1` -o test-msvba test-msvba.c&lt;br /&gt;
&lt;br /&gt;
Note: you need to have libgsf-devel package installed.&lt;br /&gt;
&lt;br /&gt;
Now, you can dump the VBA from your documents with the following command:&lt;br /&gt;
&lt;br /&gt;
 find -name &amp;#039;*.xls&amp;#039; -exec sh -c &amp;#039;test-msvba {} &amp;gt;&amp;gt; ~/excel-vba-stream-for-noel.bas&amp;#039; \;&lt;br /&gt;
&lt;br /&gt;
==== pole ====&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;p&amp;gt;Or you can use [http://pole.berlios.de/ POLE] with GUI. POLE is a portable C++ library to access structured storage. It is designed to be compatible with Microsoft structured storage, also sometimes known as OLE Compound Document.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Exporting modules from the Microsoft Excel ===&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;p&amp;gt;Open your document and edit associated macros. You can see list of modules on the left side of your screen. Use the right mouse button and select &amp;#039;&amp;#039;Export&amp;#039;&amp;#039; from the context menu. The whole module will be saved as one huge &amp;#039;&amp;#039;*.bas&amp;#039;&amp;#039;.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Where to send ===&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;p&amp;gt;If you are going to send pure VBA streams, send them directly to [Noel dot Power at Novell dot com].&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Implementation ==&lt;br /&gt;
&lt;br /&gt;
=== The desired sequence ===&lt;br /&gt;
&lt;br /&gt;
==== Add an extension to the IDL ====&lt;br /&gt;
&lt;br /&gt;
The IDL lives in oovbaapi/org/openoffice/*, the IDL syntax can easily be gleaned from a few other IDL files. Two things are worth bearing in mind:&lt;br /&gt;
* it&amp;#039;s important that the argument names are correct, so that the &amp;lt;tt&amp;gt;MsgBox title:=&amp;quot;hello&amp;quot;&amp;lt;/tt&amp;gt; syntax works correctly.&lt;br /&gt;
* for optional arguments, or variant types you need to use the &amp;lt;tt&amp;gt;any&amp;lt;/tt&amp;gt; type&lt;br /&gt;
&lt;br /&gt;
Having edited the IDL extension you need to:&lt;br /&gt;
* run: &amp;lt;tt&amp;gt;build &amp;amp;&amp;amp; deliver&amp;lt;/tt&amp;gt; in oovbaapi (perhaps remove types.db first),&lt;br /&gt;
&lt;br /&gt;
==== Add the extension to the implementation ====&lt;br /&gt;
&lt;br /&gt;
The impl. code lives in &amp;lt;tt&amp;gt;sc/source/ui/vba/&amp;lt;/tt&amp;gt; - create the right header and source files.&lt;br /&gt;
Add the method (with the correct prototype) to the header - often it&amp;#039;s easiest to cut/paste that from the compiled C++ headers in &amp;lt;tt&amp;gt;sc/unxlngixxx/inc/org/openoffice/vba/&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Then implement the method itself in the .cxx file. Run &amp;lt;tt&amp;gt;build debug=true&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Running it ====&lt;br /&gt;
&lt;br /&gt;
You did use [linkoo] right ? - in which case - just re-run soffice.bin (killall -9 soffice.bin first to ensure there is no lurking factory process).&lt;br /&gt;
&lt;br /&gt;
Now of course - you want to add a new test to exercise it to ooo-build/test/macro/*. And of course loop back to the beginning.&lt;br /&gt;
Once you&amp;#039;ve got something you want to share - a simple &amp;lt;tt&amp;gt;cvs diff -u | tee /tmp/foo.diff&amp;lt;/tt&amp;gt; in ooo-build/scratch will yield a patch you can mail to Noel / the ooo-build mailing list to get your code folded in.&lt;br /&gt;
NB. it&amp;#039;s important you sign the [http://www.openoffice.org/licenses/jca.pdf JCA] first.&lt;br /&gt;
&lt;br /&gt;
== Testing ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;It&amp;#039;s extremely important to test the work which is already done. You can use test cases from the &amp;#039;&amp;#039;ooo-build/test/macro&amp;#039;&amp;#039; directory, you can extend them or you can write your own test cases.&amp;lt;/p&amp;gt;&lt;br /&gt;
It&amp;#039;s a good idea to write test cases directly in the Microsoft Excel?&lt;br /&gt;
&lt;br /&gt;
== Accessing the VBA API from other languages ==&lt;br /&gt;
&lt;br /&gt;
The VBA API is implemented by an UNO service, the service is accessible via a singleton. As such it is possible to use the API from any language that has an UNO binding. The main entry points to the API are certain global variables { Application, ActiveWorkbook and ActiveSheet } or methods { WorkSheets, WorkBooks } exported by the service. Using these globals as a starting point the rest of the api can be accessed.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;NOTE:&amp;#039;&amp;#039;&amp;#039;  Beaware the idl is not stable, ( nor won&amp;#039;t be for the forseeable future be &amp;#039;published&amp;#039; ) it WILL change, so if you are using a language that has a binary dependency on the interface ( like c++ &amp;amp; java ) then consider yourselves warned. &lt;br /&gt;
&lt;br /&gt;
=== Python ===&lt;br /&gt;
&lt;br /&gt;
 vba = uno.getComponentContext().getByName(&amp;quot;/singletons/org.openoffice.vba.theGlobals&amp;quot;)&lt;br /&gt;
 sheet = vba.ActiveSheet&lt;br /&gt;
 book = vba.ActiveWorkbook&lt;br /&gt;
&lt;br /&gt;
=== Java ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
import org.openoffice.vba.*;&lt;br /&gt;
&amp;quot;&lt;br /&gt;
// getComponentCtxFromSomewhere is a fictional&lt;br /&gt;
// routine representing acquisition of the component context&lt;br /&gt;
// from e.g. remote ServiceManage if the code is a remote client&lt;br /&gt;
// or from the XScriptContext if this were a java ScriptingFramework script &lt;br /&gt;
&lt;br /&gt;
XComponentContext ctx = getComponentCtxFromSomewhere(); &lt;br /&gt;
Object oGlobs = ctx.getValueByName(&lt;br /&gt;
                &amp;quot;/singletons/org.openoffice.vba.theGlobals&amp;quot;);&lt;br /&gt;
XGlobals xGlobs = AnyConverter.toObject(&lt;br /&gt;
                new Type(XGlobals.class), oGlobs);&lt;br /&gt;
XWorkBook xWBook =  xGlobs.getActiveWorkbook();&lt;br /&gt;
XWorkSheet xSheet = xGlobs.getActiveWorkSheet();&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== OO Basic ===&lt;br /&gt;
&lt;br /&gt;
Basic allows access to the global variables automatically just like VBA does, there is no need to create any services or access any singletons to use the API&lt;br /&gt;
&lt;br /&gt;
 msgbox &amp;quot;Name of the current document is &amp;quot; &amp;amp;amp; ActiveWorkbook.Path&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Development]]&lt;/div&gt;</summary>
		<author><name>Npower</name></author>
	</entry>
	<entry>
		<id>https://wiki.openoffice.org/w/index.php?title=Porting_notes&amp;diff=30383</id>
		<title>Porting notes</title>
		<link rel="alternate" type="text/html" href="https://wiki.openoffice.org/w/index.php?title=Porting_notes&amp;diff=30383"/>
		<updated>2007-04-18T13:37:23Z</updated>

		<summary type="html">&lt;p&gt;Npower: /* Calc Objects to port */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== Things to watch out for ===&lt;br /&gt;
* The mapping of the vba constants is different. Take for example the &amp;lt;tt&amp;gt;xlGuess&amp;lt;/tt&amp;gt; constant, in VBA it&amp;#039;s fully qualified name is &amp;lt;tt&amp;gt;Excel.XlYesNoGuess.xlGuess&amp;lt;/tt&amp;gt;, in the helperapi it&amp;#039;s &amp;lt;tt&amp;gt;com.sun.star.helper.constant.XlYesNoGuess.xlGuess&amp;lt;/tt&amp;gt; and in oovbaapi it&amp;#039;s &amp;lt;tt&amp;gt;org.openoffice.excel.XlYesNoGuess.xlGuess&amp;lt;/tt&amp;gt; &lt;br /&gt;
* All objects in the helperapi extend [http://api.openoffice.org/source/browse/*checkout*/api/helperapi/impl/com/sun/star/helper/HelperInterfaceAdaptor.java?rev=1.1 HelperInterfaceAdaptor], nothing similar (yet) exists in oovbaapi so this can be ignored in the implementation&lt;br /&gt;
* There are a quite few helper classes in the helperapi project e.g. &amp;lt;tt&amp;gt;RangeHelper.java&amp;lt;/tt&amp;gt; they shouldn&amp;#039;t be confused with the actual implementation objects we wish to port.&lt;br /&gt;
* classes and idl files of the same name can exist in multiple namespaces and this can be confusing. Because the helperapi was written with both the word and excel api(s) in mind there can be classes that share a common implementation and interfaces e.g.&lt;br /&gt;
** &amp;lt;tt&amp;gt;com/sun/star/helper/calc/XShape.idl&amp;lt;/tt&amp;gt;&lt;br /&gt;
** &amp;lt;tt&amp;gt;com/sun/star/helper/common/XShape.idl&amp;lt;/tt&amp;gt;&lt;br /&gt;
** &amp;lt;tt&amp;gt;com/sun/star/helper/writer/XShape.idl&amp;lt;/tt&amp;gt;&lt;br /&gt;
* Collections, these are handled differently see implementing a vba [[Porting notes#Collection|Collection]] in oovbaapi&lt;br /&gt;
* Every helperapi idl method defines [http://api.openoffice.org/source/browse/*checkout*/api/udkapi/com/sun/star/script/BasicErrorException.idl BasicErrorException] which allows and api method to transfer an error code and associated string paramater to basic.&lt;br /&gt;
&lt;br /&gt;
=== Hints for porting idl ===&lt;br /&gt;
==== Objects with Default Properties ====&lt;br /&gt;
This is something not handled by the helperapi but something you should be aware of when implementing a vba compatibility object. What is a default property, an example probably explains the concept better.&lt;br /&gt;
&lt;br /&gt;
 Range(&amp;quot;a1&amp;quot;) = &amp;quot;text&amp;quot;&lt;br /&gt;
&lt;br /&gt;
is a short cut for&lt;br /&gt;
&lt;br /&gt;
 Range(&amp;quot;a1&amp;quot;).Value = &amp;quot;text&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;Value&amp;lt;/tt&amp;gt; is a default property in the example above. We can provide similar behavior in basic with a compatibility api object ensuring the object implements [http://api.openoffice.org/source/browse/*checkout*/api/udkapi/com/sun/star/script/XDefaultProperty.idl XDefaultProperty.idl ]&lt;br /&gt;
&lt;br /&gt;
==== Objects with Default Method ====&lt;br /&gt;
&lt;br /&gt;
Similar to above some vba objects have a default method e.g. the &amp;lt;tt&amp;gt;Collection&amp;lt;/tt&amp;gt; object&lt;br /&gt;
&lt;br /&gt;
 set col = Sheets&lt;br /&gt;
 msgbox col(1).Name&lt;br /&gt;
&lt;br /&gt;
is a short cut for&lt;br /&gt;
&lt;br /&gt;
 set col = Sheets&lt;br /&gt;
 msgbox col.Item(1).Name&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;Item&amp;lt;/tt&amp;gt; is a default method in the example above. We can provide similar behavior in basic with a compatibility api object ensuring the object implements [http://api.openoffice.org/source/browse/*checkout*/api/udkapi/com/sun/star/script/XDefaultMethod.idl XDefaultMethod.idl ]&lt;br /&gt;
&lt;br /&gt;
==== Porting Collection objects ====&lt;br /&gt;
Generally all collection objects have a &amp;lt;tt&amp;gt;Count&amp;lt;/tt&amp;gt; and an &amp;lt;tt&amp;gt;Item&amp;lt;/tt&amp;gt; method and additionally the behaviour mentioned above. Also Collection objects can be used in a &amp;lt;tt&amp;gt;For Each&amp;lt;/tt&amp;gt; loop. To cater for that a helper implementation object &amp;lt;tt&amp;gt;ScVbaCollectionBaseImpl&amp;lt;/tt&amp;gt; provides the necessary information to the basic runtime to allow it to provide the classic vba &amp;lt;tt&amp;gt;Collection&amp;lt;/tt&amp;gt; class syntax support. It also requires to be initialised by an XIndexAccess implementation. Additionally the class inheriting from  &amp;lt;tt&amp;gt;ScVbaCollectionBaseImpl&amp;lt;/tt&amp;gt; must provide the  translation between the object iterated ( via XIndexAccess ) and the corrosponding compatibilty object returned to openoffice basic via the the &amp;lt;tt&amp;gt;createCollectionObject&amp;lt;/tt&amp;gt; method.&lt;br /&gt;
&lt;br /&gt;
A example of a ported &amp;lt;tt&amp;gt;Collection&amp;lt;/tt&amp;gt; object can be found in the [[Porting example]] section&lt;br /&gt;
&lt;br /&gt;
=== Calc Objects to port ===&lt;br /&gt;
{| style=&amp;quot;vertical-align:top; text-align:left; background-color:#efefef;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background-color:#d6d6d6;font-weight:bold;&amp;quot; &lt;br /&gt;
| Object || helperapi implementation name || Porting started by || Status || Notes&lt;br /&gt;
|-&lt;br /&gt;
| XAutoFilter.idl || [http://api.openoffice.org/source/browse/*checkout*/api/helperapi/impl/com/sun/star/helper/calc/AutoFilterImpl.java AutoFilterImpl] ||  ||   || there is a partial (untested) implementation in the porting example section, would be nice for some one to finish&lt;br /&gt;
|-&lt;br /&gt;
| XFilter.idl || [http://api.openoffice.org/source/browse/*checkout*/api/helperapi/impl/com/sun/star/helper/calc/FilterImpl.java FilterImpl.java]  ||  ||  || see above.&lt;br /&gt;
|-&lt;br /&gt;
| XFilters.idl || [http://api.openoffice.org/source/browse/*checkout*/api/helperapi/impl/com/sun/star/helper/calc/FiltersImpl.java FiltersImpl.java] ||  ||  || see above.&lt;br /&gt;
|-&lt;br /&gt;
| XAxes.idl || [http://api.openoffice.org/source/browse/*checkout*/api/helperapi/impl/com/sun/star/helper/calc/AxesImpl.java AxesImpl.java]  ||  npower || in progress ||&lt;br /&gt;
|-&lt;br /&gt;
| XAxis.idl || [http://api.openoffice.org/source/browse/*checkout*/api/helperapi/impl/com/sun/star/helper/calc/AxesImpl.java AxisImpl.java]  || npower || in progress  ||&lt;br /&gt;
|-&lt;br /&gt;
| XAxisTitle.idl || [http://api.openoffice.org/source/browse/*checkout*/api/helperapi/impl/com/sun/star/helper/calc/AxesTitleImpl.java AxisTitleImpl.java] ||  npower || complete  || not-tested&lt;br /&gt;
|-&lt;br /&gt;
| XCalc.idl || xxxx  || not required for porting see [[Application Object]] ||  || This is not a &amp;#039;real&amp;#039; object but in a collection of global method/attributes that probably should be part of the XApplication.idl interface&lt;br /&gt;
|-&lt;br /&gt;
| XChartObject.idl || [http://api.openoffice.org/source/browse/*checkout*/api/helperapi/impl/com/sun/star/helper/calc/ChartObjectImpl.java ChartObjectImpl.java] || npower || complete || not-tested&lt;br /&gt;
|-&lt;br /&gt;
| XChartObjects.idl || [http://api.openoffice.org/source/browse/*checkout*/api/helperapi/impl/com/sun/star/helper/calc/ChartObjectsImpl.java ChartObjectsImpl.java] || npower || complete || not-tested &lt;br /&gt;
|-&lt;br /&gt;
| XChart.idl || [http://api.openoffice.org/source/browse/*checkout*/api/helperapi/impl/com/sun/star/helper/calc/ChartImpl.java ChartImpl.java] || npower || in progress || &lt;br /&gt;
|-&lt;br /&gt;
| XCharts.idl ||  [http://api.openoffice.org/source/browse/*checkout*/api/helperapi/impl/com/sun/star/helper/calc/ChartsImpl.java ChartsImpl.java]  ||  npower ||  in progress ||&lt;br /&gt;
|-&lt;br /&gt;
| XChartTitle.idl || [http://api.openoffice.org/source/browse/*checkout*/api/helperapi/impl/com/sun/star/helper/calc/ChartTileImpl.java ChartTitleImpl.java]  || npower || complete || not-tested&lt;br /&gt;
|-&lt;br /&gt;
| XDataLabel.idl || [http://api.openoffice.org/source/browse/*checkout*/api/helperapi/impl/com/sun/star/helper/calc/DataLabelImp.java DataLabelImpl.java] || npower || in progress ||&lt;br /&gt;
|-&lt;br /&gt;
| XDataLabels.idl || [http://api.openoffice.org/source/browse/*checkout*/api/helperapi/impl/com/sun/star/helper/calc/DataLabelsImp.java DataLabelsImpl.java] ||  npower || in progress ||&lt;br /&gt;
|-&lt;br /&gt;
| XFormatCondition.idl || xxxx  ||  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
| XFormatConditions.idl || xxxx  ||  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
| XFormat.idl || xxxx  ||  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
| XHPageBreak.idl || xxxx  ||  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
| XHPageBreaks.idl || xxxx  ||  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
| XName.idl || xxxx  || sola ||  ||&lt;br /&gt;
|-&lt;br /&gt;
| XNames.idl || xxxx  || sola ||  ||&lt;br /&gt;
|-&lt;br /&gt;
| XPageBreak.idl || xxxx  ||  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
|[http://api.openoffice.org/source/browse/api/helperapi/com/sun/star/helper/calc/XPageSetup.idl XPageSetup.idl] || [http://api.openoffice.org/source/browse/api/helperapi/impl/com/sun/star/helper/calc/PageSetupImpl.java PageSetupImpl]  || zhang ||&lt;br /&gt;
|-&lt;br /&gt;
|[http://api.openoffice.org/source/browse/api/helperapi/com/sun/star/helper/calc/XPane.idl XPane.idl] || [http://api.openoffice.org/source/browse/api/helperapi/impl/com/sun/star/helper/calc/PaneImpl.java PaneImpl]  || Jiao.Jianhua || calc complete||&lt;br /&gt;
|-&lt;br /&gt;
| XPoint.idl || xxxx  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
| XPoints.idl || xxxx  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
| XProtection.idl || xxxx  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
| XQueryTable.idl || xxxx  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
| XQueryTables.idl || xxxx  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
| XShape.idl || xxxx  || jiao.jianhua || in progress ||&lt;br /&gt;
|-&lt;br /&gt;
| XShapes.idl || xxxx  || jiao.jianhua  || calc complete, no full text ||&lt;br /&gt;
|-&lt;br /&gt;
| XStyle.idl || xxxx  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
| XStyles.idl || xxxx  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
| XTitle.idl || xxxx  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
| XVPageBreak.idl || xxxx  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
| XVPageBreaks.idl|| xxxx  ||  ||&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Common Objects to port ===&lt;br /&gt;
{| style=&amp;quot;vertical-align:top; text-align:left; background-color:#efefef;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background-color:#d6d6d6;font-weight:bold;&amp;quot; &lt;br /&gt;
| Object || helperapi implementation name || Porting stared by? || Status ||&lt;br /&gt;
|-&lt;br /&gt;
| XAutoFilter.idl || xxxx || ||&lt;br /&gt;
|-&lt;br /&gt;
| XPictureFormat || xxxx || Jiao.Jianhua || in progress&lt;br /&gt;
|-&lt;br /&gt;
| XColorFormat || xxxx || Jiao.Jianhua || calc complete, no full text ||&lt;br /&gt;
|-&lt;br /&gt;
| XPosSize || xxxx || Jiao.Jianhua || implemented in org.openoffice.XControl ||&lt;br /&gt;
|-&lt;br /&gt;
| XWindow || xxxx || ||&lt;br /&gt;
|-&lt;br /&gt;
| XFileSearch || xxxx || ||&lt;br /&gt;
|-&lt;br /&gt;
| XWrapFormat || xxxx || || in word ||&lt;br /&gt;
|-&lt;br /&gt;
| XFillFormat || xxxx || Jiao.Jianhua || calc complete, no full text ||&lt;br /&gt;
|-&lt;br /&gt;
| XShapeRange || xxxx || Jiao.Jianhua || calc complete, no full text ||&lt;br /&gt;
|-&lt;br /&gt;
| XFoundFiles || xxxx || ||&lt;br /&gt;
|-&lt;br /&gt;
| XLineFormat || xxxx || Jiao.Jianhua || calc complete, no full text ||&lt;br /&gt;
|-&lt;br /&gt;
| XTextFrame || xxxx || Jiao.Jianhua || calc complete, no full text ||&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Missing attributes/methods to port ===&lt;br /&gt;
[[Application Object]]&lt;/div&gt;</summary>
		<author><name>Npower</name></author>
	</entry>
	<entry>
		<id>https://wiki.openoffice.org/w/index.php?title=Porting_notes&amp;diff=30377</id>
		<title>Porting notes</title>
		<link rel="alternate" type="text/html" href="https://wiki.openoffice.org/w/index.php?title=Porting_notes&amp;diff=30377"/>
		<updated>2007-04-18T13:14:33Z</updated>

		<summary type="html">&lt;p&gt;Npower: /* Calc Objects to port */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== Things to watch out for ===&lt;br /&gt;
* The mapping of the vba constants is different. Take for example the &amp;lt;tt&amp;gt;xlGuess&amp;lt;/tt&amp;gt; constant, in VBA it&amp;#039;s fully qualified name is &amp;lt;tt&amp;gt;Excel.XlYesNoGuess.xlGuess&amp;lt;/tt&amp;gt;, in the helperapi it&amp;#039;s &amp;lt;tt&amp;gt;com.sun.star.helper.constant.XlYesNoGuess.xlGuess&amp;lt;/tt&amp;gt; and in oovbaapi it&amp;#039;s &amp;lt;tt&amp;gt;org.openoffice.excel.XlYesNoGuess.xlGuess&amp;lt;/tt&amp;gt; &lt;br /&gt;
* All objects in the helperapi extend [http://api.openoffice.org/source/browse/*checkout*/api/helperapi/impl/com/sun/star/helper/HelperInterfaceAdaptor.java?rev=1.1 HelperInterfaceAdaptor], nothing similar (yet) exists in oovbaapi so this can be ignored in the implementation&lt;br /&gt;
* There are a quite few helper classes in the helperapi project e.g. &amp;lt;tt&amp;gt;RangeHelper.java&amp;lt;/tt&amp;gt; they shouldn&amp;#039;t be confused with the actual implementation objects we wish to port.&lt;br /&gt;
* classes and idl files of the same name can exist in multiple namespaces and this can be confusing. Because the helperapi was written with both the word and excel api(s) in mind there can be classes that share a common implementation and interfaces e.g.&lt;br /&gt;
** &amp;lt;tt&amp;gt;com/sun/star/helper/calc/XShape.idl&amp;lt;/tt&amp;gt;&lt;br /&gt;
** &amp;lt;tt&amp;gt;com/sun/star/helper/common/XShape.idl&amp;lt;/tt&amp;gt;&lt;br /&gt;
** &amp;lt;tt&amp;gt;com/sun/star/helper/writer/XShape.idl&amp;lt;/tt&amp;gt;&lt;br /&gt;
* Collections, these are handled differently see implementing a vba [[Porting notes#Collection|Collection]] in oovbaapi&lt;br /&gt;
* Every helperapi idl method defines [http://api.openoffice.org/source/browse/*checkout*/api/udkapi/com/sun/star/script/BasicErrorException.idl BasicErrorException] which allows and api method to transfer an error code and associated string paramater to basic.&lt;br /&gt;
&lt;br /&gt;
=== Hints for porting idl ===&lt;br /&gt;
==== Objects with Default Properties ====&lt;br /&gt;
This is something not handled by the helperapi but something you should be aware of when implementing a vba compatibility object. What is a default property, an example probably explains the concept better.&lt;br /&gt;
&lt;br /&gt;
 Range(&amp;quot;a1&amp;quot;) = &amp;quot;text&amp;quot;&lt;br /&gt;
&lt;br /&gt;
is a short cut for&lt;br /&gt;
&lt;br /&gt;
 Range(&amp;quot;a1&amp;quot;).Value = &amp;quot;text&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;Value&amp;lt;/tt&amp;gt; is a default property in the example above. We can provide similar behavior in basic with a compatibility api object ensuring the object implements [http://api.openoffice.org/source/browse/*checkout*/api/udkapi/com/sun/star/script/XDefaultProperty.idl XDefaultProperty.idl ]&lt;br /&gt;
&lt;br /&gt;
==== Objects with Default Method ====&lt;br /&gt;
&lt;br /&gt;
Similar to above some vba objects have a default method e.g. the &amp;lt;tt&amp;gt;Collection&amp;lt;/tt&amp;gt; object&lt;br /&gt;
&lt;br /&gt;
 set col = Sheets&lt;br /&gt;
 msgbox col(1).Name&lt;br /&gt;
&lt;br /&gt;
is a short cut for&lt;br /&gt;
&lt;br /&gt;
 set col = Sheets&lt;br /&gt;
 msgbox col.Item(1).Name&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;Item&amp;lt;/tt&amp;gt; is a default method in the example above. We can provide similar behavior in basic with a compatibility api object ensuring the object implements [http://api.openoffice.org/source/browse/*checkout*/api/udkapi/com/sun/star/script/XDefaultMethod.idl XDefaultMethod.idl ]&lt;br /&gt;
&lt;br /&gt;
==== Porting Collection objects ====&lt;br /&gt;
Generally all collection objects have a &amp;lt;tt&amp;gt;Count&amp;lt;/tt&amp;gt; and an &amp;lt;tt&amp;gt;Item&amp;lt;/tt&amp;gt; method and additionally the behaviour mentioned above. Also Collection objects can be used in a &amp;lt;tt&amp;gt;For Each&amp;lt;/tt&amp;gt; loop. To cater for that a helper implementation object &amp;lt;tt&amp;gt;ScVbaCollectionBaseImpl&amp;lt;/tt&amp;gt; provides the necessary information to the basic runtime to allow it to provide the classic vba &amp;lt;tt&amp;gt;Collection&amp;lt;/tt&amp;gt; class syntax support. It also requires to be initialised by an XIndexAccess implementation. Additionally the class inheriting from  &amp;lt;tt&amp;gt;ScVbaCollectionBaseImpl&amp;lt;/tt&amp;gt; must provide the  translation between the object iterated ( via XIndexAccess ) and the corrosponding compatibilty object returned to openoffice basic via the the &amp;lt;tt&amp;gt;createCollectionObject&amp;lt;/tt&amp;gt; method.&lt;br /&gt;
&lt;br /&gt;
A example of a ported &amp;lt;tt&amp;gt;Collection&amp;lt;/tt&amp;gt; object can be found in the [[Porting example]] section&lt;br /&gt;
&lt;br /&gt;
=== Calc Objects to port ===&lt;br /&gt;
{| style=&amp;quot;vertical-align:top; text-align:left; background-color:#efefef;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background-color:#d6d6d6;font-weight:bold;&amp;quot; &lt;br /&gt;
| Object || helperapi implementation name || Porting started by || Status || Notes&lt;br /&gt;
|-&lt;br /&gt;
| XAutoFilter.idl || [http://api.openoffice.org/source/browse/*checkout*/api/helperapi/impl/com/sun/star/helper/calc/AutoFilterImpl.java AutoFilterImpl] ||  ||   || there is a partial (untested) implementation in the porting example section, would be nice for some one to finish&lt;br /&gt;
|-&lt;br /&gt;
| XFilter.idl || [http://api.openoffice.org/source/browse/*checkout*/api/helperapi/impl/com/sun/star/helper/calc/FilterImpl.java FilterImpl.java]  ||  ||  || see above.&lt;br /&gt;
|-&lt;br /&gt;
| XFilters.idl || [http://api.openoffice.org/source/browse/*checkout*/api/helperapi/impl/com/sun/star/helper/calc/FiltersImpl.java FiltersImpl.java] ||  ||  || see above.&lt;br /&gt;
|-&lt;br /&gt;
| XAxes.idl || [http://api.openoffice.org/source/browse/*checkout*/api/helperapi/impl/com/sun/star/helper/calc/AxesImpl.java AxesImpl.java]  ||  npower || in progress ||&lt;br /&gt;
|-&lt;br /&gt;
| XAxis.idl || [http://api.openoffice.org/source/browse/*checkout*/api/helperapi/impl/com/sun/star/helper/calc/AxesImpl.java AxisImpl.java]  || npower || in progress  ||&lt;br /&gt;
|-&lt;br /&gt;
| XAxisTitle.idl || [http://api.openoffice.org/source/browse/*checkout*/api/helperapi/impl/com/sun/star/helper/calc/AxesTitleImpl.java AxisTitleImpl.java] ||  npower || in-progress  ||&lt;br /&gt;
|-&lt;br /&gt;
| XCalc.idl || xxxx  || not required for porting see [[Application Object]] ||  || This is not a &amp;#039;real&amp;#039; object but in a collection of global method/attributes that probably should be part of the XApplication.idl interface&lt;br /&gt;
|-&lt;br /&gt;
| XChartObject.idl || [http://api.openoffice.org/source/browse/*checkout*/api/helperapi/impl/com/sun/star/helper/calc/ChartObjectImpl.java ChartObjectImpl.java] || npower || complete || not-tested&lt;br /&gt;
|-&lt;br /&gt;
| XChartObjects.idl || [http://api.openoffice.org/source/browse/*checkout*/api/helperapi/impl/com/sun/star/helper/calc/ChartObjectsImpl.java ChartObjectsImpl.java] || npower || complete || not-tested &lt;br /&gt;
|-&lt;br /&gt;
| XChart.idl || [http://api.openoffice.org/source/browse/*checkout*/api/helperapi/impl/com/sun/star/helper/calc/ChartImpl.java ChartImpl.java] || npower || in progress || &lt;br /&gt;
|-&lt;br /&gt;
| XCharts.idl ||  [http://api.openoffice.org/source/browse/*checkout*/api/helperapi/impl/com/sun/star/helper/calc/ChartsImpl.java ChartsImpl.java]  ||  npower ||  in progress ||&lt;br /&gt;
|-&lt;br /&gt;
| XChartTitle.idl || [http://api.openoffice.org/source/browse/*checkout*/api/helperapi/impl/com/sun/star/helper/calc/ChartTileImpl.java ChartTitleImpl.java]  || npower || complete || not-tested&lt;br /&gt;
|-&lt;br /&gt;
| XDataLabel.idl || [http://api.openoffice.org/source/browse/*checkout*/api/helperapi/impl/com/sun/star/helper/calc/DataLabelImp.java DataLabelImpl.java] || npower || in progress ||&lt;br /&gt;
|-&lt;br /&gt;
| XDataLabels.idl || [http://api.openoffice.org/source/browse/*checkout*/api/helperapi/impl/com/sun/star/helper/calc/DataLabelsImp.java DataLabelsImpl.java] ||  npower || in progress ||&lt;br /&gt;
|-&lt;br /&gt;
| XFormatCondition.idl || xxxx  ||  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
| XFormatConditions.idl || xxxx  ||  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
| XFormat.idl || xxxx  ||  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
| XHPageBreak.idl || xxxx  ||  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
| XHPageBreaks.idl || xxxx  ||  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
| XName.idl || xxxx  || sola ||  ||&lt;br /&gt;
|-&lt;br /&gt;
| XNames.idl || xxxx  || sola ||  ||&lt;br /&gt;
|-&lt;br /&gt;
| XPageBreak.idl || xxxx  ||  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
|[http://api.openoffice.org/source/browse/api/helperapi/com/sun/star/helper/calc/XPageSetup.idl XPageSetup.idl] || [http://api.openoffice.org/source/browse/api/helperapi/impl/com/sun/star/helper/calc/PageSetupImpl.java PageSetupImpl]  || zhang ||&lt;br /&gt;
|-&lt;br /&gt;
|[http://api.openoffice.org/source/browse/api/helperapi/com/sun/star/helper/calc/XPane.idl XPane.idl] || [http://api.openoffice.org/source/browse/api/helperapi/impl/com/sun/star/helper/calc/PaneImpl.java PaneImpl]  || Jiao.Jianhua || calc complete||&lt;br /&gt;
|-&lt;br /&gt;
| XPoint.idl || xxxx  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
| XPoints.idl || xxxx  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
| XProtection.idl || xxxx  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
| XQueryTable.idl || xxxx  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
| XQueryTables.idl || xxxx  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
| XShape.idl || xxxx  || jiao.jianhua || in progress ||&lt;br /&gt;
|-&lt;br /&gt;
| XShapes.idl || xxxx  || jiao.jianhua  || calc complete, no full text ||&lt;br /&gt;
|-&lt;br /&gt;
| XStyle.idl || xxxx  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
| XStyles.idl || xxxx  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
| XTitle.idl || xxxx  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
| XVPageBreak.idl || xxxx  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
| XVPageBreaks.idl|| xxxx  ||  ||&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Common Objects to port ===&lt;br /&gt;
{| style=&amp;quot;vertical-align:top; text-align:left; background-color:#efefef;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background-color:#d6d6d6;font-weight:bold;&amp;quot; &lt;br /&gt;
| Object || helperapi implementation name || Porting stared by? || Status ||&lt;br /&gt;
|-&lt;br /&gt;
| XAutoFilter.idl || xxxx || ||&lt;br /&gt;
|-&lt;br /&gt;
| XPictureFormat || xxxx || Jiao.Jianhua || in progress&lt;br /&gt;
|-&lt;br /&gt;
| XColorFormat || xxxx || Jiao.Jianhua || calc complete, no full text ||&lt;br /&gt;
|-&lt;br /&gt;
| XPosSize || xxxx || Jiao.Jianhua || implemented in org.openoffice.XControl ||&lt;br /&gt;
|-&lt;br /&gt;
| XWindow || xxxx || ||&lt;br /&gt;
|-&lt;br /&gt;
| XFileSearch || xxxx || ||&lt;br /&gt;
|-&lt;br /&gt;
| XWrapFormat || xxxx || || in word ||&lt;br /&gt;
|-&lt;br /&gt;
| XFillFormat || xxxx || Jiao.Jianhua || calc complete, no full text ||&lt;br /&gt;
|-&lt;br /&gt;
| XShapeRange || xxxx || Jiao.Jianhua || calc complete, no full text ||&lt;br /&gt;
|-&lt;br /&gt;
| XFoundFiles || xxxx || ||&lt;br /&gt;
|-&lt;br /&gt;
| XLineFormat || xxxx || Jiao.Jianhua || calc complete, no full text ||&lt;br /&gt;
|-&lt;br /&gt;
| XTextFrame || xxxx || Jiao.Jianhua || calc complete, no full text ||&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Missing attributes/methods to port ===&lt;br /&gt;
[[Application Object]]&lt;/div&gt;</summary>
		<author><name>Npower</name></author>
	</entry>
	<entry>
		<id>https://wiki.openoffice.org/w/index.php?title=Porting_notes&amp;diff=30374</id>
		<title>Porting notes</title>
		<link rel="alternate" type="text/html" href="https://wiki.openoffice.org/w/index.php?title=Porting_notes&amp;diff=30374"/>
		<updated>2007-04-18T11:49:59Z</updated>

		<summary type="html">&lt;p&gt;Npower: /* Calc Objects to port */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== Things to watch out for ===&lt;br /&gt;
* The mapping of the vba constants is different. Take for example the &amp;lt;tt&amp;gt;xlGuess&amp;lt;/tt&amp;gt; constant, in VBA it&amp;#039;s fully qualified name is &amp;lt;tt&amp;gt;Excel.XlYesNoGuess.xlGuess&amp;lt;/tt&amp;gt;, in the helperapi it&amp;#039;s &amp;lt;tt&amp;gt;com.sun.star.helper.constant.XlYesNoGuess.xlGuess&amp;lt;/tt&amp;gt; and in oovbaapi it&amp;#039;s &amp;lt;tt&amp;gt;org.openoffice.excel.XlYesNoGuess.xlGuess&amp;lt;/tt&amp;gt; &lt;br /&gt;
* All objects in the helperapi extend [http://api.openoffice.org/source/browse/*checkout*/api/helperapi/impl/com/sun/star/helper/HelperInterfaceAdaptor.java?rev=1.1 HelperInterfaceAdaptor], nothing similar (yet) exists in oovbaapi so this can be ignored in the implementation&lt;br /&gt;
* There are a quite few helper classes in the helperapi project e.g. &amp;lt;tt&amp;gt;RangeHelper.java&amp;lt;/tt&amp;gt; they shouldn&amp;#039;t be confused with the actual implementation objects we wish to port.&lt;br /&gt;
* classes and idl files of the same name can exist in multiple namespaces and this can be confusing. Because the helperapi was written with both the word and excel api(s) in mind there can be classes that share a common implementation and interfaces e.g.&lt;br /&gt;
** &amp;lt;tt&amp;gt;com/sun/star/helper/calc/XShape.idl&amp;lt;/tt&amp;gt;&lt;br /&gt;
** &amp;lt;tt&amp;gt;com/sun/star/helper/common/XShape.idl&amp;lt;/tt&amp;gt;&lt;br /&gt;
** &amp;lt;tt&amp;gt;com/sun/star/helper/writer/XShape.idl&amp;lt;/tt&amp;gt;&lt;br /&gt;
* Collections, these are handled differently see implementing a vba [[Porting notes#Collection|Collection]] in oovbaapi&lt;br /&gt;
* Every helperapi idl method defines [http://api.openoffice.org/source/browse/*checkout*/api/udkapi/com/sun/star/script/BasicErrorException.idl BasicErrorException] which allows and api method to transfer an error code and associated string paramater to basic.&lt;br /&gt;
&lt;br /&gt;
=== Hints for porting idl ===&lt;br /&gt;
==== Objects with Default Properties ====&lt;br /&gt;
This is something not handled by the helperapi but something you should be aware of when implementing a vba compatibility object. What is a default property, an example probably explains the concept better.&lt;br /&gt;
&lt;br /&gt;
 Range(&amp;quot;a1&amp;quot;) = &amp;quot;text&amp;quot;&lt;br /&gt;
&lt;br /&gt;
is a short cut for&lt;br /&gt;
&lt;br /&gt;
 Range(&amp;quot;a1&amp;quot;).Value = &amp;quot;text&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;Value&amp;lt;/tt&amp;gt; is a default property in the example above. We can provide similar behavior in basic with a compatibility api object ensuring the object implements [http://api.openoffice.org/source/browse/*checkout*/api/udkapi/com/sun/star/script/XDefaultProperty.idl XDefaultProperty.idl ]&lt;br /&gt;
&lt;br /&gt;
==== Objects with Default Method ====&lt;br /&gt;
&lt;br /&gt;
Similar to above some vba objects have a default method e.g. the &amp;lt;tt&amp;gt;Collection&amp;lt;/tt&amp;gt; object&lt;br /&gt;
&lt;br /&gt;
 set col = Sheets&lt;br /&gt;
 msgbox col(1).Name&lt;br /&gt;
&lt;br /&gt;
is a short cut for&lt;br /&gt;
&lt;br /&gt;
 set col = Sheets&lt;br /&gt;
 msgbox col.Item(1).Name&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;Item&amp;lt;/tt&amp;gt; is a default method in the example above. We can provide similar behavior in basic with a compatibility api object ensuring the object implements [http://api.openoffice.org/source/browse/*checkout*/api/udkapi/com/sun/star/script/XDefaultMethod.idl XDefaultMethod.idl ]&lt;br /&gt;
&lt;br /&gt;
==== Porting Collection objects ====&lt;br /&gt;
Generally all collection objects have a &amp;lt;tt&amp;gt;Count&amp;lt;/tt&amp;gt; and an &amp;lt;tt&amp;gt;Item&amp;lt;/tt&amp;gt; method and additionally the behaviour mentioned above. Also Collection objects can be used in a &amp;lt;tt&amp;gt;For Each&amp;lt;/tt&amp;gt; loop. To cater for that a helper implementation object &amp;lt;tt&amp;gt;ScVbaCollectionBaseImpl&amp;lt;/tt&amp;gt; provides the necessary information to the basic runtime to allow it to provide the classic vba &amp;lt;tt&amp;gt;Collection&amp;lt;/tt&amp;gt; class syntax support. It also requires to be initialised by an XIndexAccess implementation. Additionally the class inheriting from  &amp;lt;tt&amp;gt;ScVbaCollectionBaseImpl&amp;lt;/tt&amp;gt; must provide the  translation between the object iterated ( via XIndexAccess ) and the corrosponding compatibilty object returned to openoffice basic via the the &amp;lt;tt&amp;gt;createCollectionObject&amp;lt;/tt&amp;gt; method.&lt;br /&gt;
&lt;br /&gt;
A example of a ported &amp;lt;tt&amp;gt;Collection&amp;lt;/tt&amp;gt; object can be found in the [[Porting example]] section&lt;br /&gt;
&lt;br /&gt;
=== Calc Objects to port ===&lt;br /&gt;
{| style=&amp;quot;vertical-align:top; text-align:left; background-color:#efefef;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background-color:#d6d6d6;font-weight:bold;&amp;quot; &lt;br /&gt;
| Object || helperapi implementation name || Porting started by || Status || Notes&lt;br /&gt;
|-&lt;br /&gt;
| XAutoFilter.idl || [http://api.openoffice.org/source/browse/*checkout*/api/helperapi/impl/com/sun/star/helper/calc/AutoFilterImpl.java AutoFilterImpl] ||  ||   || there is a partial (untested) implementation in the porting example section, would be nice for some one to finish&lt;br /&gt;
|-&lt;br /&gt;
| XFilter.idl || [http://api.openoffice.org/source/browse/*checkout*/api/helperapi/impl/com/sun/star/helper/calc/FilterImpl.java FilterImpl.java]  ||  ||  || see above.&lt;br /&gt;
|-&lt;br /&gt;
| XFilters.idl || [http://api.openoffice.org/source/browse/*checkout*/api/helperapi/impl/com/sun/star/helper/calc/FiltersImpl.java FiltersImpl.java] ||  ||  || see above.&lt;br /&gt;
|-&lt;br /&gt;
| XAxes.idl || [http://api.openoffice.org/source/browse/*checkout*/api/helperapi/impl/com/sun/star/helper/calc/AxesImpl.java AxesImpl.java]  ||  npower || in progress ||&lt;br /&gt;
|-&lt;br /&gt;
| XAxis.idl || [http://api.openoffice.org/source/browse/*checkout*/api/helperapi/impl/com/sun/star/helper/calc/AxesImpl.java AxisImpl.java]  || npower || in progress  ||&lt;br /&gt;
|-&lt;br /&gt;
| XAxisTitle.idl || xxxx  ||  ||   ||&lt;br /&gt;
|-&lt;br /&gt;
| XCalc.idl || xxxx  || not required for porting see [[Application Object]] ||  || This is not a &amp;#039;real&amp;#039; object but in a collection of global method/attributes that probably should be part of the XApplication.idl interface&lt;br /&gt;
|-&lt;br /&gt;
| XChartObject.idl || [http://api.openoffice.org/source/browse/*checkout*/api/helperapi/impl/com/sun/star/helper/calc/ChartObjectImpl.java ChartObjectImpl.java] || npower || complete || not-tested&lt;br /&gt;
|-&lt;br /&gt;
| XChartObjects.idl || [http://api.openoffice.org/source/browse/*checkout*/api/helperapi/impl/com/sun/star/helper/calc/ChartObjectsImpl.java ChartObjectsImpl.java] || npower || complete || not-tested &lt;br /&gt;
|-&lt;br /&gt;
| XChart.idl || [http://api.openoffice.org/source/browse/*checkout*/api/helperapi/impl/com/sun/star/helper/calc/ChartImpl.java ChartImpl.java] || npower || in progress || &lt;br /&gt;
|-&lt;br /&gt;
| XCharts.idl ||  [http://api.openoffice.org/source/browse/*checkout*/api/helperapi/impl/com/sun/star/helper/calc/ChartsImpl.java ChartsImpl.java]  ||  npower ||  in progress ||&lt;br /&gt;
|-&lt;br /&gt;
| XChartTitle.idl || [http://api.openoffice.org/source/browse/*checkout*/api/helperapi/impl/com/sun/star/helper/calc/ChartTileImpl.java ChartTitleImpl.java]  || npower || complete || not-tested&lt;br /&gt;
|-&lt;br /&gt;
| XDataLabel.idl || [http://api.openoffice.org/source/browse/*checkout*/api/helperapi/impl/com/sun/star/helper/calc/DataLabelImp.java DataLabelImpl.java] || npower || in progress ||&lt;br /&gt;
|-&lt;br /&gt;
| XDataLabels.idl || [http://api.openoffice.org/source/browse/*checkout*/api/helperapi/impl/com/sun/star/helper/calc/DataLabelsImp.java DataLabelsImpl.java] ||  npower || in progress ||&lt;br /&gt;
|-&lt;br /&gt;
| XFormatCondition.idl || xxxx  ||  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
| XFormatConditions.idl || xxxx  ||  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
| XFormat.idl || xxxx  ||  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
| XHPageBreak.idl || xxxx  ||  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
| XHPageBreaks.idl || xxxx  ||  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
| XName.idl || xxxx  || sola ||  ||&lt;br /&gt;
|-&lt;br /&gt;
| XNames.idl || xxxx  || sola ||  ||&lt;br /&gt;
|-&lt;br /&gt;
| XPageBreak.idl || xxxx  ||  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
|[http://api.openoffice.org/source/browse/api/helperapi/com/sun/star/helper/calc/XPageSetup.idl XPageSetup.idl] || [http://api.openoffice.org/source/browse/api/helperapi/impl/com/sun/star/helper/calc/PageSetupImpl.java PageSetupImpl]  || zhang ||&lt;br /&gt;
|-&lt;br /&gt;
|[http://api.openoffice.org/source/browse/api/helperapi/com/sun/star/helper/calc/XPane.idl XPane.idl] || [http://api.openoffice.org/source/browse/api/helperapi/impl/com/sun/star/helper/calc/PaneImpl.java PaneImpl]  || Jiao.Jianhua || calc complete||&lt;br /&gt;
|-&lt;br /&gt;
| XPoint.idl || xxxx  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
| XPoints.idl || xxxx  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
| XProtection.idl || xxxx  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
| XQueryTable.idl || xxxx  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
| XQueryTables.idl || xxxx  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
| XShape.idl || xxxx  || jiao.jianhua || in progress ||&lt;br /&gt;
|-&lt;br /&gt;
| XShapes.idl || xxxx  || jiao.jianhua  || calc complete, no full text ||&lt;br /&gt;
|-&lt;br /&gt;
| XStyle.idl || xxxx  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
| XStyles.idl || xxxx  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
| XTitle.idl || xxxx  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
| XVPageBreak.idl || xxxx  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
| XVPageBreaks.idl|| xxxx  ||  ||&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Common Objects to port ===&lt;br /&gt;
{| style=&amp;quot;vertical-align:top; text-align:left; background-color:#efefef;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background-color:#d6d6d6;font-weight:bold;&amp;quot; &lt;br /&gt;
| Object || helperapi implementation name || Porting stared by? || Status ||&lt;br /&gt;
|-&lt;br /&gt;
| XAutoFilter.idl || xxxx || ||&lt;br /&gt;
|-&lt;br /&gt;
| XPictureFormat || xxxx || Jiao.Jianhua || in progress&lt;br /&gt;
|-&lt;br /&gt;
| XColorFormat || xxxx || Jiao.Jianhua || calc complete, no full text ||&lt;br /&gt;
|-&lt;br /&gt;
| XPosSize || xxxx || Jiao.Jianhua || implemented in org.openoffice.XControl ||&lt;br /&gt;
|-&lt;br /&gt;
| XWindow || xxxx || ||&lt;br /&gt;
|-&lt;br /&gt;
| XFileSearch || xxxx || ||&lt;br /&gt;
|-&lt;br /&gt;
| XWrapFormat || xxxx || || in word ||&lt;br /&gt;
|-&lt;br /&gt;
| XFillFormat || xxxx || Jiao.Jianhua || calc complete, no full text ||&lt;br /&gt;
|-&lt;br /&gt;
| XShapeRange || xxxx || Jiao.Jianhua || calc complete, no full text ||&lt;br /&gt;
|-&lt;br /&gt;
| XFoundFiles || xxxx || ||&lt;br /&gt;
|-&lt;br /&gt;
| XLineFormat || xxxx || Jiao.Jianhua || calc complete, no full text ||&lt;br /&gt;
|-&lt;br /&gt;
| XTextFrame || xxxx || Jiao.Jianhua || calc complete, no full text ||&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Missing attributes/methods to port ===&lt;br /&gt;
[[Application Object]]&lt;/div&gt;</summary>
		<author><name>Npower</name></author>
	</entry>
	<entry>
		<id>https://wiki.openoffice.org/w/index.php?title=Porting_notes&amp;diff=29753</id>
		<title>Porting notes</title>
		<link rel="alternate" type="text/html" href="https://wiki.openoffice.org/w/index.php?title=Porting_notes&amp;diff=29753"/>
		<updated>2007-04-07T12:13:49Z</updated>

		<summary type="html">&lt;p&gt;Npower: /* Calc Objects to port */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== Things to watch out for ===&lt;br /&gt;
* The mapping of the vba constants is different. Take for example the &amp;lt;tt&amp;gt;xlGuess&amp;lt;/tt&amp;gt; constant, in VBA it&amp;#039;s fully qualified name is &amp;lt;tt&amp;gt;Excel.XlYesNoGuess.xlGuess&amp;lt;/tt&amp;gt;, in the helperapi it&amp;#039;s &amp;lt;tt&amp;gt;com.sun.star.helper.constant.XlYesNoGuess.xlGuess&amp;lt;/tt&amp;gt; and in oovbaapi it&amp;#039;s &amp;lt;tt&amp;gt;org.openoffice.excel.XlYesNoGuess.xlGuess&amp;lt;/tt&amp;gt; &lt;br /&gt;
* All objects in the helperapi extend [http://api.openoffice.org/source/browse/*checkout*/api/helperapi/impl/com/sun/star/helper/HelperInterfaceAdaptor.java?rev=1.1 HelperInterfaceAdaptor], nothing similar (yet) exists in oovbaapi so this can be ignored in the implementation&lt;br /&gt;
* There are a quite few helper classes in the helperapi project e.g. &amp;lt;tt&amp;gt;RangeHelper.java&amp;lt;/tt&amp;gt; they shouldn&amp;#039;t be confused with the actual implementation objects we wish to port.&lt;br /&gt;
* classes and idl files of the same name can exist in multiple namespaces and this can be confusing. Because the helperapi was written with both the word and excel api(s) in mind there can be classes that share a common implementation and interfaces e.g.&lt;br /&gt;
** &amp;lt;tt&amp;gt;com/sun/star/helper/calc/XShape.idl&amp;lt;/tt&amp;gt;&lt;br /&gt;
** &amp;lt;tt&amp;gt;com/sun/star/helper/common/XShape.idl&amp;lt;/tt&amp;gt;&lt;br /&gt;
** &amp;lt;tt&amp;gt;com/sun/star/helper/writer/XShape.idl&amp;lt;/tt&amp;gt;&lt;br /&gt;
* Collections, these are handled differently see implementing a vba [[Porting notes#Collection|Collection]] in oovbaapi&lt;br /&gt;
* Every helperapi idl method defines [http://api.openoffice.org/source/browse/*checkout*/api/udkapi/com/sun/star/script/BasicErrorException.idl BasicErrorException] which allows and api method to transfer an error code and associated string paramater to basic.&lt;br /&gt;
&lt;br /&gt;
=== Hints for porting idl ===&lt;br /&gt;
==== Objects with Default Properties ====&lt;br /&gt;
This is something not handled by the helperapi but something you should be aware of when implementing a vba compatibility object. What is a default property, an example probably explains the concept better.&lt;br /&gt;
&lt;br /&gt;
 Range(&amp;quot;a1&amp;quot;) = &amp;quot;text&amp;quot;&lt;br /&gt;
&lt;br /&gt;
is a short cut for&lt;br /&gt;
&lt;br /&gt;
 Range(&amp;quot;a1&amp;quot;).Value = &amp;quot;text&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;Value&amp;lt;/tt&amp;gt; is a default property in the example above. We can provide similar behavior in basic with a compatibility api object ensuring the object implements [http://api.openoffice.org/source/browse/*checkout*/api/udkapi/com/sun/star/script/XDefaultProperty.idl XDefaultProperty.idl ]&lt;br /&gt;
&lt;br /&gt;
==== Objects with Default Method ====&lt;br /&gt;
&lt;br /&gt;
Similar to above some vba objects have a default method e.g. the &amp;lt;tt&amp;gt;Collection&amp;lt;/tt&amp;gt; object&lt;br /&gt;
&lt;br /&gt;
 set col = Sheets&lt;br /&gt;
 msgbox col(1).Name&lt;br /&gt;
&lt;br /&gt;
is a short cut for&lt;br /&gt;
&lt;br /&gt;
 set col = Sheets&lt;br /&gt;
 msgbox col.Item(1).Name&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;Item&amp;lt;/tt&amp;gt; is a default method in the example above. We can provide similar behavior in basic with a compatibility api object ensuring the object implements [http://api.openoffice.org/source/browse/*checkout*/api/udkapi/com/sun/star/script/XDefaultMethod.idl XDefaultMethod.idl ]&lt;br /&gt;
&lt;br /&gt;
==== Porting Collection objects ====&lt;br /&gt;
Generally all collection objects have a &amp;lt;tt&amp;gt;Count&amp;lt;/tt&amp;gt; and an &amp;lt;tt&amp;gt;Item&amp;lt;/tt&amp;gt; method and additionally the behaviour mentioned above. Also Collection objects can be used in a &amp;lt;tt&amp;gt;For Each&amp;lt;/tt&amp;gt; loop. To cater for that a helper implementation object &amp;lt;tt&amp;gt;ScVbaCollectionBaseImpl&amp;lt;/tt&amp;gt; provides the necessary information to the basic runtime to allow it to provide the classic vba &amp;lt;tt&amp;gt;Collection&amp;lt;/tt&amp;gt; class syntax support. It also requires to be initialised by an XIndexAccess implementation. Additionally the class inheriting from  &amp;lt;tt&amp;gt;ScVbaCollectionBaseImpl&amp;lt;/tt&amp;gt; must provide the  translation between the object iterated ( via XIndexAccess ) and the corrosponding compatibilty object returned to openoffice basic via the the &amp;lt;tt&amp;gt;createCollectionObject&amp;lt;/tt&amp;gt; method.&lt;br /&gt;
&lt;br /&gt;
A example of a ported &amp;lt;tt&amp;gt;Collection&amp;lt;/tt&amp;gt; object can be found in the [[Porting example]] section&lt;br /&gt;
&lt;br /&gt;
=== Calc Objects to port ===&lt;br /&gt;
{| style=&amp;quot;vertical-align:top; text-align:left; background-color:#efefef;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background-color:#d6d6d6;font-weight:bold;&amp;quot; &lt;br /&gt;
| Object || helperapi implementation name || Porting stared by || Status || Notes&lt;br /&gt;
|-&lt;br /&gt;
| XAutoFilter.idl || [http://api.openoffice.org/source/browse/*checkout*/api/helperapi/impl/com/sun/star/helper/calc/AutoFilterImpl.java AutoFilterImpl] ||  ||   || there is a partial (untested) implementation in the porting example section, would be nice for some one to finish&lt;br /&gt;
|-&lt;br /&gt;
| XFilter.idl || [http://api.openoffice.org/source/browse/*checkout*/api/helperapi/impl/com/sun/star/helper/calc/FilterImpl.java FilterImpl.java]  ||  ||  || see above.&lt;br /&gt;
|-&lt;br /&gt;
| XFilters.idl || [http://api.openoffice.org/source/browse/*checkout*/api/helperapi/impl/com/sun/star/helper/calc/FiltersImpl.java FiltersImpl.java] ||  ||  || see above.&lt;br /&gt;
|-&lt;br /&gt;
| XAxes.idl || [http://api.openoffice.org/source/browse/*checkout*/api/helperapi/impl/com/sun/star/helper/calc/AxesImpl.java AxesImpl.java]  ||  npower || in progress ||&lt;br /&gt;
|-&lt;br /&gt;
| XAxis.idl || [http://api.openoffice.org/source/browse/*checkout*/api/helperapi/impl/com/sun/star/helper/calc/AxesImpl.java AxisImpl.java]  || npower || in progress  ||&lt;br /&gt;
|-&lt;br /&gt;
| XAxisTitle.idl || xxxx  ||  ||   ||&lt;br /&gt;
|-&lt;br /&gt;
| XCalc.idl || xxxx  || not required for porting see [[Application Object]] ||  || This is not a &amp;#039;real&amp;#039; object but in a collection of global method/attributes that probably should be part of the XApplication.idl interface&lt;br /&gt;
|-&lt;br /&gt;
| XChartObject.idl || [http://api.openoffice.org/source/browse/*checkout*/api/helperapi/impl/com/sun/star/helper/calc/ChartObjectImpl.java ChartObjectImpl.java] || npower || complete || not-tested&lt;br /&gt;
|-&lt;br /&gt;
| XChartObjects.idl || [http://api.openoffice.org/source/browse/*checkout*/api/helperapi/impl/com/sun/star/helper/calc/ChartObjectsImpl.java ChartObjectsImpl.java] || npower || complete || not-tested &lt;br /&gt;
|-&lt;br /&gt;
| XChart.idl || [http://api.openoffice.org/source/browse/*checkout*/api/helperapi/impl/com/sun/star/helper/calc/ChartImpl.java ChartImpl.java] || npower || in progress || &lt;br /&gt;
|-&lt;br /&gt;
| XCharts.idl ||  [http://api.openoffice.org/source/browse/*checkout*/api/helperapi/impl/com/sun/star/helper/calc/ChartsImpl.java ChartsImpl.java]  ||  npower ||  in progress ||&lt;br /&gt;
|-&lt;br /&gt;
| XChartTitle.idl || [http://api.openoffice.org/source/browse/*checkout*/api/helperapi/impl/com/sun/star/helper/calc/ChartTileImpl.java ChartTitleImpl.java]  || npower || complete || not-tested&lt;br /&gt;
|-&lt;br /&gt;
| XDataLabel.idl || xxxx  ||  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
| XDataLabels.idl || xxxx  ||  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
| XFormatCondition.idl || xxxx  ||  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
| XFormatConditions.idl || xxxx  ||  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
| XFormat.idl || xxxx  ||  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
| XHPageBreak.idl || xxxx  ||  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
| XHPageBreaks.idl || xxxx  ||  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
| XName.idl || xxxx  || sola ||  ||&lt;br /&gt;
|-&lt;br /&gt;
| XNames.idl || xxxx  || sola ||  ||&lt;br /&gt;
|-&lt;br /&gt;
| XPageBreak.idl || xxxx  ||  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
|[http://api.openoffice.org/source/browse/api/helperapi/com/sun/star/helper/calc/XPageSetup.idl XPageSetup.idl] || [http://api.openoffice.org/source/browse/api/helperapi/impl/com/sun/star/helper/calc/PageSetupImpl.java PageSetupImpl]  || zhang ||&lt;br /&gt;
|-&lt;br /&gt;
|[http://api.openoffice.org/source/browse/api/helperapi/com/sun/star/helper/calc/XPane.idl XPane.idl] || [http://api.openoffice.org/source/browse/api/helperapi/impl/com/sun/star/helper/calc/PaneImpl.java PaneImpl]  || Jiao.Jianhua || calc complete||&lt;br /&gt;
|-&lt;br /&gt;
| XPoint.idl || xxxx  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
| XPoints.idl || xxxx  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
| XProtection.idl || xxxx  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
| XQueryTable.idl || xxxx  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
| XQueryTables.idl || xxxx  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
| XShape.idl || xxxx  || jiao.jianhua ||&lt;br /&gt;
|-&lt;br /&gt;
| XShapes.idl || xxxx  || jiao.jianhua  || in progress ||&lt;br /&gt;
|-&lt;br /&gt;
| XStyle.idl || xxxx  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
| XStyles.idl || xxxx  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
| XTitle.idl || xxxx  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
| XVPageBreak.idl || xxxx  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
| XVPageBreaks.idl|| xxxx  ||  ||&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Common Objects to port ===&lt;br /&gt;
{| style=&amp;quot;vertical-align:top; text-align:left; background-color:#efefef;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background-color:#d6d6d6;font-weight:bold;&amp;quot; &lt;br /&gt;
| Object || helperapi implementation name || Porting stared by? || Status ||&lt;br /&gt;
|-&lt;br /&gt;
| XAutoFilter.idl || xxxx || ||&lt;br /&gt;
|-&lt;br /&gt;
| XPictureFormat || xxxx || ||&lt;br /&gt;
|-&lt;br /&gt;
| XColorFormat || xxxx || ||&lt;br /&gt;
|-&lt;br /&gt;
| XPosSize || xxxx || Jiao.Jianhua || implemented in org.openoffice.XControl ||&lt;br /&gt;
|-&lt;br /&gt;
| XWindow || xxxx || ||&lt;br /&gt;
|-&lt;br /&gt;
| XFileSearch || xxxx || ||&lt;br /&gt;
|-&lt;br /&gt;
| XWrapFormat || xxxx || ||&lt;br /&gt;
|-&lt;br /&gt;
| XFillFormat || xxxx || ||&lt;br /&gt;
|-&lt;br /&gt;
| XShapeRange || xxxx || ||&lt;br /&gt;
|-&lt;br /&gt;
| XFoundFiles || xxxx || ||&lt;br /&gt;
|-&lt;br /&gt;
| XLineFormat || xxxx || ||&lt;br /&gt;
|-&lt;br /&gt;
| XTextFrame || xxxx || jiao.jianhua ||&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Missing attributes/methods to port ===&lt;br /&gt;
[[Application Object]]&lt;/div&gt;</summary>
		<author><name>Npower</name></author>
	</entry>
	<entry>
		<id>https://wiki.openoffice.org/w/index.php?title=Porting_notes&amp;diff=29752</id>
		<title>Porting notes</title>
		<link rel="alternate" type="text/html" href="https://wiki.openoffice.org/w/index.php?title=Porting_notes&amp;diff=29752"/>
		<updated>2007-04-07T12:13:28Z</updated>

		<summary type="html">&lt;p&gt;Npower: /* Calc Objects to port */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== Things to watch out for ===&lt;br /&gt;
* The mapping of the vba constants is different. Take for example the &amp;lt;tt&amp;gt;xlGuess&amp;lt;/tt&amp;gt; constant, in VBA it&amp;#039;s fully qualified name is &amp;lt;tt&amp;gt;Excel.XlYesNoGuess.xlGuess&amp;lt;/tt&amp;gt;, in the helperapi it&amp;#039;s &amp;lt;tt&amp;gt;com.sun.star.helper.constant.XlYesNoGuess.xlGuess&amp;lt;/tt&amp;gt; and in oovbaapi it&amp;#039;s &amp;lt;tt&amp;gt;org.openoffice.excel.XlYesNoGuess.xlGuess&amp;lt;/tt&amp;gt; &lt;br /&gt;
* All objects in the helperapi extend [http://api.openoffice.org/source/browse/*checkout*/api/helperapi/impl/com/sun/star/helper/HelperInterfaceAdaptor.java?rev=1.1 HelperInterfaceAdaptor], nothing similar (yet) exists in oovbaapi so this can be ignored in the implementation&lt;br /&gt;
* There are a quite few helper classes in the helperapi project e.g. &amp;lt;tt&amp;gt;RangeHelper.java&amp;lt;/tt&amp;gt; they shouldn&amp;#039;t be confused with the actual implementation objects we wish to port.&lt;br /&gt;
* classes and idl files of the same name can exist in multiple namespaces and this can be confusing. Because the helperapi was written with both the word and excel api(s) in mind there can be classes that share a common implementation and interfaces e.g.&lt;br /&gt;
** &amp;lt;tt&amp;gt;com/sun/star/helper/calc/XShape.idl&amp;lt;/tt&amp;gt;&lt;br /&gt;
** &amp;lt;tt&amp;gt;com/sun/star/helper/common/XShape.idl&amp;lt;/tt&amp;gt;&lt;br /&gt;
** &amp;lt;tt&amp;gt;com/sun/star/helper/writer/XShape.idl&amp;lt;/tt&amp;gt;&lt;br /&gt;
* Collections, these are handled differently see implementing a vba [[Porting notes#Collection|Collection]] in oovbaapi&lt;br /&gt;
* Every helperapi idl method defines [http://api.openoffice.org/source/browse/*checkout*/api/udkapi/com/sun/star/script/BasicErrorException.idl BasicErrorException] which allows and api method to transfer an error code and associated string paramater to basic.&lt;br /&gt;
&lt;br /&gt;
=== Hints for porting idl ===&lt;br /&gt;
==== Objects with Default Properties ====&lt;br /&gt;
This is something not handled by the helperapi but something you should be aware of when implementing a vba compatibility object. What is a default property, an example probably explains the concept better.&lt;br /&gt;
&lt;br /&gt;
 Range(&amp;quot;a1&amp;quot;) = &amp;quot;text&amp;quot;&lt;br /&gt;
&lt;br /&gt;
is a short cut for&lt;br /&gt;
&lt;br /&gt;
 Range(&amp;quot;a1&amp;quot;).Value = &amp;quot;text&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;Value&amp;lt;/tt&amp;gt; is a default property in the example above. We can provide similar behavior in basic with a compatibility api object ensuring the object implements [http://api.openoffice.org/source/browse/*checkout*/api/udkapi/com/sun/star/script/XDefaultProperty.idl XDefaultProperty.idl ]&lt;br /&gt;
&lt;br /&gt;
==== Objects with Default Method ====&lt;br /&gt;
&lt;br /&gt;
Similar to above some vba objects have a default method e.g. the &amp;lt;tt&amp;gt;Collection&amp;lt;/tt&amp;gt; object&lt;br /&gt;
&lt;br /&gt;
 set col = Sheets&lt;br /&gt;
 msgbox col(1).Name&lt;br /&gt;
&lt;br /&gt;
is a short cut for&lt;br /&gt;
&lt;br /&gt;
 set col = Sheets&lt;br /&gt;
 msgbox col.Item(1).Name&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;Item&amp;lt;/tt&amp;gt; is a default method in the example above. We can provide similar behavior in basic with a compatibility api object ensuring the object implements [http://api.openoffice.org/source/browse/*checkout*/api/udkapi/com/sun/star/script/XDefaultMethod.idl XDefaultMethod.idl ]&lt;br /&gt;
&lt;br /&gt;
==== Porting Collection objects ====&lt;br /&gt;
Generally all collection objects have a &amp;lt;tt&amp;gt;Count&amp;lt;/tt&amp;gt; and an &amp;lt;tt&amp;gt;Item&amp;lt;/tt&amp;gt; method and additionally the behaviour mentioned above. Also Collection objects can be used in a &amp;lt;tt&amp;gt;For Each&amp;lt;/tt&amp;gt; loop. To cater for that a helper implementation object &amp;lt;tt&amp;gt;ScVbaCollectionBaseImpl&amp;lt;/tt&amp;gt; provides the necessary information to the basic runtime to allow it to provide the classic vba &amp;lt;tt&amp;gt;Collection&amp;lt;/tt&amp;gt; class syntax support. It also requires to be initialised by an XIndexAccess implementation. Additionally the class inheriting from  &amp;lt;tt&amp;gt;ScVbaCollectionBaseImpl&amp;lt;/tt&amp;gt; must provide the  translation between the object iterated ( via XIndexAccess ) and the corrosponding compatibilty object returned to openoffice basic via the the &amp;lt;tt&amp;gt;createCollectionObject&amp;lt;/tt&amp;gt; method.&lt;br /&gt;
&lt;br /&gt;
A example of a ported &amp;lt;tt&amp;gt;Collection&amp;lt;/tt&amp;gt; object can be found in the [[Porting example]] section&lt;br /&gt;
&lt;br /&gt;
=== Calc Objects to port ===&lt;br /&gt;
{| style=&amp;quot;vertical-align:top; text-align:left; background-color:#efefef;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background-color:#d6d6d6;font-weight:bold;&amp;quot; &lt;br /&gt;
| Object || helperapi implementation name || Porting stared by || Status || Notes&lt;br /&gt;
|-&lt;br /&gt;
| XAutoFilter.idl || [http://api.openoffice.org/source/browse/*checkout*/api/helperapi/impl/com/sun/star/helper/calc/AutoFilterImpl.java AutoFilterImpl] ||  ||   || there is a partial (untested) implementation in the porting example section, would be nice for some one to finish&lt;br /&gt;
|-&lt;br /&gt;
| XFilter.idl || [http://api.openoffice.org/source/browse/*checkout*/api/helperapi/impl/com/sun/star/helper/calc/FilterImpl.java FilterImpl.java]  ||  ||  || see above.&lt;br /&gt;
|-&lt;br /&gt;
| XFilters.idl || [http://api.openoffice.org/source/browse/*checkout*/api/helperapi/impl/com/sun/star/helper/calc/FiltersImpl.java FiltersImpl.java] ||  ||  || see above.&lt;br /&gt;
|-&lt;br /&gt;
| XAxes.idl || [http://api.openoffice.org/source/browse/*checkout*/api/helperapi/impl/com/sun/star/helper/calc/AxesImpl.java AxesImpl.java]  ||  npower || in progress ||&lt;br /&gt;
|-&lt;br /&gt;
| XAxis.idl || http://api.openoffice.org/source/browse/*checkout*/api/helperapi/impl/com/sun/star/helper/calc/AxesImpl.java AxisImpl.java]  || npower || in progress  ||&lt;br /&gt;
|-&lt;br /&gt;
| XAxisTitle.idl || xxxx  ||  ||   ||&lt;br /&gt;
|-&lt;br /&gt;
| XCalc.idl || xxxx  || not required for porting see [[Application Object]] ||  || This is not a &amp;#039;real&amp;#039; object but in a collection of global method/attributes that probably should be part of the XApplication.idl interface&lt;br /&gt;
|-&lt;br /&gt;
| XChartObject.idl || [http://api.openoffice.org/source/browse/*checkout*/api/helperapi/impl/com/sun/star/helper/calc/ChartObjectImpl.java ChartObjectImpl.java] || npower || complete || not-tested&lt;br /&gt;
|-&lt;br /&gt;
| XChartObjects.idl || [http://api.openoffice.org/source/browse/*checkout*/api/helperapi/impl/com/sun/star/helper/calc/ChartObjectsImpl.java ChartObjectsImpl.java] || npower || complete || not-tested &lt;br /&gt;
|-&lt;br /&gt;
| XChart.idl || [http://api.openoffice.org/source/browse/*checkout*/api/helperapi/impl/com/sun/star/helper/calc/ChartImpl.java ChartImpl.java] || npower || in progress || &lt;br /&gt;
|-&lt;br /&gt;
| XCharts.idl ||  [http://api.openoffice.org/source/browse/*checkout*/api/helperapi/impl/com/sun/star/helper/calc/ChartsImpl.java ChartsImpl.java]  ||  npower ||  in progress ||&lt;br /&gt;
|-&lt;br /&gt;
| XChartTitle.idl || [http://api.openoffice.org/source/browse/*checkout*/api/helperapi/impl/com/sun/star/helper/calc/ChartTileImpl.java ChartTitleImpl.java]  || npower || complete || not-tested&lt;br /&gt;
|-&lt;br /&gt;
| XDataLabel.idl || xxxx  ||  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
| XDataLabels.idl || xxxx  ||  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
| XFormatCondition.idl || xxxx  ||  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
| XFormatConditions.idl || xxxx  ||  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
| XFormat.idl || xxxx  ||  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
| XHPageBreak.idl || xxxx  ||  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
| XHPageBreaks.idl || xxxx  ||  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
| XName.idl || xxxx  || sola ||  ||&lt;br /&gt;
|-&lt;br /&gt;
| XNames.idl || xxxx  || sola ||  ||&lt;br /&gt;
|-&lt;br /&gt;
| XPageBreak.idl || xxxx  ||  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
|[http://api.openoffice.org/source/browse/api/helperapi/com/sun/star/helper/calc/XPageSetup.idl XPageSetup.idl] || [http://api.openoffice.org/source/browse/api/helperapi/impl/com/sun/star/helper/calc/PageSetupImpl.java PageSetupImpl]  || zhang ||&lt;br /&gt;
|-&lt;br /&gt;
|[http://api.openoffice.org/source/browse/api/helperapi/com/sun/star/helper/calc/XPane.idl XPane.idl] || [http://api.openoffice.org/source/browse/api/helperapi/impl/com/sun/star/helper/calc/PaneImpl.java PaneImpl]  || Jiao.Jianhua || calc complete||&lt;br /&gt;
|-&lt;br /&gt;
| XPoint.idl || xxxx  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
| XPoints.idl || xxxx  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
| XProtection.idl || xxxx  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
| XQueryTable.idl || xxxx  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
| XQueryTables.idl || xxxx  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
| XShape.idl || xxxx  || jiao.jianhua ||&lt;br /&gt;
|-&lt;br /&gt;
| XShapes.idl || xxxx  || jiao.jianhua  || in progress ||&lt;br /&gt;
|-&lt;br /&gt;
| XStyle.idl || xxxx  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
| XStyles.idl || xxxx  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
| XTitle.idl || xxxx  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
| XVPageBreak.idl || xxxx  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
| XVPageBreaks.idl|| xxxx  ||  ||&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Common Objects to port ===&lt;br /&gt;
{| style=&amp;quot;vertical-align:top; text-align:left; background-color:#efefef;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background-color:#d6d6d6;font-weight:bold;&amp;quot; &lt;br /&gt;
| Object || helperapi implementation name || Porting stared by? || Status ||&lt;br /&gt;
|-&lt;br /&gt;
| XAutoFilter.idl || xxxx || ||&lt;br /&gt;
|-&lt;br /&gt;
| XPictureFormat || xxxx || ||&lt;br /&gt;
|-&lt;br /&gt;
| XColorFormat || xxxx || ||&lt;br /&gt;
|-&lt;br /&gt;
| XPosSize || xxxx || Jiao.Jianhua || implemented in org.openoffice.XControl ||&lt;br /&gt;
|-&lt;br /&gt;
| XWindow || xxxx || ||&lt;br /&gt;
|-&lt;br /&gt;
| XFileSearch || xxxx || ||&lt;br /&gt;
|-&lt;br /&gt;
| XWrapFormat || xxxx || ||&lt;br /&gt;
|-&lt;br /&gt;
| XFillFormat || xxxx || ||&lt;br /&gt;
|-&lt;br /&gt;
| XShapeRange || xxxx || ||&lt;br /&gt;
|-&lt;br /&gt;
| XFoundFiles || xxxx || ||&lt;br /&gt;
|-&lt;br /&gt;
| XLineFormat || xxxx || ||&lt;br /&gt;
|-&lt;br /&gt;
| XTextFrame || xxxx || jiao.jianhua ||&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Missing attributes/methods to port ===&lt;br /&gt;
[[Application Object]]&lt;/div&gt;</summary>
		<author><name>Npower</name></author>
	</entry>
	<entry>
		<id>https://wiki.openoffice.org/w/index.php?title=Porting_notes&amp;diff=29626</id>
		<title>Porting notes</title>
		<link rel="alternate" type="text/html" href="https://wiki.openoffice.org/w/index.php?title=Porting_notes&amp;diff=29626"/>
		<updated>2007-04-05T09:54:40Z</updated>

		<summary type="html">&lt;p&gt;Npower: /* Calc Objects to port */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== Things to watch out for ===&lt;br /&gt;
* The mapping of the vba constants is different. Take for example the &amp;lt;tt&amp;gt;xlGuess&amp;lt;/tt&amp;gt; constant, in VBA it&amp;#039;s fully qualified name is &amp;lt;tt&amp;gt;Excel.XlYesNoGuess.xlGuess&amp;lt;/tt&amp;gt;, in the helperapi it&amp;#039;s &amp;lt;tt&amp;gt;com.sun.star.helper.constant.XlYesNoGuess.xlGuess&amp;lt;/tt&amp;gt; and in oovbaapi it&amp;#039;s &amp;lt;tt&amp;gt;org.openoffice.excel.XlYesNoGuess.xlGuess&amp;lt;/tt&amp;gt; &lt;br /&gt;
* All objects in the helperapi extend [http://api.openoffice.org/source/browse/*checkout*/api/helperapi/impl/com/sun/star/helper/HelperInterfaceAdaptor.java?rev=1.1 HelperInterfaceAdaptor], nothing similar (yet) exists in oovbaapi so this can be ignored in the implementation&lt;br /&gt;
* There are a quite few helper classes in the helperapi project e.g. &amp;lt;tt&amp;gt;RangeHelper.java&amp;lt;/tt&amp;gt; they shouldn&amp;#039;t be confused with the actual implementation objects we wish to port.&lt;br /&gt;
* classes and idl files of the same name can exist in multiple namespaces and this can be confusing. Because the helperapi was written with both the word and excel api(s) in mind there can be classes that share a common implementation and interfaces e.g.&lt;br /&gt;
** &amp;lt;tt&amp;gt;com/sun/star/helper/calc/XShape.idl&amp;lt;/tt&amp;gt;&lt;br /&gt;
** &amp;lt;tt&amp;gt;com/sun/star/helper/common/XShape.idl&amp;lt;/tt&amp;gt;&lt;br /&gt;
** &amp;lt;tt&amp;gt;com/sun/star/helper/writer/XShape.idl&amp;lt;/tt&amp;gt;&lt;br /&gt;
* Collections, these are handled differently see implementing a vba [[Porting notes#Collection|Collection]] in oovbaapi&lt;br /&gt;
* Every helperapi idl method defines [http://api.openoffice.org/source/browse/*checkout*/api/udkapi/com/sun/star/script/BasicErrorException.idl BasicErrorException] which allows and api method to transfer an error code and associated string paramater to basic.&lt;br /&gt;
&lt;br /&gt;
=== Hints for porting idl ===&lt;br /&gt;
==== Objects with Default Properties ====&lt;br /&gt;
This is something not handled by the helperapi but something you should be aware of when implementing a vba compatibility object. What is a default property, an example probably explains the concept better.&lt;br /&gt;
&lt;br /&gt;
 Range(&amp;quot;a1&amp;quot;) = &amp;quot;text&amp;quot;&lt;br /&gt;
&lt;br /&gt;
is a short cut for&lt;br /&gt;
&lt;br /&gt;
 Range(&amp;quot;a1&amp;quot;).Value = &amp;quot;text&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;Value&amp;lt;/tt&amp;gt; is a default property in the example above. We can provide similar behavior in basic with a compatibility api object ensuring the object implements [http://api.openoffice.org/source/browse/*checkout*/api/udkapi/com/sun/star/script/XDefaultProperty.idl XDefaultProperty.idl ]&lt;br /&gt;
&lt;br /&gt;
==== Objects with Default Method ====&lt;br /&gt;
&lt;br /&gt;
Similar to above some vba objects have a default method e.g. the &amp;lt;tt&amp;gt;Collection&amp;lt;/tt&amp;gt; object&lt;br /&gt;
&lt;br /&gt;
 set col = Sheets&lt;br /&gt;
 msgbox col(1).Name&lt;br /&gt;
&lt;br /&gt;
is a short cut for&lt;br /&gt;
&lt;br /&gt;
 set col = Sheets&lt;br /&gt;
 msgbox col.Item(1).Name&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;Item&amp;lt;/tt&amp;gt; is a default method in the example above. We can provide similar behavior in basic with a compatibility api object ensuring the object implements [http://api.openoffice.org/source/browse/*checkout*/api/udkapi/com/sun/star/script/XDefaultMethod.idl XDefaultMethod.idl ]&lt;br /&gt;
&lt;br /&gt;
==== Porting Collection objects ====&lt;br /&gt;
Generally all collection objects have a &amp;lt;tt&amp;gt;Count&amp;lt;/tt&amp;gt; and an &amp;lt;tt&amp;gt;Item&amp;lt;/tt&amp;gt; method and additionally the behaviour mentioned above. Also Collection objects can be used in a &amp;lt;tt&amp;gt;For Each&amp;lt;/tt&amp;gt; loop. To cater for that a helper implementation object &amp;lt;tt&amp;gt;ScVbaCollectionBaseImpl&amp;lt;/tt&amp;gt; provides the necessary information to the basic runtime to allow it to provide the classic vba &amp;lt;tt&amp;gt;Collection&amp;lt;/tt&amp;gt; class syntax support. It also requires to be initialised by an XIndexAccess implementation. Additionally the class inheriting from  &amp;lt;tt&amp;gt;ScVbaCollectionBaseImpl&amp;lt;/tt&amp;gt; must provide the  translation between the object iterated ( via XIndexAccess ) and the corrosponding compatibilty object returned to openoffice basic via the the &amp;lt;tt&amp;gt;createCollectionObject&amp;lt;/tt&amp;gt; method.&lt;br /&gt;
&lt;br /&gt;
A example of a ported &amp;lt;tt&amp;gt;Collection&amp;lt;/tt&amp;gt; object can be found in the [[Porting example]] section&lt;br /&gt;
&lt;br /&gt;
=== Calc Objects to port ===&lt;br /&gt;
{| style=&amp;quot;vertical-align:top; text-align:left; background-color:#efefef;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background-color:#d6d6d6;font-weight:bold;&amp;quot; &lt;br /&gt;
| Object || helperapi implementation name || Porting stared by || Status || Notes&lt;br /&gt;
|-&lt;br /&gt;
| XAutoFilter.idl || [http://api.openoffice.org/source/browse/*checkout*/api/helperapi/impl/com/sun/star/helper/calc/AutoFilterImpl.java AutoFilterImpl] ||  ||   || there is a partial (untested) implementation in the porting example section, would be nice for some one to finish&lt;br /&gt;
|-&lt;br /&gt;
| XFilter.idl || [http://api.openoffice.org/source/browse/*checkout*/api/helperapi/impl/com/sun/star/helper/calc/FilterImpl.java FilterImpl.java]  ||  ||  || see above.&lt;br /&gt;
|-&lt;br /&gt;
| XFilters.idl || [http://api.openoffice.org/source/browse/*checkout*/api/helperapi/impl/com/sun/star/helper/calc/FiltersImpl.java FiltersImpl.java] ||  ||  || see above.&lt;br /&gt;
|-&lt;br /&gt;
| XAxes.idl || xxxx  ||  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
| XAxis.idl || xxxx  ||  ||   ||&lt;br /&gt;
|-&lt;br /&gt;
| XAxisTitle.idl || xxxx  ||  ||   ||&lt;br /&gt;
|-&lt;br /&gt;
| XCalc.idl || xxxx  || not required for porting see [[Application Object]] ||  || This is not a &amp;#039;real&amp;#039; object but in a collection of global method/attributes that probably should be part of the XApplication.idl interface&lt;br /&gt;
|-&lt;br /&gt;
| XChartObject.idl || [http://api.openoffice.org/source/browse/*checkout*/api/helperapi/impl/com/sun/star/helper/calc/ChartObjectImpl.java ChartObjectImpl.java] || npower || complete || not-tested&lt;br /&gt;
|-&lt;br /&gt;
| XChartObjects.idl || [http://api.openoffice.org/source/browse/*checkout*/api/helperapi/impl/com/sun/star/helper/calc/ChartObjectsImpl.java ChartObjectsImpl.java] || npower || complete || not-tested &lt;br /&gt;
|-&lt;br /&gt;
| XChart.idl || [http://api.openoffice.org/source/browse/*checkout*/api/helperapi/impl/com/sun/star/helper/calc/ChartImpl.java ChartImpl.java] || npower || in progress || &lt;br /&gt;
|-&lt;br /&gt;
| XCharts.idl ||  [http://api.openoffice.org/source/browse/*checkout*/api/helperapi/impl/com/sun/star/helper/calc/ChartsImpl.java ChartsImpl.java]  ||  npower ||  in progress ||&lt;br /&gt;
|-&lt;br /&gt;
| XChartTitle.idl || [http://api.openoffice.org/source/browse/*checkout*/api/helperapi/impl/com/sun/star/helper/calc/ChartTileImpl.java ChartTitleImpl.java]  || npower || complete || not-tested&lt;br /&gt;
|-&lt;br /&gt;
| XDataLabel.idl || xxxx  ||  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
| XDataLabels.idl || xxxx  ||  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
| XFormatCondition.idl || xxxx  ||  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
| XFormatConditions.idl || xxxx  ||  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
| XFormat.idl || xxxx  ||  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
| XHPageBreak.idl || xxxx  ||  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
| XHPageBreaks.idl || xxxx  ||  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
| XName.idl || xxxx  || sola ||  ||&lt;br /&gt;
|-&lt;br /&gt;
| XNames.idl || xxxx  || sola ||  ||&lt;br /&gt;
|-&lt;br /&gt;
| XPageBreak.idl || xxxx  ||  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
|[http://api.openoffice.org/source/browse/api/helperapi/com/sun/star/helper/calc/XPageSetup.idl XPageSetup.idl] || [http://api.openoffice.org/source/browse/api/helperapi/impl/com/sun/star/helper/calc/PageSetupImpl.java PageSetupImpl]  || zhang ||&lt;br /&gt;
|-&lt;br /&gt;
|[http://api.openoffice.org/source/browse/api/helperapi/com/sun/star/helper/calc/XPane.idl XPane.idl] || [http://api.openoffice.org/source/browse/api/helperapi/impl/com/sun/star/helper/calc/PaneImpl.java PaneImpl]  || Jiao.Jianhua || calc complete||&lt;br /&gt;
|-&lt;br /&gt;
| XPoint.idl || xxxx  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
| XPoints.idl || xxxx  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
| XProtection.idl || xxxx  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
| XQueryTable.idl || xxxx  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
| XQueryTables.idl || xxxx  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
| XShape.idl || xxxx  || jiao.jianhua ||&lt;br /&gt;
|-&lt;br /&gt;
| XShapes.idl || xxxx  || jiao.jianhua  || in progress ||&lt;br /&gt;
|-&lt;br /&gt;
| XStyle.idl || xxxx  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
| XStyles.idl || xxxx  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
| XTitle.idl || xxxx  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
| XVPageBreak.idl || xxxx  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
| XVPageBreaks.idl|| xxxx  ||  ||&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Common Objects to port ===&lt;br /&gt;
{| style=&amp;quot;vertical-align:top; text-align:left; background-color:#efefef;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background-color:#d6d6d6;font-weight:bold;&amp;quot; &lt;br /&gt;
| Object || helperapi implementation name || Porting stared by? || Status ||&lt;br /&gt;
|-&lt;br /&gt;
| XAutoFilter.idl || xxxx || ||&lt;br /&gt;
|-&lt;br /&gt;
| XPictureFormat || xxxx || ||&lt;br /&gt;
|-&lt;br /&gt;
| XColorFormat || xxxx || ||&lt;br /&gt;
|-&lt;br /&gt;
| XPosSize || xxxx || Jiao.Jianhua || implemented in org.openoffice.XControl ||&lt;br /&gt;
|-&lt;br /&gt;
| XWindow || xxxx || ||&lt;br /&gt;
|-&lt;br /&gt;
| XFileSearch || xxxx || ||&lt;br /&gt;
|-&lt;br /&gt;
| XWrapFormat || xxxx || ||&lt;br /&gt;
|-&lt;br /&gt;
| XFillFormat || xxxx || ||&lt;br /&gt;
|-&lt;br /&gt;
| XShapeRange || xxxx || ||&lt;br /&gt;
|-&lt;br /&gt;
| XFoundFiles || xxxx || ||&lt;br /&gt;
|-&lt;br /&gt;
| XLineFormat || xxxx || ||&lt;br /&gt;
|-&lt;br /&gt;
| XTextFrame || xxxx || jiao.jianhua ||&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Missing attributes/methods to port ===&lt;br /&gt;
[[Application Object]]&lt;/div&gt;</summary>
		<author><name>Npower</name></author>
	</entry>
	<entry>
		<id>https://wiki.openoffice.org/w/index.php?title=Porting_notes&amp;diff=28840</id>
		<title>Porting notes</title>
		<link rel="alternate" type="text/html" href="https://wiki.openoffice.org/w/index.php?title=Porting_notes&amp;diff=28840"/>
		<updated>2007-03-22T18:31:35Z</updated>

		<summary type="html">&lt;p&gt;Npower: /* Calc Objects to port */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== Things to watch out for ===&lt;br /&gt;
* The mapping of the vba constants is different. Take for example the &amp;lt;tt&amp;gt;xlGuess&amp;lt;/tt&amp;gt; constant, in VBA it&amp;#039;s fully qualified name is &amp;lt;tt&amp;gt;Excel.XlYesNoGuess.xlGuess&amp;lt;/tt&amp;gt;, in the helperapi it&amp;#039;s &amp;lt;tt&amp;gt;com.sun.star.helper.constant.XlYesNoGuess.xlGuess&amp;lt;/tt&amp;gt; and in oovbaapi it&amp;#039;s &amp;lt;tt&amp;gt;org.openoffice.excel.XlYesNoGuess.xlGuess&amp;lt;/tt&amp;gt; &lt;br /&gt;
* All objects in the helperapi extend [http://api.openoffice.org/source/browse/*checkout*/api/helperapi/impl/com/sun/star/helper/HelperInterfaceAdaptor.java?rev=1.1 HelperInterfaceAdaptor], nothing similar (yet) exists in oovbaapi so this can be ignored in the implementation&lt;br /&gt;
* There are a quite few helper classes in the helperapi project e.g. &amp;lt;tt&amp;gt;RangeHelper.java&amp;lt;/tt&amp;gt; they shouldn&amp;#039;t be confused with the actual implementation objects we wish to port.&lt;br /&gt;
* classes and idl files of the same name can exist in multiple namespaces and this can be confusing. Because the helperapi was written with both the word and excel api(s) in mind there can be classes that share a common implementation and interfaces e.g.&lt;br /&gt;
** &amp;lt;tt&amp;gt;com/sun/star/helper/calc/XShape.idl&amp;lt;/tt&amp;gt;&lt;br /&gt;
** &amp;lt;tt&amp;gt;com/sun/star/helper/common/XShape.idl&amp;lt;/tt&amp;gt;&lt;br /&gt;
** &amp;lt;tt&amp;gt;com/sun/star/helper/writer/XShape.idl&amp;lt;/tt&amp;gt;&lt;br /&gt;
* Collections, these are handled differently see implementing a vba [[Porting notes#Collection|Collection]] in oovbaapi&lt;br /&gt;
* Every helperapi idl method defines [http://api.openoffice.org/source/browse/*checkout*/api/udkapi/com/sun/star/script/BasicErrorException.idl BasicErrorException] which allows and api method to transfer an error code and associated string paramater to basic.&lt;br /&gt;
&lt;br /&gt;
=== Hints for porting idl ===&lt;br /&gt;
==== Objects with Default Properties ====&lt;br /&gt;
This is something not handled by the helperapi but something you should be aware of when implementing a vba compatibility object. What is a default property, an example probably explains the concept better.&lt;br /&gt;
&lt;br /&gt;
 Range(&amp;quot;a1&amp;quot;) = &amp;quot;text&amp;quot;&lt;br /&gt;
&lt;br /&gt;
is a short cut for&lt;br /&gt;
&lt;br /&gt;
 Range(&amp;quot;a1&amp;quot;).Value = &amp;quot;text&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;Value&amp;lt;/tt&amp;gt; is a default property in the example above. We can provide similar behavior in basic with a compatibility api object ensuring the object implements [http://api.openoffice.org/source/browse/*checkout*/api/udkapi/com/sun/star/script/XDefaultProperty.idl XDefaultProperty.idl ]&lt;br /&gt;
&lt;br /&gt;
==== Objects with Default Method ====&lt;br /&gt;
&lt;br /&gt;
Similar to above some vba objects have a default method e.g. the &amp;lt;tt&amp;gt;Collection&amp;lt;/tt&amp;gt; object&lt;br /&gt;
&lt;br /&gt;
 set col = Sheets&lt;br /&gt;
 msgbox col(1).Name&lt;br /&gt;
&lt;br /&gt;
is a short cut for&lt;br /&gt;
&lt;br /&gt;
 set col = Sheets&lt;br /&gt;
 msgbox col.Item(1).Name&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;Item&amp;lt;/tt&amp;gt; is a default method in the example above. We can provide similar behavior in basic with a compatibility api object ensuring the object implements [http://api.openoffice.org/source/browse/*checkout*/api/udkapi/com/sun/star/script/XDefaultMethod.idl XDefaultMethod.idl ]&lt;br /&gt;
&lt;br /&gt;
==== Porting Collection objects ====&lt;br /&gt;
Generally all collection objects have a &amp;lt;tt&amp;gt;Count&amp;lt;/tt&amp;gt; and an &amp;lt;tt&amp;gt;Item&amp;lt;/tt&amp;gt; method and additionally the behaviour mentioned above. Also Collection objects can be used in a &amp;lt;tt&amp;gt;For Each&amp;lt;/tt&amp;gt; loop. To cater for that a helper implementation object &amp;lt;tt&amp;gt;ScVbaCollectionBaseImpl&amp;lt;/tt&amp;gt; provides the necessary information to the basic runtime to allow it to provide the classic vba &amp;lt;tt&amp;gt;Collection&amp;lt;/tt&amp;gt; class syntax support. It also requires to be initialised by an XIndexAccess implementation. Additionally the class inheriting from  &amp;lt;tt&amp;gt;ScVbaCollectionBaseImpl&amp;lt;/tt&amp;gt; must provide the  translation between the object iterated ( via XIndexAccess ) and the corrosponding compatibilty object returned to openoffice basic via the the &amp;lt;tt&amp;gt;createCollectionObject&amp;lt;/tt&amp;gt; method.&lt;br /&gt;
&lt;br /&gt;
A example of a ported &amp;lt;tt&amp;gt;Collection&amp;lt;/tt&amp;gt; object can be found in the [[Porting example]] section&lt;br /&gt;
&lt;br /&gt;
=== Calc Objects to port ===&lt;br /&gt;
{| style=&amp;quot;vertical-align:top; text-align:left; background-color:#efefef;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background-color:#d6d6d6;font-weight:bold;&amp;quot; &lt;br /&gt;
| Object || helperapi implementation name || Porting stared by || Status || Notes&lt;br /&gt;
|-&lt;br /&gt;
| XAutoFilter.idl || [http://api.openoffice.org/source/browse/*checkout*/api/helperapi/impl/com/sun/star/helper/calc/AutoFilterImpl.java AutoFilterImpl] ||  ||   || there is a partial (untested) implementation in the porting example section, would be nice for some one to finish&lt;br /&gt;
|-&lt;br /&gt;
| XFilter.idl || [http://api.openoffice.org/source/browse/*checkout*/api/helperapi/impl/com/sun/star/helper/calc/FilterImpl.java FilterImpl.java]  ||  ||  || see above.&lt;br /&gt;
|-&lt;br /&gt;
| XFilters.idl || [http://api.openoffice.org/source/browse/*checkout*/api/helperapi/impl/com/sun/star/helper/calc/FiltersImpl.java FiltersImpl.java] ||  ||  || see above.&lt;br /&gt;
|-&lt;br /&gt;
| XAxes.idl || xxxx  ||  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
| XAxis.idl || xxxx  ||  ||   ||&lt;br /&gt;
|-&lt;br /&gt;
| XAxisTitle.idl || xxxx  ||  ||   ||&lt;br /&gt;
|-&lt;br /&gt;
| XCalc.idl || xxxx  || not required for porting see [[Application Object]] ||  || This is not a &amp;#039;real&amp;#039; object but in a collection of global method/attributes that probably should be part of the XApplication.idl interface&lt;br /&gt;
|-&lt;br /&gt;
| XChartObject.idl || [http://api.openoffice.org/source/browse/*checkout*/api/helperapi/impl/com/sun/star/helper/calc/ChartObjectImpl.java ChartObjectImpl.java] || npower || in progress || &lt;br /&gt;
|-&lt;br /&gt;
| XChartObjects.idl || [http://api.openoffice.org/source/browse/*checkout*/api/helperapi/impl/com/sun/star/helper/calc/ChartObjectsImpl.java ChartObjectsImpl.java] || npower || in progress || &lt;br /&gt;
|-&lt;br /&gt;
| XChart.idl || [http://api.openoffice.org/source/browse/*checkout*/api/helperapi/impl/com/sun/star/helper/calc/ChartImpl.java ChartImpl.java] || npower || in progress || &lt;br /&gt;
|-&lt;br /&gt;
| XCharts.idl ||  [http://api.openoffice.org/source/browse/*checkout*/api/helperapi/impl/com/sun/star/helper/calc/ChartsImpl.java ChartsImpl.java]  ||  npower ||  in progress ||&lt;br /&gt;
|-&lt;br /&gt;
| XChartTitle.idl || xxxx  ||  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
| XDataLabel.idl || xxxx  ||  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
| XDataLabels.idl || xxxx  ||  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
| XFormatCondition.idl || xxxx  ||  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
| XFormatConditions.idl || xxxx  ||  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
| XFormat.idl || xxxx  ||  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
| XHPageBreak.idl || xxxx  ||  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
| XHPageBreaks.idl || xxxx  ||  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
| XName.idl || xxxx  || sola ||  ||&lt;br /&gt;
|-&lt;br /&gt;
| XNames.idl || xxxx  || sola ||  ||&lt;br /&gt;
|-&lt;br /&gt;
| XPageBreak.idl || xxxx  ||  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
|[http://api.openoffice.org/source/browse/api/helperapi/com/sun/star/helper/calc/XPageSetup.idl XPageSetup.idl] || [http://api.openoffice.org/source/browse/api/helperapi/impl/com/sun/star/helper/calc/PageSetupImpl.java PageSetupImpl]  || zhang ||&lt;br /&gt;
|-&lt;br /&gt;
|[http://api.openoffice.org/source/browse/api/helperapi/com/sun/star/helper/calc/XPane.idl XPane.idl] || [http://api.openoffice.org/source/browse/api/helperapi/impl/com/sun/star/helper/calc/PaneImpl.java PaneImpl]  || Jiao.Jianhua || calc complete||&lt;br /&gt;
|-&lt;br /&gt;
| XPoint.idl || xxxx  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
| XPoints.idl || xxxx  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
| XProtection.idl || xxxx  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
| XQueryTable.idl || xxxx  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
| XQueryTables.idl || xxxx  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
| XShape.idl || xxxx  || jiao.jianhua ||&lt;br /&gt;
|-&lt;br /&gt;
| XShapes.idl || xxxx  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
| XStyle.idl || xxxx  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
| XStyles.idl || xxxx  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
| XTitle.idl || xxxx  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
| XVPageBreak.idl || xxxx  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
| XVPageBreaks.idl|| xxxx  ||  ||&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Common Objects to port ===&lt;br /&gt;
{| style=&amp;quot;vertical-align:top; text-align:left; background-color:#efefef;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background-color:#d6d6d6;font-weight:bold;&amp;quot; &lt;br /&gt;
| Object || helperapi implementation name || Porting stared by? || Status ||&lt;br /&gt;
|-&lt;br /&gt;
| XAutoFilter.idl || xxxx || ||&lt;br /&gt;
|-&lt;br /&gt;
| XPictureFormat || xxxx || ||&lt;br /&gt;
|-&lt;br /&gt;
| XColorFormat || xxxx || ||&lt;br /&gt;
|-&lt;br /&gt;
| XPosSize || xxxx || Jiao.Jianhua || implemented in org.openoffice.XControl ||&lt;br /&gt;
|-&lt;br /&gt;
| XWindow || xxxx || ||&lt;br /&gt;
|-&lt;br /&gt;
| XFileSearch || xxxx || ||&lt;br /&gt;
|-&lt;br /&gt;
| XWrapFormat || xxxx || ||&lt;br /&gt;
|-&lt;br /&gt;
| XFillFormat || xxxx || ||&lt;br /&gt;
|-&lt;br /&gt;
| XShapeRange || xxxx || ||&lt;br /&gt;
|-&lt;br /&gt;
| XFoundFiles || xxxx || ||&lt;br /&gt;
|-&lt;br /&gt;
| XLineFormat || xxxx || ||&lt;br /&gt;
|-&lt;br /&gt;
| XTextFrame || xxxx || ||&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Missing attributes/methods to port ===&lt;br /&gt;
[[Application Object]]&lt;/div&gt;</summary>
		<author><name>Npower</name></author>
	</entry>
	<entry>
		<id>https://wiki.openoffice.org/w/index.php?title=Porting_notes&amp;diff=28838</id>
		<title>Porting notes</title>
		<link rel="alternate" type="text/html" href="https://wiki.openoffice.org/w/index.php?title=Porting_notes&amp;diff=28838"/>
		<updated>2007-03-22T14:26:33Z</updated>

		<summary type="html">&lt;p&gt;Npower: /* Calc Objects to port */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== Things to watch out for ===&lt;br /&gt;
* The mapping of the vba constants is different. Take for example the &amp;lt;tt&amp;gt;xlGuess&amp;lt;/tt&amp;gt; constant, in VBA it&amp;#039;s fully qualified name is &amp;lt;tt&amp;gt;Excel.XlYesNoGuess.xlGuess&amp;lt;/tt&amp;gt;, in the helperapi it&amp;#039;s &amp;lt;tt&amp;gt;com.sun.star.helper.constant.XlYesNoGuess.xlGuess&amp;lt;/tt&amp;gt; and in oovbaapi it&amp;#039;s &amp;lt;tt&amp;gt;org.openoffice.excel.XlYesNoGuess.xlGuess&amp;lt;/tt&amp;gt; &lt;br /&gt;
* All objects in the helperapi extend [http://api.openoffice.org/source/browse/*checkout*/api/helperapi/impl/com/sun/star/helper/HelperInterfaceAdaptor.java?rev=1.1 HelperInterfaceAdaptor], nothing similar (yet) exists in oovbaapi so this can be ignored in the implementation&lt;br /&gt;
* There are a quite few helper classes in the helperapi project e.g. &amp;lt;tt&amp;gt;RangeHelper.java&amp;lt;/tt&amp;gt; they shouldn&amp;#039;t be confused with the actual implementation objects we wish to port.&lt;br /&gt;
* classes and idl files of the same name can exist in multiple namespaces and this can be confusing. Because the helperapi was written with both the word and excel api(s) in mind there can be classes that share a common implementation and interfaces e.g.&lt;br /&gt;
** &amp;lt;tt&amp;gt;com/sun/star/helper/calc/XShape.idl&amp;lt;/tt&amp;gt;&lt;br /&gt;
** &amp;lt;tt&amp;gt;com/sun/star/helper/common/XShape.idl&amp;lt;/tt&amp;gt;&lt;br /&gt;
** &amp;lt;tt&amp;gt;com/sun/star/helper/writer/XShape.idl&amp;lt;/tt&amp;gt;&lt;br /&gt;
* Collections, these are handled differently see implementing a vba [[Porting notes#Collection|Collection]] in oovbaapi&lt;br /&gt;
* Every helperapi idl method defines [http://api.openoffice.org/source/browse/*checkout*/api/udkapi/com/sun/star/script/BasicErrorException.idl BasicErrorException] which allows and api method to transfer an error code and associated string paramater to basic.&lt;br /&gt;
&lt;br /&gt;
=== Hints for porting idl ===&lt;br /&gt;
==== Objects with Default Properties ====&lt;br /&gt;
This is something not handled by the helperapi but something you should be aware of when implementing a vba compatibility object. What is a default property, an example probably explains the concept better.&lt;br /&gt;
&lt;br /&gt;
 Range(&amp;quot;a1&amp;quot;) = &amp;quot;text&amp;quot;&lt;br /&gt;
&lt;br /&gt;
is a short cut for&lt;br /&gt;
&lt;br /&gt;
 Range(&amp;quot;a1&amp;quot;).Value = &amp;quot;text&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;Value&amp;lt;/tt&amp;gt; is a default property in the example above. We can provide similar behavior in basic with a compatibility api object ensuring the object implements [http://api.openoffice.org/source/browse/*checkout*/api/udkapi/com/sun/star/script/XDefaultProperty.idl XDefaultProperty.idl ]&lt;br /&gt;
&lt;br /&gt;
==== Objects with Default Method ====&lt;br /&gt;
&lt;br /&gt;
Similar to above some vba objects have a default method e.g. the &amp;lt;tt&amp;gt;Collection&amp;lt;/tt&amp;gt; object&lt;br /&gt;
&lt;br /&gt;
 set col = Sheets&lt;br /&gt;
 msgbox col(1).Name&lt;br /&gt;
&lt;br /&gt;
is a short cut for&lt;br /&gt;
&lt;br /&gt;
 set col = Sheets&lt;br /&gt;
 msgbox col.Item(1).Name&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;Item&amp;lt;/tt&amp;gt; is a default method in the example above. We can provide similar behavior in basic with a compatibility api object ensuring the object implements [http://api.openoffice.org/source/browse/*checkout*/api/udkapi/com/sun/star/script/XDefaultMethod.idl XDefaultMethod.idl ]&lt;br /&gt;
&lt;br /&gt;
==== Porting Collection objects ====&lt;br /&gt;
Generally all collection objects have a &amp;lt;tt&amp;gt;Count&amp;lt;/tt&amp;gt; and an &amp;lt;tt&amp;gt;Item&amp;lt;/tt&amp;gt; method and additionally the behaviour mentioned above. Also Collection objects can be used in a &amp;lt;tt&amp;gt;For Each&amp;lt;/tt&amp;gt; loop. To cater for that a helper implementation object &amp;lt;tt&amp;gt;ScVbaCollectionBaseImpl&amp;lt;/tt&amp;gt; provides the necessary information to the basic runtime to allow it to provide the classic vba &amp;lt;tt&amp;gt;Collection&amp;lt;/tt&amp;gt; class syntax support. It also requires to be initialised by an XIndexAccess implementation. Additionally the class inheriting from  &amp;lt;tt&amp;gt;ScVbaCollectionBaseImpl&amp;lt;/tt&amp;gt; must provide the  translation between the object iterated ( via XIndexAccess ) and the corrosponding compatibilty object returned to openoffice basic via the the &amp;lt;tt&amp;gt;createCollectionObject&amp;lt;/tt&amp;gt; method.&lt;br /&gt;
&lt;br /&gt;
A example of a ported &amp;lt;tt&amp;gt;Collection&amp;lt;/tt&amp;gt; object can be found in the [[Porting example]] section&lt;br /&gt;
&lt;br /&gt;
=== Calc Objects to port ===&lt;br /&gt;
{| style=&amp;quot;vertical-align:top; text-align:left; background-color:#efefef;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background-color:#d6d6d6;font-weight:bold;&amp;quot; &lt;br /&gt;
| Object || helperapi implementation name || Porting stared by || Status || Notes&lt;br /&gt;
|-&lt;br /&gt;
| XAutoFilter.idl || [http://api.openoffice.org/source/browse/*checkout*/api/helperapi/impl/com/sun/star/helper/calc/AutoFilterImpl.java AutoFilterImpl] ||  ||   || there is a partial (untested) implementation in the porting example section, would be nice for some one to finish&lt;br /&gt;
|-&lt;br /&gt;
| XFilter.idl || [http://api.openoffice.org/source/browse/*checkout*/api/helperapi/impl/com/sun/star/helper/calc/FilterImpl.java FilterImpl.java]  ||  ||  || see above.&lt;br /&gt;
|-&lt;br /&gt;
| XFilters.idl || [http://api.openoffice.org/source/browse/*checkout*/api/helperapi/impl/com/sun/star/helper/calc/FiltersImpl.java FiltersImpl.java] ||  ||  || see above.&lt;br /&gt;
|-&lt;br /&gt;
| XAxes.idl || xxxx  ||  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
| XAxis.idl || xxxx  ||  ||   ||&lt;br /&gt;
|-&lt;br /&gt;
| XAxisTitle.idl || xxxx  ||  ||   ||&lt;br /&gt;
|-&lt;br /&gt;
| XCalc.idl || xxxx  || not required for porting see [[Application Object]] ||  || This is not a &amp;#039;real&amp;#039; object but in a collection of global method/attributes that probably should be part of the XApplication.idl interface&lt;br /&gt;
|-&lt;br /&gt;
| XChartObject.idl || [http://api.openoffice.org/source/browse/*checkout*/api/helperapi/impl/com/sun/star/helper/calc/ChartObjectImpl.java ChartObjectImpl.java] || npower || in progress || &lt;br /&gt;
|-&lt;br /&gt;
| XChart.idl || [http://api.openoffice.org/source/browse/*checkout*/api/helperapi/impl/com/sun/star/helper/calc/ChartImpl.java ChartImpl.java] || npower || in progress || &lt;br /&gt;
|-&lt;br /&gt;
| XCharts.idl || xxxx  ||  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
| XChartTitle.idl || xxxx  ||  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
| XDataLabel.idl || xxxx  ||  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
| XDataLabels.idl || xxxx  ||  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
| XFormatCondition.idl || xxxx  ||  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
| XFormatConditions.idl || xxxx  ||  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
| XFormat.idl || xxxx  ||  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
| XHPageBreak.idl || xxxx  ||  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
| XHPageBreaks.idl || xxxx  ||  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
| XName.idl || xxxx  || sola ||  ||&lt;br /&gt;
|-&lt;br /&gt;
| XNames.idl || xxxx  || sola ||  ||&lt;br /&gt;
|-&lt;br /&gt;
| XPageBreak.idl || xxxx  ||  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
|[http://api.openoffice.org/source/browse/api/helperapi/com/sun/star/helper/calc/XPageSetup.idl XPageSetup.idl] || [http://api.openoffice.org/source/browse/api/helperapi/impl/com/sun/star/helper/calc/PageSetupImpl.java PageSetupImpl]  || zhang ||&lt;br /&gt;
|-&lt;br /&gt;
|[http://api.openoffice.org/source/browse/api/helperapi/com/sun/star/helper/calc/XPane.idl XPane.idl] || [http://api.openoffice.org/source/browse/api/helperapi/impl/com/sun/star/helper/calc/PaneImpl.java PaneImpl]  || Jiao.Jianhua || calc complete||&lt;br /&gt;
|-&lt;br /&gt;
| XPoint.idl || xxxx  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
| XPoints.idl || xxxx  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
| XProtection.idl || xxxx  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
| XQueryTable.idl || xxxx  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
| XQueryTables.idl || xxxx  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
| XShape.idl || xxxx  || jiao.jianhua ||&lt;br /&gt;
|-&lt;br /&gt;
| XShapes.idl || xxxx  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
| XStyle.idl || xxxx  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
| XStyles.idl || xxxx  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
| XTitle.idl || xxxx  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
| XVPageBreak.idl || xxxx  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
| XVPageBreaks.idl|| xxxx  ||  ||&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Common Objects to port ===&lt;br /&gt;
{| style=&amp;quot;vertical-align:top; text-align:left; background-color:#efefef;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background-color:#d6d6d6;font-weight:bold;&amp;quot; &lt;br /&gt;
| Object || helperapi implementation name || Porting stared by? || Status ||&lt;br /&gt;
|-&lt;br /&gt;
| XAutoFilter.idl || xxxx || ||&lt;br /&gt;
|-&lt;br /&gt;
| XPictureFormat || xxxx || ||&lt;br /&gt;
|-&lt;br /&gt;
| XColorFormat || xxxx || ||&lt;br /&gt;
|-&lt;br /&gt;
| XPosSize || xxxx || Jiao.Jianhua || implemented in org.openoffice.XControl ||&lt;br /&gt;
|-&lt;br /&gt;
| XWindow || xxxx || ||&lt;br /&gt;
|-&lt;br /&gt;
| XFileSearch || xxxx || ||&lt;br /&gt;
|-&lt;br /&gt;
| XWrapFormat || xxxx || ||&lt;br /&gt;
|-&lt;br /&gt;
| XFillFormat || xxxx || ||&lt;br /&gt;
|-&lt;br /&gt;
| XShapeRange || xxxx || ||&lt;br /&gt;
|-&lt;br /&gt;
| XFoundFiles || xxxx || ||&lt;br /&gt;
|-&lt;br /&gt;
| XLineFormat || xxxx || ||&lt;br /&gt;
|-&lt;br /&gt;
| XTextFrame || xxxx || ||&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Missing attributes/methods to port ===&lt;br /&gt;
[[Application Object]]&lt;/div&gt;</summary>
		<author><name>Npower</name></author>
	</entry>
	<entry>
		<id>https://wiki.openoffice.org/w/index.php?title=Porting_notes&amp;diff=28835</id>
		<title>Porting notes</title>
		<link rel="alternate" type="text/html" href="https://wiki.openoffice.org/w/index.php?title=Porting_notes&amp;diff=28835"/>
		<updated>2007-03-22T14:11:55Z</updated>

		<summary type="html">&lt;p&gt;Npower: /* Calc Objects to port */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== Things to watch out for ===&lt;br /&gt;
* The mapping of the vba constants is different. Take for example the &amp;lt;tt&amp;gt;xlGuess&amp;lt;/tt&amp;gt; constant, in VBA it&amp;#039;s fully qualified name is &amp;lt;tt&amp;gt;Excel.XlYesNoGuess.xlGuess&amp;lt;/tt&amp;gt;, in the helperapi it&amp;#039;s &amp;lt;tt&amp;gt;com.sun.star.helper.constant.XlYesNoGuess.xlGuess&amp;lt;/tt&amp;gt; and in oovbaapi it&amp;#039;s &amp;lt;tt&amp;gt;org.openoffice.excel.XlYesNoGuess.xlGuess&amp;lt;/tt&amp;gt; &lt;br /&gt;
* All objects in the helperapi extend [http://api.openoffice.org/source/browse/*checkout*/api/helperapi/impl/com/sun/star/helper/HelperInterfaceAdaptor.java?rev=1.1 HelperInterfaceAdaptor], nothing similar (yet) exists in oovbaapi so this can be ignored in the implementation&lt;br /&gt;
* There are a quite few helper classes in the helperapi project e.g. &amp;lt;tt&amp;gt;RangeHelper.java&amp;lt;/tt&amp;gt; they shouldn&amp;#039;t be confused with the actual implementation objects we wish to port.&lt;br /&gt;
* classes and idl files of the same name can exist in multiple namespaces and this can be confusing. Because the helperapi was written with both the word and excel api(s) in mind there can be classes that share a common implementation and interfaces e.g.&lt;br /&gt;
** &amp;lt;tt&amp;gt;com/sun/star/helper/calc/XShape.idl&amp;lt;/tt&amp;gt;&lt;br /&gt;
** &amp;lt;tt&amp;gt;com/sun/star/helper/common/XShape.idl&amp;lt;/tt&amp;gt;&lt;br /&gt;
** &amp;lt;tt&amp;gt;com/sun/star/helper/writer/XShape.idl&amp;lt;/tt&amp;gt;&lt;br /&gt;
* Collections, these are handled differently see implementing a vba [[Porting notes#Collection|Collection]] in oovbaapi&lt;br /&gt;
* Every helperapi idl method defines [http://api.openoffice.org/source/browse/*checkout*/api/udkapi/com/sun/star/script/BasicErrorException.idl BasicErrorException] which allows and api method to transfer an error code and associated string paramater to basic.&lt;br /&gt;
&lt;br /&gt;
=== Hints for porting idl ===&lt;br /&gt;
==== Objects with Default Properties ====&lt;br /&gt;
This is something not handled by the helperapi but something you should be aware of when implementing a vba compatibility object. What is a default property, an example probably explains the concept better.&lt;br /&gt;
&lt;br /&gt;
 Range(&amp;quot;a1&amp;quot;) = &amp;quot;text&amp;quot;&lt;br /&gt;
&lt;br /&gt;
is a short cut for&lt;br /&gt;
&lt;br /&gt;
 Range(&amp;quot;a1&amp;quot;).Value = &amp;quot;text&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;Value&amp;lt;/tt&amp;gt; is a default property in the example above. We can provide similar behavior in basic with a compatibility api object ensuring the object implements [http://api.openoffice.org/source/browse/*checkout*/api/udkapi/com/sun/star/script/XDefaultProperty.idl XDefaultProperty.idl ]&lt;br /&gt;
&lt;br /&gt;
==== Objects with Default Method ====&lt;br /&gt;
&lt;br /&gt;
Similar to above some vba objects have a default method e.g. the &amp;lt;tt&amp;gt;Collection&amp;lt;/tt&amp;gt; object&lt;br /&gt;
&lt;br /&gt;
 set col = Sheets&lt;br /&gt;
 msgbox col(1).Name&lt;br /&gt;
&lt;br /&gt;
is a short cut for&lt;br /&gt;
&lt;br /&gt;
 set col = Sheets&lt;br /&gt;
 msgbox col.Item(1).Name&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;Item&amp;lt;/tt&amp;gt; is a default method in the example above. We can provide similar behavior in basic with a compatibility api object ensuring the object implements [http://api.openoffice.org/source/browse/*checkout*/api/udkapi/com/sun/star/script/XDefaultMethod.idl XDefaultMethod.idl ]&lt;br /&gt;
&lt;br /&gt;
==== Porting Collection objects ====&lt;br /&gt;
Generally all collection objects have a &amp;lt;tt&amp;gt;Count&amp;lt;/tt&amp;gt; and an &amp;lt;tt&amp;gt;Item&amp;lt;/tt&amp;gt; method and additionally the behaviour mentioned above. Also Collection objects can be used in a &amp;lt;tt&amp;gt;For Each&amp;lt;/tt&amp;gt; loop. To cater for that a helper implementation object &amp;lt;tt&amp;gt;ScVbaCollectionBaseImpl&amp;lt;/tt&amp;gt; provides the necessary information to the basic runtime to allow it to provide the classic vba &amp;lt;tt&amp;gt;Collection&amp;lt;/tt&amp;gt; class syntax support. It also requires to be initialised by an XIndexAccess implementation. Additionally the class inheriting from  &amp;lt;tt&amp;gt;ScVbaCollectionBaseImpl&amp;lt;/tt&amp;gt; must provide the  translation between the object iterated ( via XIndexAccess ) and the corrosponding compatibilty object returned to openoffice basic via the the &amp;lt;tt&amp;gt;createCollectionObject&amp;lt;/tt&amp;gt; method.&lt;br /&gt;
&lt;br /&gt;
A example of a ported &amp;lt;tt&amp;gt;Collection&amp;lt;/tt&amp;gt; object can be found in the [[Porting example]] section&lt;br /&gt;
&lt;br /&gt;
=== Calc Objects to port ===&lt;br /&gt;
{| style=&amp;quot;vertical-align:top; text-align:left; background-color:#efefef;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background-color:#d6d6d6;font-weight:bold;&amp;quot; &lt;br /&gt;
| Object || helperapi implementation name || Porting stared by || Status || Notes&lt;br /&gt;
|-&lt;br /&gt;
| XAutoFilter.idl || [http://api.openoffice.org/source/browse/*checkout*/api/helperapi/impl/com/sun/star/helper/calc/AutoFilterImpl.java AutoFilterImpl] ||  ||   || there is a partial (untested) implementation in the porting example section, would be nice for some one to finish&lt;br /&gt;
|-&lt;br /&gt;
| XFilter.idl || [http://api.openoffice.org/source/browse/*checkout*/api/helperapi/impl/com/sun/star/helper/calc/FilterImpl.java FilterImpl.java]  ||  ||  || see above.&lt;br /&gt;
|-&lt;br /&gt;
| XFilters.idl || [http://api.openoffice.org/source/browse/*checkout*/api/helperapi/impl/com/sun/star/helper/calc/FiltersImpl.java FiltersImpl.java] ||  ||  || see above.&lt;br /&gt;
|-&lt;br /&gt;
| XAxes.idl || xxxx  ||  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
| XAxis.idl || xxxx  ||  ||   ||&lt;br /&gt;
|-&lt;br /&gt;
| XAxisTitle.idl || xxxx  ||  ||   ||&lt;br /&gt;
|-&lt;br /&gt;
| XCalc.idl || xxxx  || not required for porting see [[Application Object]] ||  || This is not a &amp;#039;real&amp;#039; object but in a collection of global method/attributes that probably should be part of the XApplication.idl interface&lt;br /&gt;
|-&lt;br /&gt;
| XChart.idl || [http://api.openoffice.org/source/browse/*checkout*/api/helperapi/impl/com/sun/star/helper/calc/ChartImpl.java ChartImpl.java] || npower || in progress || &lt;br /&gt;
|-&lt;br /&gt;
| XCharts.idl || xxxx  ||  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
| XChartTitle.idl || xxxx  ||  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
| XDataLabel.idl || xxxx  ||  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
| XDataLabels.idl || xxxx  ||  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
| XFormatCondition.idl || xxxx  ||  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
| XFormatConditions.idl || xxxx  ||  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
| XFormat.idl || xxxx  ||  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
| XHPageBreak.idl || xxxx  ||  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
| XHPageBreaks.idl || xxxx  ||  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
| XName.idl || xxxx  || sola ||  ||&lt;br /&gt;
|-&lt;br /&gt;
| XNames.idl || xxxx  || sola ||  ||&lt;br /&gt;
|-&lt;br /&gt;
| XPageBreak.idl || xxxx  ||  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
|[http://api.openoffice.org/source/browse/api/helperapi/com/sun/star/helper/calc/XPageSetup.idl XPageSetup.idl] || [http://api.openoffice.org/source/browse/api/helperapi/impl/com/sun/star/helper/calc/PageSetupImpl.java PageSetupImpl]  || zhang ||&lt;br /&gt;
|-&lt;br /&gt;
|[http://api.openoffice.org/source/browse/api/helperapi/com/sun/star/helper/calc/XPane.idl XPane.idl] || [http://api.openoffice.org/source/browse/api/helperapi/impl/com/sun/star/helper/calc/PaneImpl.java PaneImpl]  || Jiao.Jianhua || calc complete||&lt;br /&gt;
|-&lt;br /&gt;
| XPoint.idl || xxxx  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
| XPoints.idl || xxxx  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
| XProtection.idl || xxxx  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
| XQueryTable.idl || xxxx  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
| XQueryTables.idl || xxxx  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
| XShape.idl || xxxx  || jiao.jianhua ||&lt;br /&gt;
|-&lt;br /&gt;
| XShapes.idl || xxxx  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
| XStyle.idl || xxxx  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
| XStyles.idl || xxxx  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
| XTitle.idl || xxxx  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
| XVPageBreak.idl || xxxx  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
| XVPageBreaks.idl|| xxxx  ||  ||&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Common Objects to port ===&lt;br /&gt;
{| style=&amp;quot;vertical-align:top; text-align:left; background-color:#efefef;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background-color:#d6d6d6;font-weight:bold;&amp;quot; &lt;br /&gt;
| Object || helperapi implementation name || Porting stared by? || Status ||&lt;br /&gt;
|-&lt;br /&gt;
| XAutoFilter.idl || xxxx || ||&lt;br /&gt;
|-&lt;br /&gt;
| XPictureFormat || xxxx || ||&lt;br /&gt;
|-&lt;br /&gt;
| XColorFormat || xxxx || ||&lt;br /&gt;
|-&lt;br /&gt;
| XPosSize || xxxx || Jiao.Jianhua || implemented in org.openoffice.XControl ||&lt;br /&gt;
|-&lt;br /&gt;
| XWindow || xxxx || ||&lt;br /&gt;
|-&lt;br /&gt;
| XFileSearch || xxxx || ||&lt;br /&gt;
|-&lt;br /&gt;
| XWrapFormat || xxxx || ||&lt;br /&gt;
|-&lt;br /&gt;
| XFillFormat || xxxx || ||&lt;br /&gt;
|-&lt;br /&gt;
| XShapeRange || xxxx || ||&lt;br /&gt;
|-&lt;br /&gt;
| XFoundFiles || xxxx || ||&lt;br /&gt;
|-&lt;br /&gt;
| XLineFormat || xxxx || ||&lt;br /&gt;
|-&lt;br /&gt;
| XTextFrame || xxxx || ||&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Missing attributes/methods to port ===&lt;br /&gt;
[[Application Object]]&lt;/div&gt;</summary>
		<author><name>Npower</name></author>
	</entry>
	<entry>
		<id>https://wiki.openoffice.org/w/index.php?title=Porting_notes&amp;diff=28830</id>
		<title>Porting notes</title>
		<link rel="alternate" type="text/html" href="https://wiki.openoffice.org/w/index.php?title=Porting_notes&amp;diff=28830"/>
		<updated>2007-03-22T11:38:56Z</updated>

		<summary type="html">&lt;p&gt;Npower: /* Calc Objects to port */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== Things to watch out for ===&lt;br /&gt;
* The mapping of the vba constants is different. Take for example the &amp;lt;tt&amp;gt;xlGuess&amp;lt;/tt&amp;gt; constant, in VBA it&amp;#039;s fully qualified name is &amp;lt;tt&amp;gt;Excel.XlYesNoGuess.xlGuess&amp;lt;/tt&amp;gt;, in the helperapi it&amp;#039;s &amp;lt;tt&amp;gt;com.sun.star.helper.constant.XlYesNoGuess.xlGuess&amp;lt;/tt&amp;gt; and in oovbaapi it&amp;#039;s &amp;lt;tt&amp;gt;org.openoffice.excel.XlYesNoGuess.xlGuess&amp;lt;/tt&amp;gt; &lt;br /&gt;
* All objects in the helperapi extend [http://api.openoffice.org/source/browse/*checkout*/api/helperapi/impl/com/sun/star/helper/HelperInterfaceAdaptor.java?rev=1.1 HelperInterfaceAdaptor], nothing similar (yet) exists in oovbaapi so this can be ignored in the implementation&lt;br /&gt;
* There are a quite few helper classes in the helperapi project e.g. &amp;lt;tt&amp;gt;RangeHelper.java&amp;lt;/tt&amp;gt; they shouldn&amp;#039;t be confused with the actual implementation objects we wish to port.&lt;br /&gt;
* classes and idl files of the same name can exist in multiple namespaces and this can be confusing. Because the helperapi was written with both the word and excel api(s) in mind there can be classes that share a common implementation and interfaces e.g.&lt;br /&gt;
** &amp;lt;tt&amp;gt;com/sun/star/helper/calc/XShape.idl&amp;lt;/tt&amp;gt;&lt;br /&gt;
** &amp;lt;tt&amp;gt;com/sun/star/helper/common/XShape.idl&amp;lt;/tt&amp;gt;&lt;br /&gt;
** &amp;lt;tt&amp;gt;com/sun/star/helper/writer/XShape.idl&amp;lt;/tt&amp;gt;&lt;br /&gt;
* Collections, these are handled differently see implementing a vba [[Porting notes#Collection|Collection]] in oovbaapi&lt;br /&gt;
* Every helperapi idl method defines [http://api.openoffice.org/source/browse/*checkout*/api/udkapi/com/sun/star/script/BasicErrorException.idl BasicErrorException] which allows and api method to transfer an error code and associated string paramater to basic.&lt;br /&gt;
&lt;br /&gt;
=== Hints for porting idl ===&lt;br /&gt;
==== Objects with Default Properties ====&lt;br /&gt;
This is something not handled by the helperapi but something you should be aware of when implementing a vba compatibility object. What is a default property, an example probably explains the concept better.&lt;br /&gt;
&lt;br /&gt;
 Range(&amp;quot;a1&amp;quot;) = &amp;quot;text&amp;quot;&lt;br /&gt;
&lt;br /&gt;
is a short cut for&lt;br /&gt;
&lt;br /&gt;
 Range(&amp;quot;a1&amp;quot;).Value = &amp;quot;text&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;Value&amp;lt;/tt&amp;gt; is a default property in the example above. We can provide similar behavior in basic with a compatibility api object ensuring the object implements [http://api.openoffice.org/source/browse/*checkout*/api/udkapi/com/sun/star/script/XDefaultProperty.idl XDefaultProperty.idl ]&lt;br /&gt;
&lt;br /&gt;
==== Objects with Default Method ====&lt;br /&gt;
&lt;br /&gt;
Similar to above some vba objects have a default method e.g. the &amp;lt;tt&amp;gt;Collection&amp;lt;/tt&amp;gt; object&lt;br /&gt;
&lt;br /&gt;
 set col = Sheets&lt;br /&gt;
 msgbox col(1).Name&lt;br /&gt;
&lt;br /&gt;
is a short cut for&lt;br /&gt;
&lt;br /&gt;
 set col = Sheets&lt;br /&gt;
 msgbox col.Item(1).Name&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;Item&amp;lt;/tt&amp;gt; is a default method in the example above. We can provide similar behavior in basic with a compatibility api object ensuring the object implements [http://api.openoffice.org/source/browse/*checkout*/api/udkapi/com/sun/star/script/XDefaultMethod.idl XDefaultMethod.idl ]&lt;br /&gt;
&lt;br /&gt;
==== Porting Collection objects ====&lt;br /&gt;
Generally all collection objects have a &amp;lt;tt&amp;gt;Count&amp;lt;/tt&amp;gt; and an &amp;lt;tt&amp;gt;Item&amp;lt;/tt&amp;gt; method and additionally the behaviour mentioned above. Also Collection objects can be used in a &amp;lt;tt&amp;gt;For Each&amp;lt;/tt&amp;gt; loop. To cater for that a helper implementation object &amp;lt;tt&amp;gt;ScVbaCollectionBaseImpl&amp;lt;/tt&amp;gt; provides the necessary information to the basic runtime to allow it to provide the classic vba &amp;lt;tt&amp;gt;Collection&amp;lt;/tt&amp;gt; class syntax support. It also requires to be initialised by an XIndexAccess implementation. Additionally the class inheriting from  &amp;lt;tt&amp;gt;ScVbaCollectionBaseImpl&amp;lt;/tt&amp;gt; must provide the  translation between the object iterated ( via XIndexAccess ) and the corrosponding compatibilty object returned to openoffice basic via the the &amp;lt;tt&amp;gt;createCollectionObject&amp;lt;/tt&amp;gt; method.&lt;br /&gt;
&lt;br /&gt;
A example of a ported &amp;lt;tt&amp;gt;Collection&amp;lt;/tt&amp;gt; object can be found in the [[Porting example]] section&lt;br /&gt;
&lt;br /&gt;
=== Calc Objects to port ===&lt;br /&gt;
{| style=&amp;quot;vertical-align:top; text-align:left; background-color:#efefef;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background-color:#d6d6d6;font-weight:bold;&amp;quot; &lt;br /&gt;
| Object || helperapi implementation name || Porting stared by || Status || Notes&lt;br /&gt;
|-&lt;br /&gt;
| XAutoFilter.idl || [http://api.openoffice.org/source/browse/*checkout*/api/helperapi/impl/com/sun/star/helper/calc/AutoFilterImpl.java AutoFilterImpl] ||  ||   || there is a partial (untested) implementation in the porting example section, would be nice for some one to finish&lt;br /&gt;
|-&lt;br /&gt;
| XFilter.idl || [http://api.openoffice.org/source/browse/*checkout*/api/helperapi/impl/com/sun/star/helper/calc/FilterImpl.java FilterImpl.java]  ||  ||  || see above.&lt;br /&gt;
|-&lt;br /&gt;
| XFilters.idl || [http://api.openoffice.org/source/browse/*checkout*/api/helperapi/impl/com/sun/star/helper/calc/FiltersImpl.java FiltersImpl.java] ||  ||  || see above.&lt;br /&gt;
|-&lt;br /&gt;
| XAxes.idl || xxxx  ||  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
| XAxis.idl || xxxx  ||  ||   ||&lt;br /&gt;
|-&lt;br /&gt;
| XAxisTitle.idl || xxxx  ||  ||   ||&lt;br /&gt;
|-&lt;br /&gt;
| XCalc.idl || xxxx  || not required for porting see [[Application Object]] ||  || This is not a &amp;#039;real&amp;#039; object but in a collection of global method/attributes that probably should be part of the XApplication.idl interface&lt;br /&gt;
|-&lt;br /&gt;
| XCharts.idl || xxxx  ||  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
| XChartTitle.idl || xxxx  ||  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
| XDataLabel.idl || xxxx  ||  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
| XDataLabels.idl || xxxx  ||  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
| XFormatCondition.idl || xxxx  ||  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
| XFormatConditions.idl || xxxx  ||  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
| XFormat.idl || xxxx  ||  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
| XHPageBreak.idl || xxxx  ||  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
| XHPageBreaks.idl || xxxx  ||  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
| XName.idl || xxxx  ||  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
| XNames.idl || xxxx  ||  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
| XPageBreak.idl || xxxx  ||  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
|[http://api.openoffice.org/source/browse/api/helperapi/com/sun/star/helper/calc/XPageSetup.idl XPageSetup.idl] || [http://api.openoffice.org/source/browse/api/helperapi/impl/com/sun/star/helper/calc/PageSetupImpl.java PageSetupImpl]  || zhang ||&lt;br /&gt;
|-&lt;br /&gt;
|[http://api.openoffice.org/source/browse/api/helperapi/com/sun/star/helper/calc/XPane.idl XPane.idl] || [http://api.openoffice.org/source/browse/api/helperapi/impl/com/sun/star/helper/calc/PaneImpl.java PaneImpl]  || Jiao.Jianhua || calc complete||&lt;br /&gt;
|-&lt;br /&gt;
| XPoint.idl || xxxx  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
| XPoints.idl || xxxx  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
| XProtection.idl || xxxx  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
| XQueryTable.idl || xxxx  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
| XQueryTables.idl || xxxx  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
| XShape.idl || xxxx  || jiao.jianhua ||&lt;br /&gt;
|-&lt;br /&gt;
| XShapes.idl || xxxx  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
| XStyle.idl || xxxx  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
| XStyles.idl || xxxx  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
| XTitle.idl || xxxx  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
| XVPageBreak.idl || xxxx  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
| XVPageBreaks.idl|| xxxx  ||  ||&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Common Objects to port ===&lt;br /&gt;
{| style=&amp;quot;vertical-align:top; text-align:left; background-color:#efefef;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background-color:#d6d6d6;font-weight:bold;&amp;quot; &lt;br /&gt;
| Object || helperapi implementation name || Porting stared by? || Status ||&lt;br /&gt;
|-&lt;br /&gt;
| XAutoFilter.idl || xxxx || ||&lt;br /&gt;
|-&lt;br /&gt;
| XPictureFormat || xxxx || ||&lt;br /&gt;
|-&lt;br /&gt;
| XColorFormat || xxxx || ||&lt;br /&gt;
|-&lt;br /&gt;
| XPosSize || xxxx || Jiao.Jianhua || implemented in org.openoffice.XControl ||&lt;br /&gt;
|-&lt;br /&gt;
| XWindow || xxxx || ||&lt;br /&gt;
|-&lt;br /&gt;
| XFileSearch || xxxx || ||&lt;br /&gt;
|-&lt;br /&gt;
| XWrapFormat || xxxx || ||&lt;br /&gt;
|-&lt;br /&gt;
| XFillFormat || xxxx || ||&lt;br /&gt;
|-&lt;br /&gt;
| XShapeRange || xxxx || ||&lt;br /&gt;
|-&lt;br /&gt;
| XFoundFiles || xxxx || ||&lt;br /&gt;
|-&lt;br /&gt;
| XLineFormat || xxxx || ||&lt;br /&gt;
|-&lt;br /&gt;
| XTextFrame || xxxx || ||&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Missing attributes/methods to port ===&lt;br /&gt;
[[Application Object]]&lt;/div&gt;</summary>
		<author><name>Npower</name></author>
	</entry>
	<entry>
		<id>https://wiki.openoffice.org/w/index.php?title=Porting_notes&amp;diff=28829</id>
		<title>Porting notes</title>
		<link rel="alternate" type="text/html" href="https://wiki.openoffice.org/w/index.php?title=Porting_notes&amp;diff=28829"/>
		<updated>2007-03-22T11:33:56Z</updated>

		<summary type="html">&lt;p&gt;Npower: /* Application Object */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== Things to watch out for ===&lt;br /&gt;
* The mapping of the vba constants is different. Take for example the &amp;lt;tt&amp;gt;xlGuess&amp;lt;/tt&amp;gt; constant, in VBA it&amp;#039;s fully qualified name is &amp;lt;tt&amp;gt;Excel.XlYesNoGuess.xlGuess&amp;lt;/tt&amp;gt;, in the helperapi it&amp;#039;s &amp;lt;tt&amp;gt;com.sun.star.helper.constant.XlYesNoGuess.xlGuess&amp;lt;/tt&amp;gt; and in oovbaapi it&amp;#039;s &amp;lt;tt&amp;gt;org.openoffice.excel.XlYesNoGuess.xlGuess&amp;lt;/tt&amp;gt; &lt;br /&gt;
* All objects in the helperapi extend [http://api.openoffice.org/source/browse/*checkout*/api/helperapi/impl/com/sun/star/helper/HelperInterfaceAdaptor.java?rev=1.1 HelperInterfaceAdaptor], nothing similar (yet) exists in oovbaapi so this can be ignored in the implementation&lt;br /&gt;
* There are a quite few helper classes in the helperapi project e.g. &amp;lt;tt&amp;gt;RangeHelper.java&amp;lt;/tt&amp;gt; they shouldn&amp;#039;t be confused with the actual implementation objects we wish to port.&lt;br /&gt;
* classes and idl files of the same name can exist in multiple namespaces and this can be confusing. Because the helperapi was written with both the word and excel api(s) in mind there can be classes that share a common implementation and interfaces e.g.&lt;br /&gt;
** &amp;lt;tt&amp;gt;com/sun/star/helper/calc/XShape.idl&amp;lt;/tt&amp;gt;&lt;br /&gt;
** &amp;lt;tt&amp;gt;com/sun/star/helper/common/XShape.idl&amp;lt;/tt&amp;gt;&lt;br /&gt;
** &amp;lt;tt&amp;gt;com/sun/star/helper/writer/XShape.idl&amp;lt;/tt&amp;gt;&lt;br /&gt;
* Collections, these are handled differently see implementing a vba [[Porting notes#Collection|Collection]] in oovbaapi&lt;br /&gt;
* Every helperapi idl method defines [http://api.openoffice.org/source/browse/*checkout*/api/udkapi/com/sun/star/script/BasicErrorException.idl BasicErrorException] which allows and api method to transfer an error code and associated string paramater to basic.&lt;br /&gt;
&lt;br /&gt;
=== Hints for porting idl ===&lt;br /&gt;
==== Objects with Default Properties ====&lt;br /&gt;
This is something not handled by the helperapi but something you should be aware of when implementing a vba compatibility object. What is a default property, an example probably explains the concept better.&lt;br /&gt;
&lt;br /&gt;
 Range(&amp;quot;a1&amp;quot;) = &amp;quot;text&amp;quot;&lt;br /&gt;
&lt;br /&gt;
is a short cut for&lt;br /&gt;
&lt;br /&gt;
 Range(&amp;quot;a1&amp;quot;).Value = &amp;quot;text&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;Value&amp;lt;/tt&amp;gt; is a default property in the example above. We can provide similar behavior in basic with a compatibility api object ensuring the object implements [http://api.openoffice.org/source/browse/*checkout*/api/udkapi/com/sun/star/script/XDefaultProperty.idl XDefaultProperty.idl ]&lt;br /&gt;
&lt;br /&gt;
==== Objects with Default Method ====&lt;br /&gt;
&lt;br /&gt;
Similar to above some vba objects have a default method e.g. the &amp;lt;tt&amp;gt;Collection&amp;lt;/tt&amp;gt; object&lt;br /&gt;
&lt;br /&gt;
 set col = Sheets&lt;br /&gt;
 msgbox col(1).Name&lt;br /&gt;
&lt;br /&gt;
is a short cut for&lt;br /&gt;
&lt;br /&gt;
 set col = Sheets&lt;br /&gt;
 msgbox col.Item(1).Name&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;Item&amp;lt;/tt&amp;gt; is a default method in the example above. We can provide similar behavior in basic with a compatibility api object ensuring the object implements [http://api.openoffice.org/source/browse/*checkout*/api/udkapi/com/sun/star/script/XDefaultMethod.idl XDefaultMethod.idl ]&lt;br /&gt;
&lt;br /&gt;
==== Porting Collection objects ====&lt;br /&gt;
Generally all collection objects have a &amp;lt;tt&amp;gt;Count&amp;lt;/tt&amp;gt; and an &amp;lt;tt&amp;gt;Item&amp;lt;/tt&amp;gt; method and additionally the behaviour mentioned above. Also Collection objects can be used in a &amp;lt;tt&amp;gt;For Each&amp;lt;/tt&amp;gt; loop. To cater for that a helper implementation object &amp;lt;tt&amp;gt;ScVbaCollectionBaseImpl&amp;lt;/tt&amp;gt; provides the necessary information to the basic runtime to allow it to provide the classic vba &amp;lt;tt&amp;gt;Collection&amp;lt;/tt&amp;gt; class syntax support. It also requires to be initialised by an XIndexAccess implementation. Additionally the class inheriting from  &amp;lt;tt&amp;gt;ScVbaCollectionBaseImpl&amp;lt;/tt&amp;gt; must provide the  translation between the object iterated ( via XIndexAccess ) and the corrosponding compatibilty object returned to openoffice basic via the the &amp;lt;tt&amp;gt;createCollectionObject&amp;lt;/tt&amp;gt; method.&lt;br /&gt;
&lt;br /&gt;
A example of a ported &amp;lt;tt&amp;gt;Collection&amp;lt;/tt&amp;gt; object can be found in the [[Porting example]] section&lt;br /&gt;
&lt;br /&gt;
=== Calc Objects to port ===&lt;br /&gt;
{| style=&amp;quot;vertical-align:top; text-align:left; background-color:#efefef;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background-color:#d6d6d6;font-weight:bold;&amp;quot; &lt;br /&gt;
| Object || helperapi implementation name || Porting stared by || Status || Notes&lt;br /&gt;
|-&lt;br /&gt;
| XAutoFilter.idl || [http://api.openoffice.org/source/browse/*checkout*/api/helperapi/impl/com/sun/star/helper/calc/AutoFilterImpl.java AutoFilterImpl] ||  ||   || there is a partial (untested) implementation in the porting example section, would be nice for some one to finish&lt;br /&gt;
|-&lt;br /&gt;
| XFilter.idl || [http://api.openoffice.org/source/browse/*checkout*/api/helperapi/impl/com/sun/star/helper/calc/FilterImpl.java FilterImpl.java]  ||  ||  || see above.&lt;br /&gt;
|-&lt;br /&gt;
| XFilters.idl || [http://api.openoffice.org/source/browse/*checkout*/api/helperapi/impl/com/sun/star/helper/calc/FiltersImpl.java FiltersImpl.java] ||  ||  || see above.&lt;br /&gt;
|-&lt;br /&gt;
| XAxes.idl || xxxx  ||  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
| XAxis.idl || xxxx  ||  ||   ||&lt;br /&gt;
|-&lt;br /&gt;
| XAxisTitle.idl || xxxx  ||  ||   ||&lt;br /&gt;
|-&lt;br /&gt;
| XCalc.idl || xxxx  ||  ||  || This is not a &amp;#039;real&amp;#039; object but in a collection of global method/attributes that probably should be part of the XApplication.idl interface&lt;br /&gt;
|-&lt;br /&gt;
| XCharts.idl || xxxx  ||  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
| XChartTitle.idl || xxxx  ||  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
| XDataLabel.idl || xxxx  ||  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
| XDataLabels.idl || xxxx  ||  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
| XFormatCondition.idl || xxxx  ||  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
| XFormatConditions.idl || xxxx  ||  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
| XFormat.idl || xxxx  ||  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
| XHPageBreak.idl || xxxx  ||  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
| XHPageBreaks.idl || xxxx  ||  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
| XName.idl || xxxx  ||  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
| XNames.idl || xxxx  ||  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
| XPageBreak.idl || xxxx  ||  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
|[http://api.openoffice.org/source/browse/api/helperapi/com/sun/star/helper/calc/XPageSetup.idl XPageSetup.idl] || [http://api.openoffice.org/source/browse/api/helperapi/impl/com/sun/star/helper/calc/PageSetupImpl.java PageSetupImpl]  || zhang ||&lt;br /&gt;
|-&lt;br /&gt;
|[http://api.openoffice.org/source/browse/api/helperapi/com/sun/star/helper/calc/XPane.idl XPane.idl] || [http://api.openoffice.org/source/browse/api/helperapi/impl/com/sun/star/helper/calc/PaneImpl.java PaneImpl]  || Jiao.Jianhua || calc complete||&lt;br /&gt;
|-&lt;br /&gt;
| XPoint.idl || xxxx  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
| XPoints.idl || xxxx  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
| XProtection.idl || xxxx  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
| XQueryTable.idl || xxxx  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
| XQueryTables.idl || xxxx  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
| XShape.idl || xxxx  || jiao.jianhua ||&lt;br /&gt;
|-&lt;br /&gt;
| XShapes.idl || xxxx  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
| XStyle.idl || xxxx  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
| XStyles.idl || xxxx  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
| XTitle.idl || xxxx  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
| XVPageBreak.idl || xxxx  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
| XVPageBreaks.idl|| xxxx  ||  ||&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Common Objects to port ===&lt;br /&gt;
{| style=&amp;quot;vertical-align:top; text-align:left; background-color:#efefef;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background-color:#d6d6d6;font-weight:bold;&amp;quot; &lt;br /&gt;
| Object || helperapi implementation name || Porting stared by? || Status ||&lt;br /&gt;
|-&lt;br /&gt;
| XAutoFilter.idl || xxxx || ||&lt;br /&gt;
|-&lt;br /&gt;
| XPictureFormat || xxxx || ||&lt;br /&gt;
|-&lt;br /&gt;
| XColorFormat || xxxx || ||&lt;br /&gt;
|-&lt;br /&gt;
| XPosSize || xxxx || Jiao.Jianhua || implemented in org.openoffice.XControl ||&lt;br /&gt;
|-&lt;br /&gt;
| XWindow || xxxx || ||&lt;br /&gt;
|-&lt;br /&gt;
| XFileSearch || xxxx || ||&lt;br /&gt;
|-&lt;br /&gt;
| XWrapFormat || xxxx || ||&lt;br /&gt;
|-&lt;br /&gt;
| XFillFormat || xxxx || ||&lt;br /&gt;
|-&lt;br /&gt;
| XShapeRange || xxxx || ||&lt;br /&gt;
|-&lt;br /&gt;
| XFoundFiles || xxxx || ||&lt;br /&gt;
|-&lt;br /&gt;
| XLineFormat || xxxx || ||&lt;br /&gt;
|-&lt;br /&gt;
| XTextFrame || xxxx || ||&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Missing attributes/methods to port ===&lt;br /&gt;
[[Application Object]]&lt;/div&gt;</summary>
		<author><name>Npower</name></author>
	</entry>
	<entry>
		<id>https://wiki.openoffice.org/w/index.php?title=Application_Object&amp;diff=28828</id>
		<title>Application Object</title>
		<link rel="alternate" type="text/html" href="https://wiki.openoffice.org/w/index.php?title=Application_Object&amp;diff=28828"/>
		<updated>2007-03-22T11:33:44Z</updated>

		<summary type="html">&lt;p&gt;Npower: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== Application Object ===&lt;br /&gt;
{| style=&amp;quot;vertical-align:top; text-align:left; background-color:#efefef;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background-color:#d6d6d6;font-weight:bold;&amp;quot; &lt;br /&gt;
| method/property name || helperapi idl:implementation || Porting stared by? || Status ||&lt;br /&gt;
|-&lt;br /&gt;
| NewWorkbook || XCalc.idl:CalcImpl || ||&lt;br /&gt;
|-&lt;br /&gt;
| Rows || XCalc.idl:CalcImpl || ||&lt;br /&gt;
|-&lt;br /&gt;
| Columns || XCalc.idl:CalcImpl || ||&lt;br /&gt;
|-&lt;br /&gt;
| Cells || XCalc.idl:CalcImpl || ||&lt;br /&gt;
|-&lt;br /&gt;
| ActivePrinter || XCalc.idl:CalcImpl || ||&lt;br /&gt;
|- &lt;br /&gt;
| Calculate || XCalc.idl:CalcImpl || || &lt;br /&gt;
|-&lt;br /&gt;
| DisplayAlerts || XCalc.idl:CalcImpl || || is only a stub in helperapi&lt;br /&gt;
|-&lt;br /&gt;
| Name || XCalc.idl:CalcImpl || ||&lt;br /&gt;
|-&lt;br /&gt;
| Intersect || XCalc.idl:CalcImpl || || &lt;br /&gt;
|-&lt;br /&gt;
| Run || XCalc.idl:CalcImpl || || &lt;br /&gt;
|-&lt;br /&gt;
| Width || XCalc.idl:CalcImpl || || &lt;br /&gt;
|-&lt;br /&gt;
| Visible || XCalc.idl:CalcImpl || ||&lt;br /&gt;
|-&lt;br /&gt;
| Height || XCalc.idl:CalcImpl || || &lt;br /&gt;
|-&lt;br /&gt;
| Top || XCalc.idl:CalcImpl || ||&lt;br /&gt;
|-&lt;br /&gt;
| Left || XCalc.idl:CalcImpl || ||&lt;br /&gt;
|-&lt;br /&gt;
| Path || XCalc.idl:CalcImpl || ||&lt;br /&gt;
|-&lt;br /&gt;
| InchesToPoints || XCalc.idl:CalcImpl || ||&lt;br /&gt;
|-&lt;br /&gt;
| CentimetersToPoints || XCalc.idl:CalcImpl || ||&lt;br /&gt;
|-&lt;br /&gt;
| DefaultFilePath || XCalc.idl:CalcImpl || ||&lt;br /&gt;
|-&lt;br /&gt;
| Visible || XCalc.idl:CalcImpl || ||&lt;br /&gt;
|-&lt;br /&gt;
| LibraryPath|| XCalc.idl:CalcImpl || ||&lt;br /&gt;
|-&lt;br /&gt;
| TemplatesPath || XCalc.idl:CalcImpl || ||&lt;br /&gt;
|-&lt;br /&gt;
| DisplayCommentIndicator || XCalc.idl:CalcImpl || ||&lt;br /&gt;
|-&lt;br /&gt;
| Iteration || XCalc.idl:CalcImpl || ||&lt;br /&gt;
|-&lt;br /&gt;
| MaxChange || XCalc.idl:CalcImpl || ||&lt;br /&gt;
|-&lt;br /&gt;
| MaxIterations || XCalc.idl:CalcImpl || ||&lt;br /&gt;
|-&lt;br /&gt;
| InputBox || XCalc.idl:CalcImpl || ||&lt;br /&gt;
|-&lt;br /&gt;
| Names || XCalc.idl:CalcImpl || || needs Name &amp;amp; Names implementations&lt;br /&gt;
|-&lt;br /&gt;
| ConvertFormula || XCalc.idl:CalcImpl || ||&lt;br /&gt;
|-&lt;br /&gt;
| Assistant || XCalc.idl:CalcImpl || ||&lt;br /&gt;
|-&lt;br /&gt;
| CommandBars || XCalc.idl:CalcImpl || || needs the CommandBar implementation also&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Npower</name></author>
	</entry>
	<entry>
		<id>https://wiki.openoffice.org/w/index.php?title=VBA&amp;diff=28827</id>
		<title>VBA</title>
		<link rel="alternate" type="text/html" href="https://wiki.openoffice.org/w/index.php?title=VBA&amp;diff=28827"/>
		<updated>2007-03-22T11:31:32Z</updated>

		<summary type="html">&lt;p&gt;Npower: /* Porting Objects from the HelperApi */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
[[VBA zh|中]]&lt;br /&gt;
&lt;br /&gt;
[http://vba.openoffice.org VBA interoperability] project is a joint Novell &amp;amp; Sun incubator project whose aim is to deliver a way to run Excel and Word macros natively in imported documents.&lt;br /&gt;
* Noel Power ( co-lead )&lt;br /&gt;
* Andreas Breagas ( co-lead )&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Visual Basic for Applications&amp;#039;&amp;#039;&amp;#039; (&amp;#039;&amp;#039;&amp;#039;VBA&amp;#039;&amp;#039;&amp;#039;) is an implementation of Microsoft&amp;#039;s  [[wikipedia:Visual Basic|Visual Basic]] which is built into all Microsoft Office applications. &lt;br /&gt;
 &lt;br /&gt;
== Latest news ==&lt;br /&gt;
&lt;br /&gt;
* Update Wiki Page with latest info&lt;br /&gt;
* [http://blogs.sun.com/GullFOSS/entry/sun_and_novell_work_together Novell and Sun to work together] on the VBA incubator project&lt;br /&gt;
* I am delighted that Andreas Bregas now joins me to co-lead the vba incubator project&lt;br /&gt;
* cws [http://eis.services.openoffice.org/EIS2/cws.ShowCWS?Path=SRC680%2Fnpower6 npower6] will contain the initial code drop&lt;br /&gt;
&lt;br /&gt;
== Terminology ==&lt;br /&gt;
&lt;br /&gt;
* [[helperapi]] - The compatibility API generously donated by Sun that was part of their migration toolkit &lt;br /&gt;
* [[oovbaapi]] - the ooo-build vba interoperability solution originally implemented by Novell + object implementations from the helperapi.  Note: [[Ooo-build]] contains the latest VBA model and patches which allows you to run macros from your Microsoft Office documents. This model is under heavy development by Novell and others and the changes are continuously ported to openoffice. It is expected that many macros won&amp;#039;t run for now.&lt;br /&gt;
&lt;br /&gt;
== Dashboard ==&lt;br /&gt;
&lt;br /&gt;
* cws [http://eis.services.openoffice.org/EIS2/cws.ShowCWS?Path=SRC680%2Fnpower6 npower6] approaching &amp;#039;Ready For QA status&amp;#039;&lt;br /&gt;
* cws [http://eis.services.openoffice.org/EIS2/cws.ShowCWS?Path=SRC680%2Fnpower7 npower7] created&lt;br /&gt;
&lt;br /&gt;
Task queue and status ( in order of priority )&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;vertical-align:top; text-align:left; background-color:#efefef;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background-color:#d6d6d6;font-weight:bold;&amp;quot; &lt;br /&gt;
| Feature || Description|| Issue # || Planned cws || Stared || Milestone integrated || &lt;br /&gt;
|-&lt;br /&gt;
| migrate ooo-build code || suck in the mountain of idl and implementation code from ooo-build  || 74096 || npower6 || yep || n/a ||&lt;br /&gt;
|-&lt;br /&gt;
| import vba code || conditionally import ( uncommented ) vba code and set appropriate  module options || 64570 || npower6 || yep  || n/a ||&lt;br /&gt;
|-&lt;br /&gt;
| vba constants || adjust basic runtime to be &amp;#039;conditionally&amp;#039; aware of the vba constants defined in oovbaapi module || 68897 || npower7 || yep  || n/a ||&lt;br /&gt;
|-&lt;br /&gt;
| support dim of vba object || adjust basic runtime to be &amp;#039;conditionally&amp;#039; allow a vba compatibilty api object to be used like &amp;lt;tt&amp;gt;Dim r1 as Range&amp;lt;/tt&amp;gt; || 68897 || npower7 || yep || n/a ||&lt;br /&gt;
|-&lt;br /&gt;
| compatible erase array || in vba compatibility mode erase does not behave as expected || 70380 || npower7 || yep  || n/a ||&lt;br /&gt;
|-&lt;br /&gt;
| null variant behaviour || in vba compatibility mode operations on null variant objects behave differently || 71827 || npower7 || yep  || n/a ||&lt;br /&gt;
|-&lt;br /&gt;
| &amp;#039;Like&amp;#039;  || new &amp;#039;Like&amp;#039; operator for basic || 73830 || npower7 || yep  || n/a ||&lt;br /&gt;
|-&lt;br /&gt;
| Module scope variable  || in vba module scope variables lifetime is tied to the document containing the macro || n/a || npower7? || n/a  || n/a ||&lt;br /&gt;
|-&lt;br /&gt;
| array of array indexing  || in vba array of array indexing is very common, e.g. &amp;lt;tt&amp;gt;myArray(1)(2)&amp;lt;/tt&amp;gt;|| n/a || n/a || n/a  || n/a ||&lt;br /&gt;
|-&lt;br /&gt;
| toolbox control event support  || these controls support a loose binding where the presence of a macro event handler of the form &amp;lt;tt&amp;gt;controlname_xxx e.g. controlname_click&amp;lt;/tt&amp;gt;  results in the appropriate macro getting called when the associated action takes place || n/a || n/a || n/a  || n/a |||&lt;br /&gt;
|--&lt;br /&gt;
| port helperapi constants  || helperapi constants are autogenerated from metadata files, they are more complete than those already present in the oovbaapi module added in npower6 || 75551 || n/a || n/a  || n/a ||&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Broader scope tasks that need more investigation ( and splitting into smaller tasks ) (to be added)&lt;br /&gt;
&lt;br /&gt;
create list of items that may need promoting from vba compatibility to &amp;lt;tt&amp;gt;Standard&amp;lt;/tt&amp;gt; ooo-basic behaviour e.g. like issue [[http://www.openoffice.org/issues/show_bug.cgi?id=70380 70380]]&lt;br /&gt;
&lt;br /&gt;
== How to enable the VBA model ==&lt;br /&gt;
&lt;br /&gt;
The VBA model is enabled by default in the current ooo-build. It&amp;#039;s enough to [[Getting It|get]], [[Building with ooobuild|build]], [[Installing|install]], and [[Running|be able to run]] it. &lt;br /&gt;
&lt;br /&gt;
If you are using upstream OpenOffice.org and wish to play with this feature then check out and build the cws [http://eis.services.openoffice.org/EIS2/cws.ShowCWS?Path=SRC680%2Fnpower6 npower6] which contains the initial code drop for the oovbaapi &lt;br /&gt;
&lt;br /&gt;
== How to disable the VBA model ==&lt;br /&gt;
&lt;br /&gt;
Depending on how your version of OpenOffice.org delivers the VBA feature to you, there are a number of ways to disable it. &lt;br /&gt;
&lt;br /&gt;
If you have an Openoffice.org built by a linux distro ( or a windows one from Novell ) that has the vba interop feature then all you need do is navigate to the &amp;#039;Tools.Options.Load/Save.VBAProperties&amp;#039; page and uncheck the &amp;#039;Load Excelbasic code to edit&amp;#039; option.&lt;br /&gt;
&lt;br /&gt;
If you are using an own build ( incorporating ) [http://eis.services.openoffice.org/EIS2/cws.ShowCWS?Path=SRC680%2Fnpower6 cws-npower6] the above method will always work. But if you built the vba interop feature as an office extension then you can of course disable or delete the vbaapi.oxt extension using the Extension Manager.&lt;br /&gt;
&lt;br /&gt;
== How can I help you? ==&lt;br /&gt;
&lt;br /&gt;
We need help in a couple of areas, [[Porting notes|porting]] objects from the [[helperapi]], understanding the VBA usage patterns, implementation and testing; see below.&lt;br /&gt;
&lt;br /&gt;
== Porting Objects from the HelperApi ==&lt;br /&gt;
&lt;br /&gt;
What is the [[helperapi]]?&lt;br /&gt;
&lt;br /&gt;
Have a look at the [[porting notes]]&lt;br /&gt;
&lt;br /&gt;
Have a look at a [[porting example]]&lt;br /&gt;
&lt;br /&gt;
[[Porting_notes#Calc_Objects_to_port|list]] of objects that need porting&lt;br /&gt;
&lt;br /&gt;
[[Porting_notes#Missing_attributes.2Fmethods_to_port|list]] of methods ( to be ported from [[helperapi]] ) to existing objects&lt;br /&gt;
&lt;br /&gt;
== Understanding the VBA usage patterns ==&lt;br /&gt;
&lt;br /&gt;
VBA model is huge and we need help in understanding the VBA usage patterns for prioritizing as we progress. It&amp;#039;s important to receive as many Microsoft Office documents with macros as possible for analysis. &amp;#039;&amp;#039;&amp;#039;We are interested in documents from developers and regular people too.&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
=== Dumping the VBA from your MS Office documents ===&lt;br /&gt;
&lt;br /&gt;
==== libgsf ====&lt;br /&gt;
&lt;br /&gt;
If you&amp;#039;re worried about the sheet data you can use &amp;#039;&amp;#039;test-msvba&amp;#039;&amp;#039; from the [http://freshmeat.net/projects/libgsf/ libgsf]. Download the latest [http://cvs.gnome.org/viewcvs/libgsf/tests/test-msvba.c test-msvba.c] file and compile it with the following command:&lt;br /&gt;
&lt;br /&gt;
 gcc `pkg-config --libs --cflags libgsf-1` -o test-msvba test-msvba.c&lt;br /&gt;
&lt;br /&gt;
Note: you need to have libgsf-devel package installed.&lt;br /&gt;
&lt;br /&gt;
Now, you can dump the VBA from your documents with the following command:&lt;br /&gt;
&lt;br /&gt;
 find -name &amp;#039;*.xls&amp;#039; -exec sh -c &amp;#039;test-msvba {} &amp;gt;&amp;gt; ~/excel-vba-stream-for-noel.bas&amp;#039; \;&lt;br /&gt;
&lt;br /&gt;
==== pole ====&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;p&amp;gt;Or you can use [http://pole.berlios.de/ POLE] with GUI. POLE is a portable C++ library to access structured storage. It is designed to be compatible with Microsoft structured storage, also sometimes known as OLE Compound Document.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Exporting modules from the Microsoft Excel ===&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;p&amp;gt;Open your document and edit associated macros. You can see list of modules on the left side of your screen. Use the right mouse button and select &amp;#039;&amp;#039;Export&amp;#039;&amp;#039; from the context menu. The whole module will be saved as one huge &amp;#039;&amp;#039;*.bas&amp;#039;&amp;#039;.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Where to send ===&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;p&amp;gt;If you are going to send pure VBA streams, send them directly to [Noel dot Power at Novell dot com].&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Implementation ==&lt;br /&gt;
&lt;br /&gt;
=== The desired sequence ===&lt;br /&gt;
&lt;br /&gt;
==== Add an extension to the IDL ====&lt;br /&gt;
&lt;br /&gt;
The IDL lives in oovbaapi/org/openoffice/*, the IDL syntax can easily be gleaned from a few other IDL files. Two things are worth bearing in mind:&lt;br /&gt;
* it&amp;#039;s important that the argument names are correct, so that the &amp;lt;tt&amp;gt;MsgBox title:=&amp;quot;hello&amp;quot;&amp;lt;/tt&amp;gt; syntax works correctly.&lt;br /&gt;
* for optional arguments, or variant types you need to use the &amp;lt;tt&amp;gt;any&amp;lt;/tt&amp;gt; type&lt;br /&gt;
&lt;br /&gt;
Having edited the IDL extension you need to:&lt;br /&gt;
* run: &amp;lt;tt&amp;gt;build &amp;amp;&amp;amp; deliver&amp;lt;/tt&amp;gt; in oovbaapi (perhaps remove types.db first),&lt;br /&gt;
&lt;br /&gt;
==== Add the extension to the implementation ====&lt;br /&gt;
&lt;br /&gt;
The impl. code lives in &amp;lt;tt&amp;gt;sc/source/ui/vba/&amp;lt;/tt&amp;gt; - create the right header and source files.&lt;br /&gt;
Add the method (with the correct prototype) to the header - often it&amp;#039;s easiest to cut/paste that from the compiled C++ headers in &amp;lt;tt&amp;gt;sc/unxlngixxx/inc/org/openoffice/vba/&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Then implement the method itself in the .cxx file. Run &amp;lt;tt&amp;gt;build debug=true&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Running it ====&lt;br /&gt;
&lt;br /&gt;
You did use [linkoo] right ? - in which case - just re-run soffice.bin (killall -9 soffice.bin first to ensure there is no lurking factory process).&lt;br /&gt;
&lt;br /&gt;
Now of course - you want to add a new test to exercise it to ooo-build/test/macro/*. And of course loop back to the beginning.&lt;br /&gt;
Once you&amp;#039;ve got something you want to share - a simple &amp;lt;tt&amp;gt;cvs diff -u | tee /tmp/foo.diff&amp;lt;/tt&amp;gt; in ooo-build/scratch will yield a patch you can mail to Noel / the ooo-build mailing list to get your code folded in.&lt;br /&gt;
NB. it&amp;#039;s important you sign the [http://www.openoffice.org/licenses/jca.pdf JCA] first.&lt;br /&gt;
&lt;br /&gt;
== Testing ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;It&amp;#039;s extremely important to test the work which is already done. You can use test cases from the &amp;#039;&amp;#039;ooo-build/test/macro&amp;#039;&amp;#039; directory, you can extend them or you can write your own test cases.&amp;lt;/p&amp;gt;&lt;br /&gt;
It&amp;#039;s a good idea to write test cases directly in the Microsoft Excel?&lt;br /&gt;
&lt;br /&gt;
== Accessing the VBA API from other languages ==&lt;br /&gt;
&lt;br /&gt;
The VBA API is implemented by an UNO service, the service is accessible via a singleton. As such it is possible to use the API from any language that has an UNO binding. The main entry points to the API are certain global variables { Application, ActiveWorkbook and ActiveSheet } or methods { WorkSheets, WorkBooks } exported by the service. Using these globals as a starting point the rest of the api can be accessed.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;NOTE:&amp;#039;&amp;#039;&amp;#039;  Beaware the idl is not stable, ( nor won&amp;#039;t be for the forseeable future be &amp;#039;published&amp;#039; ) it WILL change, so if you are using a language that has a binary dependency on the interface ( like c++ &amp;amp; java ) then consider yourselves warned. &lt;br /&gt;
&lt;br /&gt;
=== Python ===&lt;br /&gt;
&lt;br /&gt;
 vba = uno.getComponentContext().getByName(&amp;quot;/singletons/org.openoffice.vba.theGlobals&amp;quot;)&lt;br /&gt;
 sheet = vba.ActiveSheet&lt;br /&gt;
 book = vba.ActiveWorkbook&lt;br /&gt;
&lt;br /&gt;
=== Java ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
import org.openoffice.vba.*;&lt;br /&gt;
&amp;quot;&lt;br /&gt;
// getComponentCtxFromSomewhere is a fictional&lt;br /&gt;
// routine representing acquisition of the component context&lt;br /&gt;
// from e.g. remote ServiceManage if the code is a remote client&lt;br /&gt;
// or from the XScriptContext if this were a java ScriptingFramework script &lt;br /&gt;
&lt;br /&gt;
XComponentContext ctx = getComponentCtxFromSomewhere(); &lt;br /&gt;
Object oGlobs = ctx.getValueByName(&lt;br /&gt;
                &amp;quot;/singletons/org.openoffice.vba.theGlobals&amp;quot;);&lt;br /&gt;
XGlobals xGlobs = AnyConverter.toObject(&lt;br /&gt;
                new Type(XGlobals.class), oGlobs);&lt;br /&gt;
XWorkBook xWBook =  xGlobs.getActiveWorkbook();&lt;br /&gt;
XWorkSheet xSheet = xGlobs.getActiveWorkSheet();&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== OO Basic ===&lt;br /&gt;
&lt;br /&gt;
Basic allows access to the global variables automatically just like VBA does, there is no need to create any services or access any singletons to use the API&lt;br /&gt;
&lt;br /&gt;
 msgbox &amp;quot;Name of the current document is &amp;quot; &amp;amp;amp; ActiveWorkbook.Path&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Development]]&lt;/div&gt;</summary>
		<author><name>Npower</name></author>
	</entry>
	<entry>
		<id>https://wiki.openoffice.org/w/index.php?title=Porting_notes&amp;diff=28826</id>
		<title>Porting notes</title>
		<link rel="alternate" type="text/html" href="https://wiki.openoffice.org/w/index.php?title=Porting_notes&amp;diff=28826"/>
		<updated>2007-03-22T11:27:20Z</updated>

		<summary type="html">&lt;p&gt;Npower: /* Application Object */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== Things to watch out for ===&lt;br /&gt;
* The mapping of the vba constants is different. Take for example the &amp;lt;tt&amp;gt;xlGuess&amp;lt;/tt&amp;gt; constant, in VBA it&amp;#039;s fully qualified name is &amp;lt;tt&amp;gt;Excel.XlYesNoGuess.xlGuess&amp;lt;/tt&amp;gt;, in the helperapi it&amp;#039;s &amp;lt;tt&amp;gt;com.sun.star.helper.constant.XlYesNoGuess.xlGuess&amp;lt;/tt&amp;gt; and in oovbaapi it&amp;#039;s &amp;lt;tt&amp;gt;org.openoffice.excel.XlYesNoGuess.xlGuess&amp;lt;/tt&amp;gt; &lt;br /&gt;
* All objects in the helperapi extend [http://api.openoffice.org/source/browse/*checkout*/api/helperapi/impl/com/sun/star/helper/HelperInterfaceAdaptor.java?rev=1.1 HelperInterfaceAdaptor], nothing similar (yet) exists in oovbaapi so this can be ignored in the implementation&lt;br /&gt;
* There are a quite few helper classes in the helperapi project e.g. &amp;lt;tt&amp;gt;RangeHelper.java&amp;lt;/tt&amp;gt; they shouldn&amp;#039;t be confused with the actual implementation objects we wish to port.&lt;br /&gt;
* classes and idl files of the same name can exist in multiple namespaces and this can be confusing. Because the helperapi was written with both the word and excel api(s) in mind there can be classes that share a common implementation and interfaces e.g.&lt;br /&gt;
** &amp;lt;tt&amp;gt;com/sun/star/helper/calc/XShape.idl&amp;lt;/tt&amp;gt;&lt;br /&gt;
** &amp;lt;tt&amp;gt;com/sun/star/helper/common/XShape.idl&amp;lt;/tt&amp;gt;&lt;br /&gt;
** &amp;lt;tt&amp;gt;com/sun/star/helper/writer/XShape.idl&amp;lt;/tt&amp;gt;&lt;br /&gt;
* Collections, these are handled differently see implementing a vba [[Porting notes#Collection|Collection]] in oovbaapi&lt;br /&gt;
* Every helperapi idl method defines [http://api.openoffice.org/source/browse/*checkout*/api/udkapi/com/sun/star/script/BasicErrorException.idl BasicErrorException] which allows and api method to transfer an error code and associated string paramater to basic.&lt;br /&gt;
&lt;br /&gt;
=== Hints for porting idl ===&lt;br /&gt;
==== Objects with Default Properties ====&lt;br /&gt;
This is something not handled by the helperapi but something you should be aware of when implementing a vba compatibility object. What is a default property, an example probably explains the concept better.&lt;br /&gt;
&lt;br /&gt;
 Range(&amp;quot;a1&amp;quot;) = &amp;quot;text&amp;quot;&lt;br /&gt;
&lt;br /&gt;
is a short cut for&lt;br /&gt;
&lt;br /&gt;
 Range(&amp;quot;a1&amp;quot;).Value = &amp;quot;text&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;Value&amp;lt;/tt&amp;gt; is a default property in the example above. We can provide similar behavior in basic with a compatibility api object ensuring the object implements [http://api.openoffice.org/source/browse/*checkout*/api/udkapi/com/sun/star/script/XDefaultProperty.idl XDefaultProperty.idl ]&lt;br /&gt;
&lt;br /&gt;
==== Objects with Default Method ====&lt;br /&gt;
&lt;br /&gt;
Similar to above some vba objects have a default method e.g. the &amp;lt;tt&amp;gt;Collection&amp;lt;/tt&amp;gt; object&lt;br /&gt;
&lt;br /&gt;
 set col = Sheets&lt;br /&gt;
 msgbox col(1).Name&lt;br /&gt;
&lt;br /&gt;
is a short cut for&lt;br /&gt;
&lt;br /&gt;
 set col = Sheets&lt;br /&gt;
 msgbox col.Item(1).Name&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;Item&amp;lt;/tt&amp;gt; is a default method in the example above. We can provide similar behavior in basic with a compatibility api object ensuring the object implements [http://api.openoffice.org/source/browse/*checkout*/api/udkapi/com/sun/star/script/XDefaultMethod.idl XDefaultMethod.idl ]&lt;br /&gt;
&lt;br /&gt;
==== Porting Collection objects ====&lt;br /&gt;
Generally all collection objects have a &amp;lt;tt&amp;gt;Count&amp;lt;/tt&amp;gt; and an &amp;lt;tt&amp;gt;Item&amp;lt;/tt&amp;gt; method and additionally the behaviour mentioned above. Also Collection objects can be used in a &amp;lt;tt&amp;gt;For Each&amp;lt;/tt&amp;gt; loop. To cater for that a helper implementation object &amp;lt;tt&amp;gt;ScVbaCollectionBaseImpl&amp;lt;/tt&amp;gt; provides the necessary information to the basic runtime to allow it to provide the classic vba &amp;lt;tt&amp;gt;Collection&amp;lt;/tt&amp;gt; class syntax support. It also requires to be initialised by an XIndexAccess implementation. Additionally the class inheriting from  &amp;lt;tt&amp;gt;ScVbaCollectionBaseImpl&amp;lt;/tt&amp;gt; must provide the  translation between the object iterated ( via XIndexAccess ) and the corrosponding compatibilty object returned to openoffice basic via the the &amp;lt;tt&amp;gt;createCollectionObject&amp;lt;/tt&amp;gt; method.&lt;br /&gt;
&lt;br /&gt;
A example of a ported &amp;lt;tt&amp;gt;Collection&amp;lt;/tt&amp;gt; object can be found in the [[Porting example]] section&lt;br /&gt;
&lt;br /&gt;
=== Calc Objects to port ===&lt;br /&gt;
{| style=&amp;quot;vertical-align:top; text-align:left; background-color:#efefef;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background-color:#d6d6d6;font-weight:bold;&amp;quot; &lt;br /&gt;
| Object || helperapi implementation name || Porting stared by || Status || Notes&lt;br /&gt;
|-&lt;br /&gt;
| XAutoFilter.idl || [http://api.openoffice.org/source/browse/*checkout*/api/helperapi/impl/com/sun/star/helper/calc/AutoFilterImpl.java AutoFilterImpl] ||  ||   || there is a partial (untested) implementation in the porting example section, would be nice for some one to finish&lt;br /&gt;
|-&lt;br /&gt;
| XFilter.idl || [http://api.openoffice.org/source/browse/*checkout*/api/helperapi/impl/com/sun/star/helper/calc/FilterImpl.java FilterImpl.java]  ||  ||  || see above.&lt;br /&gt;
|-&lt;br /&gt;
| XFilters.idl || [http://api.openoffice.org/source/browse/*checkout*/api/helperapi/impl/com/sun/star/helper/calc/FiltersImpl.java FiltersImpl.java] ||  ||  || see above.&lt;br /&gt;
|-&lt;br /&gt;
| XAxes.idl || xxxx  ||  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
| XAxis.idl || xxxx  ||  ||   ||&lt;br /&gt;
|-&lt;br /&gt;
| XAxisTitle.idl || xxxx  ||  ||   ||&lt;br /&gt;
|-&lt;br /&gt;
| XCalc.idl || xxxx  ||  ||  || This is not a &amp;#039;real&amp;#039; object but in a collection of global method/attributes that probably should be part of the XApplication.idl interface&lt;br /&gt;
|-&lt;br /&gt;
| XCharts.idl || xxxx  ||  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
| XChartTitle.idl || xxxx  ||  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
| XDataLabel.idl || xxxx  ||  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
| XDataLabels.idl || xxxx  ||  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
| XFormatCondition.idl || xxxx  ||  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
| XFormatConditions.idl || xxxx  ||  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
| XFormat.idl || xxxx  ||  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
| XHPageBreak.idl || xxxx  ||  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
| XHPageBreaks.idl || xxxx  ||  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
| XName.idl || xxxx  ||  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
| XNames.idl || xxxx  ||  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
| XPageBreak.idl || xxxx  ||  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
|[http://api.openoffice.org/source/browse/api/helperapi/com/sun/star/helper/calc/XPageSetup.idl XPageSetup.idl] || [http://api.openoffice.org/source/browse/api/helperapi/impl/com/sun/star/helper/calc/PageSetupImpl.java PageSetupImpl]  || zhang ||&lt;br /&gt;
|-&lt;br /&gt;
|[http://api.openoffice.org/source/browse/api/helperapi/com/sun/star/helper/calc/XPane.idl XPane.idl] || [http://api.openoffice.org/source/browse/api/helperapi/impl/com/sun/star/helper/calc/PaneImpl.java PaneImpl]  || Jiao.Jianhua || calc complete||&lt;br /&gt;
|-&lt;br /&gt;
| XPoint.idl || xxxx  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
| XPoints.idl || xxxx  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
| XProtection.idl || xxxx  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
| XQueryTable.idl || xxxx  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
| XQueryTables.idl || xxxx  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
| XShape.idl || xxxx  || jiao.jianhua ||&lt;br /&gt;
|-&lt;br /&gt;
| XShapes.idl || xxxx  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
| XStyle.idl || xxxx  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
| XStyles.idl || xxxx  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
| XTitle.idl || xxxx  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
| XVPageBreak.idl || xxxx  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
| XVPageBreaks.idl|| xxxx  ||  ||&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Common Objects to port ===&lt;br /&gt;
{| style=&amp;quot;vertical-align:top; text-align:left; background-color:#efefef;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background-color:#d6d6d6;font-weight:bold;&amp;quot; &lt;br /&gt;
| Object || helperapi implementation name || Porting stared by? || Status ||&lt;br /&gt;
|-&lt;br /&gt;
| XAutoFilter.idl || xxxx || ||&lt;br /&gt;
|-&lt;br /&gt;
| XPictureFormat || xxxx || ||&lt;br /&gt;
|-&lt;br /&gt;
| XColorFormat || xxxx || ||&lt;br /&gt;
|-&lt;br /&gt;
| XPosSize || xxxx || Jiao.Jianhua || implemented in org.openoffice.XControl ||&lt;br /&gt;
|-&lt;br /&gt;
| XWindow || xxxx || ||&lt;br /&gt;
|-&lt;br /&gt;
| XFileSearch || xxxx || ||&lt;br /&gt;
|-&lt;br /&gt;
| XWrapFormat || xxxx || ||&lt;br /&gt;
|-&lt;br /&gt;
| XFillFormat || xxxx || ||&lt;br /&gt;
|-&lt;br /&gt;
| XShapeRange || xxxx || ||&lt;br /&gt;
|-&lt;br /&gt;
| XFoundFiles || xxxx || ||&lt;br /&gt;
|-&lt;br /&gt;
| XLineFormat || xxxx || ||&lt;br /&gt;
|-&lt;br /&gt;
| XTextFrame || xxxx || ||&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Missing attributes/methods to port ===&lt;br /&gt;
==== Application Object ====&lt;br /&gt;
{| style=&amp;quot;vertical-align:top; text-align:left; background-color:#efefef;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background-color:#d6d6d6;font-weight:bold;&amp;quot; &lt;br /&gt;
| method/property name || helperapi idl:implementation || Porting stared by? || Status ||&lt;br /&gt;
|-&lt;br /&gt;
| NewWorkbook || XCalc.idl:CalcImpl || ||&lt;br /&gt;
|-&lt;br /&gt;
| Rows || XCalc.idl:CalcImpl || ||&lt;br /&gt;
|-&lt;br /&gt;
| Columns || XCalc.idl:CalcImpl || ||&lt;br /&gt;
|-&lt;br /&gt;
| Cells || XCalc.idl:CalcImpl || ||&lt;br /&gt;
|-&lt;br /&gt;
| ActivePrinter || XCalc.idl:CalcImpl || ||&lt;br /&gt;
|- &lt;br /&gt;
| Calculate || XCalc.idl:CalcImpl || || &lt;br /&gt;
|-&lt;br /&gt;
| DisplayAlerts || XCalc.idl:CalcImpl || || is only a stub in helperapi&lt;br /&gt;
|-&lt;br /&gt;
| Name || XCalc.idl:CalcImpl || ||&lt;br /&gt;
|-&lt;br /&gt;
| Intersect || XCalc.idl:CalcImpl || || &lt;br /&gt;
|-&lt;br /&gt;
| Run || XCalc.idl:CalcImpl || || &lt;br /&gt;
|-&lt;br /&gt;
| Width || XCalc.idl:CalcImpl || || &lt;br /&gt;
|-&lt;br /&gt;
| Visible || XCalc.idl:CalcImpl || ||&lt;br /&gt;
|-&lt;br /&gt;
| Height || XCalc.idl:CalcImpl || || &lt;br /&gt;
|-&lt;br /&gt;
| Top || XCalc.idl:CalcImpl || ||&lt;br /&gt;
|-&lt;br /&gt;
| Left || XCalc.idl:CalcImpl || ||&lt;br /&gt;
|-&lt;br /&gt;
| Path || XCalc.idl:CalcImpl || ||&lt;br /&gt;
|-&lt;br /&gt;
| InchesToPoints || XCalc.idl:CalcImpl || ||&lt;br /&gt;
|-&lt;br /&gt;
| CentimetersToPoints || XCalc.idl:CalcImpl || ||&lt;br /&gt;
|-&lt;br /&gt;
| DefaultFilePath || XCalc.idl:CalcImpl || ||&lt;br /&gt;
|-&lt;br /&gt;
| Visible || XCalc.idl:CalcImpl || ||&lt;br /&gt;
|-&lt;br /&gt;
| LibraryPath|| XCalc.idl:CalcImpl || ||&lt;br /&gt;
|-&lt;br /&gt;
| TemplatesPath || XCalc.idl:CalcImpl || ||&lt;br /&gt;
|-&lt;br /&gt;
| DisplayCommentIndicator || XCalc.idl:CalcImpl || ||&lt;br /&gt;
|-&lt;br /&gt;
| Iteration || XCalc.idl:CalcImpl || ||&lt;br /&gt;
|-&lt;br /&gt;
| MaxChange || XCalc.idl:CalcImpl || ||&lt;br /&gt;
|-&lt;br /&gt;
| MaxIterations || XCalc.idl:CalcImpl || ||&lt;br /&gt;
|-&lt;br /&gt;
| InputBox || XCalc.idl:CalcImpl || ||&lt;br /&gt;
|-&lt;br /&gt;
| Names || XCalc.idl:CalcImpl || || needs Name &amp;amp; Names implementations&lt;br /&gt;
|-&lt;br /&gt;
| ConvertFormula || XCalc.idl:CalcImpl || ||&lt;br /&gt;
|-&lt;br /&gt;
| Assistant || XCalc.idl:CalcImpl || ||&lt;br /&gt;
|-&lt;br /&gt;
| CommandBars || XCalc.idl:CalcImpl || || needs the CommandBar implementation also&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Npower</name></author>
	</entry>
	<entry>
		<id>https://wiki.openoffice.org/w/index.php?title=Porting_notes&amp;diff=28825</id>
		<title>Porting notes</title>
		<link rel="alternate" type="text/html" href="https://wiki.openoffice.org/w/index.php?title=Porting_notes&amp;diff=28825"/>
		<updated>2007-03-22T11:10:06Z</updated>

		<summary type="html">&lt;p&gt;Npower: /* Application Object */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== Things to watch out for ===&lt;br /&gt;
* The mapping of the vba constants is different. Take for example the &amp;lt;tt&amp;gt;xlGuess&amp;lt;/tt&amp;gt; constant, in VBA it&amp;#039;s fully qualified name is &amp;lt;tt&amp;gt;Excel.XlYesNoGuess.xlGuess&amp;lt;/tt&amp;gt;, in the helperapi it&amp;#039;s &amp;lt;tt&amp;gt;com.sun.star.helper.constant.XlYesNoGuess.xlGuess&amp;lt;/tt&amp;gt; and in oovbaapi it&amp;#039;s &amp;lt;tt&amp;gt;org.openoffice.excel.XlYesNoGuess.xlGuess&amp;lt;/tt&amp;gt; &lt;br /&gt;
* All objects in the helperapi extend [http://api.openoffice.org/source/browse/*checkout*/api/helperapi/impl/com/sun/star/helper/HelperInterfaceAdaptor.java?rev=1.1 HelperInterfaceAdaptor], nothing similar (yet) exists in oovbaapi so this can be ignored in the implementation&lt;br /&gt;
* There are a quite few helper classes in the helperapi project e.g. &amp;lt;tt&amp;gt;RangeHelper.java&amp;lt;/tt&amp;gt; they shouldn&amp;#039;t be confused with the actual implementation objects we wish to port.&lt;br /&gt;
* classes and idl files of the same name can exist in multiple namespaces and this can be confusing. Because the helperapi was written with both the word and excel api(s) in mind there can be classes that share a common implementation and interfaces e.g.&lt;br /&gt;
** &amp;lt;tt&amp;gt;com/sun/star/helper/calc/XShape.idl&amp;lt;/tt&amp;gt;&lt;br /&gt;
** &amp;lt;tt&amp;gt;com/sun/star/helper/common/XShape.idl&amp;lt;/tt&amp;gt;&lt;br /&gt;
** &amp;lt;tt&amp;gt;com/sun/star/helper/writer/XShape.idl&amp;lt;/tt&amp;gt;&lt;br /&gt;
* Collections, these are handled differently see implementing a vba [[Porting notes#Collection|Collection]] in oovbaapi&lt;br /&gt;
* Every helperapi idl method defines [http://api.openoffice.org/source/browse/*checkout*/api/udkapi/com/sun/star/script/BasicErrorException.idl BasicErrorException] which allows and api method to transfer an error code and associated string paramater to basic.&lt;br /&gt;
&lt;br /&gt;
=== Hints for porting idl ===&lt;br /&gt;
==== Objects with Default Properties ====&lt;br /&gt;
This is something not handled by the helperapi but something you should be aware of when implementing a vba compatibility object. What is a default property, an example probably explains the concept better.&lt;br /&gt;
&lt;br /&gt;
 Range(&amp;quot;a1&amp;quot;) = &amp;quot;text&amp;quot;&lt;br /&gt;
&lt;br /&gt;
is a short cut for&lt;br /&gt;
&lt;br /&gt;
 Range(&amp;quot;a1&amp;quot;).Value = &amp;quot;text&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;Value&amp;lt;/tt&amp;gt; is a default property in the example above. We can provide similar behavior in basic with a compatibility api object ensuring the object implements [http://api.openoffice.org/source/browse/*checkout*/api/udkapi/com/sun/star/script/XDefaultProperty.idl XDefaultProperty.idl ]&lt;br /&gt;
&lt;br /&gt;
==== Objects with Default Method ====&lt;br /&gt;
&lt;br /&gt;
Similar to above some vba objects have a default method e.g. the &amp;lt;tt&amp;gt;Collection&amp;lt;/tt&amp;gt; object&lt;br /&gt;
&lt;br /&gt;
 set col = Sheets&lt;br /&gt;
 msgbox col(1).Name&lt;br /&gt;
&lt;br /&gt;
is a short cut for&lt;br /&gt;
&lt;br /&gt;
 set col = Sheets&lt;br /&gt;
 msgbox col.Item(1).Name&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;Item&amp;lt;/tt&amp;gt; is a default method in the example above. We can provide similar behavior in basic with a compatibility api object ensuring the object implements [http://api.openoffice.org/source/browse/*checkout*/api/udkapi/com/sun/star/script/XDefaultMethod.idl XDefaultMethod.idl ]&lt;br /&gt;
&lt;br /&gt;
==== Porting Collection objects ====&lt;br /&gt;
Generally all collection objects have a &amp;lt;tt&amp;gt;Count&amp;lt;/tt&amp;gt; and an &amp;lt;tt&amp;gt;Item&amp;lt;/tt&amp;gt; method and additionally the behaviour mentioned above. Also Collection objects can be used in a &amp;lt;tt&amp;gt;For Each&amp;lt;/tt&amp;gt; loop. To cater for that a helper implementation object &amp;lt;tt&amp;gt;ScVbaCollectionBaseImpl&amp;lt;/tt&amp;gt; provides the necessary information to the basic runtime to allow it to provide the classic vba &amp;lt;tt&amp;gt;Collection&amp;lt;/tt&amp;gt; class syntax support. It also requires to be initialised by an XIndexAccess implementation. Additionally the class inheriting from  &amp;lt;tt&amp;gt;ScVbaCollectionBaseImpl&amp;lt;/tt&amp;gt; must provide the  translation between the object iterated ( via XIndexAccess ) and the corrosponding compatibilty object returned to openoffice basic via the the &amp;lt;tt&amp;gt;createCollectionObject&amp;lt;/tt&amp;gt; method.&lt;br /&gt;
&lt;br /&gt;
A example of a ported &amp;lt;tt&amp;gt;Collection&amp;lt;/tt&amp;gt; object can be found in the [[Porting example]] section&lt;br /&gt;
&lt;br /&gt;
=== Calc Objects to port ===&lt;br /&gt;
{| style=&amp;quot;vertical-align:top; text-align:left; background-color:#efefef;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background-color:#d6d6d6;font-weight:bold;&amp;quot; &lt;br /&gt;
| Object || helperapi implementation name || Porting stared by || Status || Notes&lt;br /&gt;
|-&lt;br /&gt;
| XAutoFilter.idl || [http://api.openoffice.org/source/browse/*checkout*/api/helperapi/impl/com/sun/star/helper/calc/AutoFilterImpl.java AutoFilterImpl] ||  ||   || there is a partial (untested) implementation in the porting example section, would be nice for some one to finish&lt;br /&gt;
|-&lt;br /&gt;
| XFilter.idl || [http://api.openoffice.org/source/browse/*checkout*/api/helperapi/impl/com/sun/star/helper/calc/FilterImpl.java FilterImpl.java]  ||  ||  || see above.&lt;br /&gt;
|-&lt;br /&gt;
| XFilters.idl || [http://api.openoffice.org/source/browse/*checkout*/api/helperapi/impl/com/sun/star/helper/calc/FiltersImpl.java FiltersImpl.java] ||  ||  || see above.&lt;br /&gt;
|-&lt;br /&gt;
| XAxes.idl || xxxx  ||  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
| XAxis.idl || xxxx  ||  ||   ||&lt;br /&gt;
|-&lt;br /&gt;
| XAxisTitle.idl || xxxx  ||  ||   ||&lt;br /&gt;
|-&lt;br /&gt;
| XCalc.idl || xxxx  ||  ||  || This is not a &amp;#039;real&amp;#039; object but in a collection of global method/attributes that probably should be part of the XApplication.idl interface&lt;br /&gt;
|-&lt;br /&gt;
| XCharts.idl || xxxx  ||  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
| XChartTitle.idl || xxxx  ||  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
| XDataLabel.idl || xxxx  ||  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
| XDataLabels.idl || xxxx  ||  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
| XFormatCondition.idl || xxxx  ||  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
| XFormatConditions.idl || xxxx  ||  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
| XFormat.idl || xxxx  ||  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
| XHPageBreak.idl || xxxx  ||  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
| XHPageBreaks.idl || xxxx  ||  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
| XName.idl || xxxx  ||  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
| XNames.idl || xxxx  ||  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
| XPageBreak.idl || xxxx  ||  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
|[http://api.openoffice.org/source/browse/api/helperapi/com/sun/star/helper/calc/XPageSetup.idl XPageSetup.idl] || [http://api.openoffice.org/source/browse/api/helperapi/impl/com/sun/star/helper/calc/PageSetupImpl.java PageSetupImpl]  || zhang ||&lt;br /&gt;
|-&lt;br /&gt;
|[http://api.openoffice.org/source/browse/api/helperapi/com/sun/star/helper/calc/XPane.idl XPane.idl] || [http://api.openoffice.org/source/browse/api/helperapi/impl/com/sun/star/helper/calc/PaneImpl.java PaneImpl]  || Jiao.Jianhua || calc complete||&lt;br /&gt;
|-&lt;br /&gt;
| XPoint.idl || xxxx  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
| XPoints.idl || xxxx  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
| XProtection.idl || xxxx  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
| XQueryTable.idl || xxxx  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
| XQueryTables.idl || xxxx  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
| XShape.idl || xxxx  || jiao.jianhua ||&lt;br /&gt;
|-&lt;br /&gt;
| XShapes.idl || xxxx  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
| XStyle.idl || xxxx  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
| XStyles.idl || xxxx  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
| XTitle.idl || xxxx  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
| XVPageBreak.idl || xxxx  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
| XVPageBreaks.idl|| xxxx  ||  ||&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Common Objects to port ===&lt;br /&gt;
{| style=&amp;quot;vertical-align:top; text-align:left; background-color:#efefef;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background-color:#d6d6d6;font-weight:bold;&amp;quot; &lt;br /&gt;
| Object || helperapi implementation name || Porting stared by? || Status ||&lt;br /&gt;
|-&lt;br /&gt;
| XAutoFilter.idl || xxxx || ||&lt;br /&gt;
|-&lt;br /&gt;
| XPictureFormat || xxxx || ||&lt;br /&gt;
|-&lt;br /&gt;
| XColorFormat || xxxx || ||&lt;br /&gt;
|-&lt;br /&gt;
| XPosSize || xxxx || Jiao.Jianhua || implemented in org.openoffice.XControl ||&lt;br /&gt;
|-&lt;br /&gt;
| XWindow || xxxx || ||&lt;br /&gt;
|-&lt;br /&gt;
| XFileSearch || xxxx || ||&lt;br /&gt;
|-&lt;br /&gt;
| XWrapFormat || xxxx || ||&lt;br /&gt;
|-&lt;br /&gt;
| XFillFormat || xxxx || ||&lt;br /&gt;
|-&lt;br /&gt;
| XShapeRange || xxxx || ||&lt;br /&gt;
|-&lt;br /&gt;
| XFoundFiles || xxxx || ||&lt;br /&gt;
|-&lt;br /&gt;
| XLineFormat || xxxx || ||&lt;br /&gt;
|-&lt;br /&gt;
| XTextFrame || xxxx || ||&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Missing attributes/methods to port ===&lt;br /&gt;
==== Application Object ====&lt;br /&gt;
{| style=&amp;quot;vertical-align:top; text-align:left; background-color:#efefef;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background-color:#d6d6d6;font-weight:bold;&amp;quot; &lt;br /&gt;
| method/property name || helperapi idl:implementation || Porting stared by? || Status ||&lt;br /&gt;
|-&lt;br /&gt;
| NewWorkbook || XCalc.idl:CalcImpl || ||&lt;br /&gt;
|-&lt;br /&gt;
| Rows || XCalc.idl:CalcImpl || ||&lt;br /&gt;
|-&lt;br /&gt;
| Columns || XCalc.idl:CalcImpl || ||&lt;br /&gt;
|-&lt;br /&gt;
| Cells || XCalc.idl:CalcImpl || ||&lt;br /&gt;
|-&lt;br /&gt;
| ActivePrinter || XCalc.idl:CalcImpl || ||&lt;br /&gt;
|- &lt;br /&gt;
| Calculate || XCalc.idl:CalcImpl || || &lt;br /&gt;
|-&lt;br /&gt;
| DisplayAlerts || XCalc.idl:CalcImpl || || is only a stub in helperapi&lt;br /&gt;
|-&lt;br /&gt;
| Name || XCalc.idl:CalcImpl || ||&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Npower</name></author>
	</entry>
</feed>