Download latest version
	
here
	Version 4.13 Beta  - 28 February 2013
	
		Upgrading from Office Inside 3? Make sure you work through 
What must I change in my application after upgrading	
		Template
		
			- Add: support for Multi-Proj in C8
- Change: Changed to new object/template management system.
Version 4.12 Beta  - 25 February 2013
Upgrading from Office Inside 3? Make sure you work through 
What must I change in my application after upgrading	
	General
		
			- Word ReplaceText method - ReplaceAll includes replace for text 
			in shapes (like textboxes).
- Excel ImportWizard class - Property: 
			FieldListControlDefaultWidth, FieldListControlCollapsedWidth, 
			LastFrozenFieldListColumn; New Method: RemoveColumnMap. Allows you 
			to collapse columns, unmap all, unmap right to enable easier mapping 
			for large imports.
- Excel ImportWizard class - Work around if Excel fails to 
			initialize (at first), and if all Excel example spreadsheet list 
			column widths are set to 0, then reset (according to whether the 
			column should be visible or not).
Version 4.11 Beta  - 20 February 2013
Upgrading from Office Inside 3?
Make sure you work through
What must I change in my 
application after upgrading
	
	General
		
			- Template - set copyright to 2013
- Template change - export to report template uses %report (not 
			report) in case report is changed to a different name.
- cspwcom.inc change - FONTNAME changed to cspwFONTNAME (avoid 
			duplicates in case of other COM tools).
- oiExcelImpEx class - .Next method (instead of next()) - allows 
			overriding of the next() call (to use for example 
			access:filename.next.
- oiExcelImpEx class - ValidateRecord allows client side filtering 
			during the load/save methods.
- oiExcelImpEx class - .Set method (instead of set(file)) - allows 
			the default primary key to be used, or a key can be specific in the 
			derived method.
- oiExcelImportWizard class - popup on field map allows all fields 
			to be unmapped (or to the right of this column).
- Type attribute added to the oiFieldMapQ definition.
- Examples tidied up.
Version 4.10 Beta  - 31 January 2013
Upgrading from Office Inside 3?
Make sure you work through
What must I change in my 
application after upgrading
	
	General
		
			- Resolved more duplicates (with other 3rdparty COM tools) - 
			iDispatch,Variant_True, Variant_False and Variant_Bool
- Multi-Proj support: Removed compile limitation around GET method 
			calls (since Clarion 6.1 and below is no longer supported)
Version 4.09 Beta  - 16 January 2013
Upgrading from Office Inside 3?
Make sure you work through
What must I change in my 
application after upgrading
	
	General
		
			- Uses office01.tpw (regression in 4.08 when attempting to use 
			cape01.tpw)
- Template change - attempt to fix problem where #system is 
			intimitently not running the %ReadClasses section. Run at the local 
			level (as a backstop).
- ImportWizard template - allow import into table, and support 
			update (where re-import is required). 
- ImportWizard template - support relational lookup on many:1 
			tables. Excel spreadsheet can contain the description, which can be 
			added or lookedup for the related ID field population into the 
			imported field
- ImportWizard template - can highlight required fields (which 
			can't be removed from the import). Does not permit import to 
			continue if required fields are not mapped
- ImportXlsToTpsABC utility template selects the correct txa 
			dependant on whether it's a C8 or C6 import.
- ImpEx class fix - if column is not mapped, then don't 
			assignfield - leave blank.
- ImpEx class change - new method PrimeField allows a field's 
			value to be altered in derived code (like for a lookup).
Version 4.08 Beta  - 9 January 2013
Upgrading from Office Inside 3?
Make sure you work through
What must I change in my 
application after upgrading
	
	General
		
			- Fix compile errors associated with duplicate equate definitions 
			(HORZSIZE, VERTSIZE, LOGPIXELSX, memcpy, etc)
- Fix compile errors associated with clashing interface names 
			(with other COM classes) : IUnknown, ISequentialStream
- oiExcelImpEx - call parent destruct (was only calling kill, 
			resulting in a GPF on the second instance of a window in the same 
			thread).
- New classes - oiExcelImportWizardScreenControls to handle new OI 
			wizard control template (oiExcelImportWizard class requires this 
			class to be used). Excel import wizard now has saved import formats, 
			displays a sample of the Excel spreadsheet to be imported and a 
			previewer for the table to receive the imported data, supports 
			dragging and dropping between these two lists for easy column 
			selection. 
- oiExcelImportWizard class uses oiExcelImportWizardScreenControls 
			for all the control handles (a work around to allow the class 
			properties to be screen controls).
- oiExcelImportWizard TakeEvent handles ExcelfileName lookup 
			control, TableListControl selection. New methods: SaveSettings, 
			RestoreSettings, GetMappedStrings, AddTable, RestoreFieldMapQ. 
			oiTablesList expanded to include TableDescription, TableName, 
			FileManager pointer and record buffer pointer.
- New method ReplaceTextEx - additional parameters to allow for 
			options: pMatchCase pMatchWholeWord.
- ReplaceText fix - now uses oiObjects. Was not during recurssive 
			replaces correctly.
- oiOutlook UpdateTask - fix to allow for body text of a task > 
			255 characters.
- Template forces the pwutil.dll copy (for multi-proj multi-dll 
			apps where OI is not added to the EXE app).
- MProj fix - includes the pwutil.lib into the project (if 
			required).
- Add IReportGenerator methods required by oiWordRepGen (to the 
			export file)
- New control template for the ImportFromExcelWizard controls.
Version 4.07 Beta  - 19 December 2012
Upgrading from Office Inside 3?
Make sure you work through
What must I change in my 
application after upgrading
	
	General
		
			- Fix compile errors associated with other 3rdparty tools using 
			the same API calls  (FORMATETC, etc)
- Add linkmode switch to classes (also _oilinkmode_ to the project 
			defines)
- Add interface procedures to the procedure export from the data 
			dll.
Version 4.06 Beta  - 6 December 2012
Upgrading from Office Inside 3?
Make sure you work through
What must I change in my 
application after upgrading
	
	General
		
			- Fix compile errors associated with other 3rdparty tools using 
			the same API calls  (InitializeCriticalSection, etc)
- GetObjects method (in the 
			oiExcel class)
- Merge msExcel destruct with the oiExcel destruct methods (msExcel 
			class will be deprecated).
- Export methods from the oiABPROI file (multi-dll), as well as 
			procedures from the oiObject.clw file.
Version 4.05 Beta  - 28 November 2012
Upgrading from Office Inside 3?
Make sure you work through
What must I change in my 
application after upgrading
	
	General
		
			- Fix compile error oi_GetWorkAreaWidth() (in some cases where 
			this function was used) in multi-dll applications.
- Redefined conflicting COM object declarations (where COM classes 
			were also defined by ADO COM or another 3rdParty COM class).
Version 4.04 Beta  - 16 November 2012
Upgrading from Office Inside 3?
Make sure you work through
What must I change in my 
application after upgrading
	
	General
		
			- Renamed internal Office API equates (to allow for the 
			co-existence of another COM office tool, like EasyExcel).
- New Properties in the oiExcelImpEx class:
			RowsDone and ColsDone
- Fix for "Function did not return value" in oiWord.clw
- Beginnings of the oiExcelImportWizard class
- Includes a reformatted offdemo.app (internal issues with module 
			numbering)
Version 4.03 Beta  - 16 November 2012
Upgrading from Office Inside 3?
You need to download and install the latest SendTo v2.13 (which includes OI4 tweaks)
	
	General
		
	Version 4.02 Beta  - 16 November 2012
	
Upgrading from Office Inside 3?
You need to download and install the latest SendTo v2.13 (which includes OI4 tweaks)
	
	General
		
			- Redistributed modules in the offdemo (duplicate name).
- Fix for Word Reports (was not getting the correct number of 
			columns in a table).
Version 4.01 Beta  - 16 November 2012
You need to download and install the latest SendTo v2.13 (which includes OI4 tweaks)
	
	General
		
	Version 4.00 Beta  - 15 November 2012
	
You need to download and install the latest SendTo v2.13 (which includes OI4 tweaks)
	
	General
		
			- OfficeInside nows ships as source. Only pwutil.dll needs to be 
				shipped with your applications, regardless of whether they are compiled 
				in local (Lib) mode or Standalone (DLL) mode.
- The classes in msOffice.inc and msOffice.clw included with the 
				"Generics" examples has been merged into the main OfficeInside classes.
- Improved
Version 3.76 Gold - 08 March 2012
	General
		
			- Added: 
				Converting a Macro from VBA to Clarion using 
				OfficeInside (recommended reading)
- Added: 
				Passing Parameters (oiParams)  (recommended reading)
- Fixed: Generics example the 
				msOutlook.Kill method was setting the optional unloadCOM parameter to 0 
				by default rather than 1. When the object was used on a thread which was 
				created multiple times this would result in a failure the second time 
				the thread was started.
	Outlook
		
			- Added: DocToMsg example in the 
				Generics example folder. Creates an Outlook mail message from a Word 
				document and sends it. 
- Added: msWord.GetMailEnvelope() 
				method to the msWord class. This returns the Mail Envelope item which 
				can be used to create an Outlook Mail Item from a Word document. 
				Demonstrated in the Generics\DocToMsg.app example.
- Added: msOutlook.DocToMsg 
				method which takes the Envelope item returned by the msWord.GetMailEnvelope() 
				method, creates an Outlook Mail Items and sends it using the provided 
				destination address and subject line. Demonstrated in the 
				Generics\DocToMsg.app example.
Version 3.75 Beta - 21 February 2012
	General
		
			- Fixed: An error in the template 
				which result in the OfficeInside TakeEvent embed code being orphaned.
- Fixed: oiObject.GetChildEx failing 
				because the call to oiObject.FromVariant was not passing the child 
				object.
- Fixed: GPF when calling 
				oiObject.GetChild or GetChildEx with invalid objects or Null parameters.
- Added: oiObject.ErrorTrap method 
				which improves error handling and translates COM errors.
- Added: Passing objects as 
				parameters when calling methods using the oiObject class.
- Added: Demonstration of adding 
				Page Breaks to the Generics example. This calls the msExcel.AddPageBreak 
				method (in msOffice.clw in the Generic folder). It demonstrates working 
				with Sheets, retrieving a collection (Sheet.PageBreaks), getting a child 
				object where the GetChild call requires multiple parameters (Calling 
				GetChildEx to get Sheet.Range), and calling methods which take multiple 
				parameters (using the self.Params object). It also demonstrates calling 
				a method which takes another object as a parameter - PageBreaks.Add(), 
				which takes a Range parameter
Version 3.74 Beta - 10 February 2012
	General 
	
		- Added: oiObject.InitFromID 
			method. Primarily for internal use, provides intialization of objects by 
			ID rather than name.
- Fixed: The oiExcel.GetWorkbooks() 
			method moved to using the new InitFromID and now correctly returns the 
			Workbooks collection.
- Added: msExcel.OpenXML 
			Procedure(string name, long loadOption=2). This is demonstrated in the
			Generics example application. This method can 
			be used to open an XML file in Excel and import the data into columns, 
			with field names headers etc.
Version 3.73 Beta - 09 January 2012
		- Regression fix introduced in 3.72 - in Clarion 7.3 and up was trying to 
			use C70OFF.DLL instead of CLAOFF.DLL
- Regression fix introduced in 3.72 - in Clarion 7.3, where FileExporer 
			was used in the same app in local mode, there were duplicate symbols.
Version 3.72 Beta - 06 January 2012
	General
	
		- Added: New and updated methods to 
			the classes provided with the Generics example application:
			
				- msWord.SetStyle - sets the style of the current 
					selection
- Updated the msOutlook.NewMail method . Supports 
					getting the Attachments object for a mail item and adding new 
					attachments; setting the HTML body as well as the text body, and 
					auto saving a draft:
 
 msOutlook.NewMail Procedure (<string subject>, 
					<string mailTo>, <string body>, <string htmlBody>, <*msAttachmentsList 
					attachments>, bool autoSave=false)
- Added automated Outlook restart to the Generics 
					example (this is already demonstrated in the 
				oiMail 
					example). This functionality detects the Quit event if the user 
					exits Outlook while the application is automating it, and creates a 
					new instance of Outlook for automation to continue functioning.
 
- Fixed: Incorrectly named export for the 
			oiParams.Fetch method.
- Fixed: Generation errors in Legacy 
			applications in Clarion 8.
- Fixed: The Editable Report output 
			to for Word and Excel creating zero byte temp files.
Excel
	
Word
	
		- Fixed: PrintOut 
			method failing and not printing the document depending on the parameters 
			passed.
Version 3.70 Beta - 02 September 2011
	General
	
		- Fixed: Error with Multi-Proj template 
			settings for applications in C7.1 and up resulting in Duplicate Symbol 
			errors.
- Updated: Removed verbose logging from 
			the Excel editable report output class. 
- Fixed: Compile warning - The Generics 
			example class msOutlook.Init not returning a value.
- Updated: The Generics example class 
			msOutlook.SendReceiveAll to allow it to be called as a procedure 
			(without checking the return value).
- Updated: The msOffice.clw and 
			msOffice.inc files in the HTML Mail (FileExplorer) example.
- Note: Clarion 7.3 and 8 have a bug which 
			causes Duplicate Symbol errors on the Construct@F11PWCOMINITER method 
			when compiling in LIB mode. This has been reproduced and reported to 
			SoftVelocity.
- Fixed: Typo in the
			Fetching and 
			Saving Attachments section (the GetMailAttachmentsQ method was incorrectly spelled).
- Added:
			Fetching and 
			Saving Attachments section to the Contents
- Updated: The Outlook Contents section of 
			the documentation
- Added: The Demo example now demonstrates 
			retrieving a list of attachments for a message and saving all 
			attachments to disk in the Outlook_ReadEmailFolders example procedure.
- Fixed: Template note adding the 
			oiImpEx.clw to the project for C55 applications.
- Added: C55 and Legacy compatibility to 
			the oiImpExcelEx class
- Added: C55 Legacy version of the 
			ImportExport example
- Fixed: Incorrect Get statement in the 
			ImportExport example.
Version 3.66 Beta - 02 August 2011
	General
	
		- Fixed: Missing files in the HTML Mail 
			(FileExplorer) example.
- Added: New methods to the msOutlook 
			class used in the Generics example which demonstrates the new 
			functionality provided by Office Inside 3. The new code demonstrates how 
			to trap Outlook events and how to automatically restart Outlook in the 
			background if it is closed by the user.
		
			- Init() - calls the parent's Init method and 
				stores the current thread number for event handling
- New event handling methods:
 EventItemSend Procedure (), derived
 EventNewMail Procedure (), derived
 EventReminder Procedure (), derived
 EventOptionsPagesAdd Procedure (), derived
 EventStartup Procedure (), derived
 EventQuit Procedure (), derived
- TakeEvent - handles events from the current 
				thread
- OnQuit - traps the Quit event for Outlook and 
				checks whether Outlook was closed by the object or the user. If the 
				user closes Outlook it is re-initialized.
- RestartOutlook - Restarts Outlook in the 
				background if the user closed the last Outlook window or inspector.
 
- Fixed: msOutlook.UpdateAttendees 
			and msOutlook.AddAttendees where checking the optional 
			parameters incorrectly
- Added: LegacyMail.app example to the 
			Generics example directory. Identical to the Mail.app except that it is 
			based on the Clarion rather than ABC template chain.
- Updated: Removed extraneous code from 
			the Mail.app example (in the Generics folder).
Version 3.65 Beta - 2 June 2011
	General
	
		- Fixed: The msOffice.clw and msOffice.inc 
			files shipped with the Generics.app and Mail.app examples (Examples\OfficeInside\Generics\) 
			were not included correctly in the last release.
Version 3.64	Beta -  1 June 2011
	General 
	
		- Improved: The GetOfficeVersion method now retrieves 
			the version directly from the object and only falls back to reading from 
			the registry in the case where this fails.
- Added: oiOffice.GetVersionFromRegistry method. This 
			is equivilent to the older GetOfficeVersion method and retrieves the 
			current version of Office using the registry. It also checks for the 
			presence of the the Microsoft Office Compatibility pack when checking 
			installed versions.
- Improved: All the Version.lib API 
			functions are now loaded at runtime and version.lib is no longer linked 
			into either the DLL or LIB. This ensures that OfficeInside does not 
			conflict with other accessories that use these APIs.
Excel
	
		- Fixed: oiExcel.GetWorksSheets(*oiObject) not retrieving the 
			Worksheets object correctly
		Outlook 
	
		- Added: New HTML Email example. Demonstrates displaying the HTML 
			version of Emails retrieved from Outlook using CapeSoft FileExplorer.
- Added: New Mail example 
			(in the Generics directory). Use new code in the msOffice.clw and 
			msOffice.inc files provided with the example:
			
				- New msOutlook.GetFilteredMail method retrieves 
					all items in the specified folder using column restriction and 
					optionally record filtering in 
- New msOutlook.MailByDate demonstrates using the 
					mail filtering to retrieve mail that matches a date range
- New msOutlook.FindMail method demonstrates 
					using Find and FindNext to retrieve mail that matches a filter 
					expression.
- Demonstrates Restrict, 
				SetSort,
				SetColumns, FirstItem, 
				NextItem, ResetColumns, FindItems, FindNext 
					etc.
- Added benchmarking of the various approaches to 
					filtering and retrieving mail. Test benchmark results with 806 items 
					in the Inbox:
				
					- Fetch all 806 items using SetColumns in the 
						msOutlook.GetFilteredMail example method to 
						optimize the record retrieval:
 
 1.74 seconds
 
- With Restrict to limit mail being fetched 
						to the desired range using the msOutlook.GetFilteredMail 
						example method:
 
 0.04 seconds
 
- Using FindItems and 
					FindNext 
						to filter and fetch mail items (See the msOutlook.FindMail 
						example method):
 
 0.05 seconds
 
- Using the old GetMailItemsQ method to fetch 
						all items:
 
 9.55 seconds
 
 
 
- Fixed: The Restrict 
			method now correctly restricts the Items collection for the current 
			folder to the specified range.
- Added: UnRestrict 
			method to remove the filter on the collection for the current folder set 
			by calling Restrict.
- Added: SetSort method 
			sets the sort order for a collection in Outlook (For example sets the 
			order that Mail items are retrieved in based on a field such as Received 
			Date).
- Fixed: NextItem method now correctly returns the 
			child in all cases
- Added: Force parameter to the 
		GetItems method. By default this now returns the current Items 
			collect on exists or retrieves the collection if it does not (and 
			fetches the default Folder collections if required). The Force parameter 
			allows the Items collect to always be retrieved, and one exists the 
			current one is released first.
- Changed: The FindNextItem method is now 
			named FindNext.
Work in Process
	
		- Added: New AddPageBreak method to the msExcel class in the Generics 
			example. Demonstrates:
			
				- Using the Worksheets, ActiveSheet and Range object
- Passing an Object as a parameter to a Office method (this is a 
					Work In Progress)
 
- Deprecated: oiBase.ToVariant method.
Version 3.63 Beta - 11 May 2011
	General
		
			- Added: GetType and GetTypeName methods to retrieve the type of a 
				Property and the description of that type.
- Fixed: Bug in the handling of Boolean values when converting to 
				Variants in the PWVariantFactory class.
- Added: Documentation and example code for the GetType and 
				GetTypeName
- Fixed: Incorrect equate for type handling
Version 3.62Beta - 09 May 2011
	General
		
			- Template update for Clarion 8 compatibility. 
				Resolved unresolved externals and other errors im Clarion 8.
Version 3.61 Beta - 06 May 2011
General
	
		- Added: The Generics example now 
			demonstrates populating a queue with mail using the standard 
			GetMailItemsQ method as well as retrieving all individual mail 
			properties using the oiObject class and displaying them on a window. The 
			GetMailInfo method of the new msOutlook example class provides this 
			functionality (see msOffice.clw in the Generics example folder).
- Added: Additional 
			documentation for oiObject and oiParams.
- Added: oiObject.Get() methods now 
			handle multiple return types and internal conversion automatically. The 
			returned variant type is read and an intelligent conversion is done on 
			the passed type.
- Added: oiObject.SetBool method for 
			setting a boolean value. 
- Added: oiObject.SetConst method for setting a value 
			that should be set to one of a set of specified constants (this is the 
			equivilent to calling Set() and passing it a Short, 
			however it also allows equates and constant values to be passed.
- Added: oiParams.AddBool method to 
			allow boolean values to be added to parameters being passed to a method 
			with more clarity (rather than calling AddInt with the 
			isBoolean set to True).
- Added: The AddString method now supports passing 
			Constants (equates) and Shorts using the oiParam:Const and oiParam:Short 
			values for the pType parameter
- Added: oiObject.Get(*short) and 
			oiObject.GetProp(*short) methods.
- Added: oiObject.Set(*short) method.
- Added: Additional oiObject documentation, fixed 
			missing anchors, documented new methods.
- Added: new msWord, msExcel 
			and msOutlook classes, demonstrated in the Generic 
			example (see the msOffice.inc and 
		
			msOffice.clw files in the Generics example folder). These classes demonstrate extending the functionality built in 
			classes using oiObject. All the demonstration functionality that uses 
			the oiObject class is now demonstrated in these classes, which can be 
			reused and extended in your own applications.
- Added: Each of msWord, 
		msExcel and msOutlook example classes are 
			extensively documented in themsOffice.inc and
			msOffice.clw files. The description for 
			each method, along with each parameter, the return types and any 
			additional comments are in the CLW file above each method.
- Added: msWord class methods:
		
			- GetObjects Procedure (), bool, virtual
- MergeFiles Procedure (FILE:queue 
				filesQ), bool, virtual
- InsertFile Procedure (string 
				fileName), bool, virtual
- PasteAndFormat Procedure (long 
				formatType = oiw:FormatOriginalFormatting), bool, virtual
- NewDoc Procedure (<string 
				template>, long newTemplate = oi:False, long 
				documentType=oiw:NewBlankDocument, long visible=oi:True), bool, virtual
- GetCellValues Procedure 
				(*WordTableCells cells, long tableNum = 1), bool, virtual
 
- Added: msExcel class methods:
- GetPageSetup Procedure (), bool, 
			virtual
- AddNamedRange Procedure (string 
			rangeName, string rangeValue), bool, virtual
- Added: msOutlook class methods:
- GetMailItem Procedure (string 
			itemID), bool, virtual
- MoveMessage Procedure (string 
			itemID, <string folderName>), bool, virtual
- NewMail Procedure (<string 
			subject>, <string mailTo>, <string body>), bool, virtual
- SaveMailAs Procedure (string 
			fileName, long mailFormat=oio:olMSG, bool openSavedFile=false), bool, 
			virtual
- SetFileName Procedure (long 
			mailFormat=oio:olMSG), string, virtual
- SendReceiveAll Procedure (), bool, 
			virtual
- GetAttendees Procedure (<string 
			itemID>), string, virtual
- UpdateAttendees Procedure (string 
			attendeeName, <string itemID>), string, virtual
- AddAttendee Procedure (string 
			attendeeName, <string itemID>, long busyStatus = oio:Busy, long 
			requiredAttendee=oio:Required), string, virtual
- GetMailInfo Procedure 
			(*mailInfoType mailInfo)
- SetBusy Procedure (long isBusy = oi:True), bool, 
			virtual
- Added: the Conversion methods are now available for all of the 
		Office application objectL
		
			- PicasToPoints procedure (long pPicas), long, 
				name('PICASTOPOINTS@F15OIOFFICE')
- PixelsToPoints procedure (long pPixels), real, 
				name('PIXELSTOPOINTS@F15OIOFFICE')
- PointsToCentimeters procedure (long pPoints), real, 
				name('POINTSTOCENTIMETERS@F15OIOFFICE')
- PointsToInches procedure (long pPoints), real, 
				name('POINTSTOINCHES@F15OIOFFICE')
- PointsToLines procedure (long pPoints), real, 
				name('POINTSTOLINES@F16OIWORD')
- PointsToMillimeters procedure (long pPoints), real, 
				name('POINTSTOMILLIMETERS@F15OIOFFICE')
- PointsToPicas procedure (long pPoints), real, 
				name('POINTSTOPICAS@F15OIOFFICE')
- PointsToPixels procedure (long pPoints), long, 
				name('POINTSTOPIXELS@F15OIOFFICE')
- LinesToPoints procedure (long pLines), long, 
				name('LINESTOPOINTS@F15OIOFFICE')
- InchesToPoints procedure (real pInches), real, 
				name('INCHESTOPOINTS@F15OIOFFICE')
- CentimetersToPoints procedure (real pCentimeters), real, 
				name('CENTIMETERSTOPOINTS@F15OIOFFICE')
- MillimetersToPoints procedure (real pMillimeters), real, 
				name('MILLIMETERSTOPOINTS@F15OIOFFICE')
 
- Added: New functionality to the Generics Example
		(highly recommended):
		
			- All the oiObject functionality which this example is based on 
				has been moved into three classes - msWord, 
				msExcel and msOutlook. These are in the
				msOffice.clw and msOffice.inc 
				files in the example folder. These classes provide all the normal 
				functionality provided by the OfficeInside classes and expand on 
				them. They serve as an excellent basis for building your own classes 
				to expand the built in functionality as needed. The functionality 
				and parameters of each method are documented above each method in 
				the CLW file.
- ConvertUnits procedure - a generic 
				procedure to convert between millimeters, points and centimeters. 
				Handles all input and output units.
- Extensive Page Setup example code and 
				interface. Demonstrates using the PageSetup object 
				and creating a user interface for the properties. Also demonstrates 
				retrieving the PageSetup values from Excel.
 
- Changed: Improved the accuracy of all unit 
			conversion methods to ensure that rounding issues wouldn't cause values 
			to degrade when switching a values between units a large number of 
			times.
- Note: For a full reference on all objects available 
			in the Office Object Model see the MSDN developer reference:
			- Excel: 
			http://msdn.microsoft.com/en-us/library/bb149081%28office.12%29.aspx
- Outlook: 
			http://msdn.microsoft.com/en-us/library/bb208225%28office.12%29.aspx
- Powerpoint: 
			http://msdn.microsoft.com/en-us/library/bb265987%28office.12%29.aspx
- Word: 
			http://msdn.microsoft.com/en-us/library/bb244515%28office.12%29.aspx
Version 3.60Beta - 4 April 2011
Word
	
		- Fixed: CloseDoc/NewDoc were not releasing all 
			documented interfaces for the previous document, which could result in 
			method calls failing on the new document.The interfaces were correctly 
			released at object construction, so this only affected the creation of 
			multiple consecutive documents.
- Fixed: Spell checking not correctly ignoring HTML 
			escape codes where an escape code was used without any characters other 
			than white space between a pair of tags.
Version 3.59 Beta (1 April 2011)
	General
		
			- Updated: The SpellCheck HTML example application which demonstrates spell 
				checking HTML using OfficeInside and the FileExplorer HTML Editor:
			- Requires FileExplorer 5.31 or later
- Removed old code.
- Initial HTML populated into the control to demonstrate the use 
				of the EditorReady method as well as populating the control for 
				formatted HTML with a number of spelling errors for spell checking.
- Updated the Editor Files being used by the example
 
Word
	
		- Fixed: The SpellCheckHtml example clipping spaces 
			when a section of HTML between two tags ended in one or more spaces. The 
			number of spaces is now retained regardless of any other changes that 
			occur during spell checking.
- Fixed: HTML escape codes such as ' ' were not 
			always being correctly handled when spell checking HTML.
Version 3.58 Beta (30 March 2011)
	General
	
		- Added: SpellCheck HTML (FileExplorer) example 
			application demonstrates using the OfficeInside spell checking to spell 
			check HTML (uses FileExplorer to provide an HTML editor).
		- Updated: The SpellCheckHtml method 
			now handles basic HTML escape codes.
	oiObject and oiParam - Generic Object
	
		- Fixed: The oiObject pointer for the current object 
			and parent object were not being set to Null in the constructor, which 
			could result in incorrect behaviour if they were assumed to be null when 
			the object was created using New().
- Added: Expanded the Outlook functionality 
			demonstrated by the Generics example:
- Added: Generics example expanded Mail and Appointment 
			functionality:
			
			- Mail creation
- Sending and receiving (synchronization)
- Moving mail between folders
- Retrieving a specific folder
- Retrieving a Message object
- Saving items as all formats supported by Outlook (Text, Word, 
				MSG, Unicode MSG, vCard, vCal, iCal etc.)
- Retrieving appointment objects and getting and setting their 
				properties and calling methods
 
- Added: oiObject.MoveTo 
			method moves one object into another, and clears all of the source 
			object properties.
		Outlook
	
		- Added: oiOutlook.FindChildFolder 
			locates a specific folder by name by recursing through all sub folders 
			for a parent.
- Fixed: The oiOutlook.WithFolder 
			was not checking whether the currently select folder pointer was valid 
			correctly. This method is demonstrated in the Generics 
			example.
- Fixed: The oiOutlook.WithFolder method was not retrieving the folder selected as the parent 
			interface was not being used correctly.
- Changed: The oiOutlook.WithFolder method now recurses through all folders in order to locate a 
			folder by name. This allows it to fetch any sub folder based on the 
			folder name.
- Fixed: The oiOutlook.MoveItem(string 
			folderName) method was not always retrieving the specified folder 
			correctly. This method is demonstrated in the Generics 
			example.
- Added: Both 
			MoveItem methods now allow the Item to be passed. If it is 
			omitted, then the currently item (oiOutlook.pItem) is used.
- Change: The FindItems method has been renamed to
			FindItem, as it 
			retrieves a specific item. Use the FindNextItem method to 
			fetch the next matching item.
- New: Generic Access to 
			Outlook Items section in the documentation covering the 
			properties used and the following methods:
 
			| CountItems | Returns the number of items in the current Items 
		  collection |  | DeleteAllItems | Clears the current Items collection |  | FindChildFolder | Retrieves the child folder from a parent Folder that 
		  matches the specified name. This performs a recursive search using the 
		  specified parent as the root. |  | FindItem | Finds an item in the current Items collection (folder) 
		  based on a search string. The FindNextItem method can be used to find 
		  the next matching item. |  | FindNextItem | Finds the next Item matching the search term use with 
		  the FindItem call |  | GetDefaultFolder | Retreives the default Inbox folder as well as the root 
		  folder (Data Store) which contains the Inbox and all other folders for 
		  that store. |  | GetItems | Retrieves the Items interface which represents items 
		  in a folder |  | GetItem | Retrieves a specific item |  | GetItemByID | Retrieve an item from any folder based on the unique 
		  Outlook ID |  | GetItemByValue | Retrieves an item from the current Items (folder) 
		  based on the value of the default field for that item (the default 
		  field varies depending on the item type) |  | GetNameSpace | Retreives the Outlook Namespace. This is the "root" 
		  for all the rest of the data sets stored by Outlook. |  | LastItem | Retrieve the last item from the current Items 
		  collection |  | MoveItem | Moves an items from one folder to another in Outlook |  | MoveItems | Moves all items in the current Items collection to the 
		  specified folder. Allows optional filtering of the items based on a 
		  filter expression. |  | NextItem | Retrieve the next item from the currently selected 
		  folder (Items collection) |  | PreviousItem | Retrieve the previous item from the currently selected 
		  folder (Items collection) |  | RemoveItem | Removes the item from the Items 
		  collection (this does not delete the actual Item from Outlook). This 
		  is the equivilent of filtering out unwanted records from a record set. |  | Restrict | Set a record filter for the result set of items being 
		  returned by Outlook. This allows specific items to be retrieved based 
		  on any of the fields in Outlook. |  | ResetColumns | Resets Outlook to fetch all columns (fields) |  | SetColumns | Restrict the columns (fields) being retrieved by 
		  Outlook for items. This can improve performance by only retreiving 
		  data required, rather than retrieving all fields that Outlook stores 
		  for each item. This is effectively a View on a database. |  | SortItems | Sort the items in an Items collection in either 
		  acending or decending order using the Outlook field specified. |  | WithFolder | Selects a specific folder by name |  
 
- Updated: All documentation example code moved from 
			static syntax highlighting to dynamic JavaScript/CSS syntax 
			highlighting.
Version 3.57 Beta (15 March 2011)
	oiObject and oiParam - Generic Objects
	
		- New: Expanded the Generics example to add Word functionality and 
			demonstrate a variety of the objects available.
oiExcel
		- Fixed: The Excel report output missing columns when 
			processing reports with controls which would overlap columns created for 
			previously processed controls on the page. 
	
	Version 3.56 Beta (02 March 2011) 
 
	
	oiObject and oiParam - Generic Objects
	
		- Added: oiParam.AddNull() method. Adds a "null" 
			parameter to the list. This allows optional parameters to be omitted.
- Updated the Generics example with new examples of Outlook, Word and 
			Excel functionality. 
Outlook
		- Added: GetItemById() method. Retrieves an oiObject 
			for an item using the passed EntryID.
- Added: GetItemByName() method. Retrieve and 
			oiObject of an Outlook item based on the passed name (Outlook matches 
			this against the default field on the item type to find the specified 
			item).
Version 3.55 Beta (24 February 2011)
	General
	
		- Added .attachExisting property. If this is 
			set before the call to the Init method then the object tries to attach 
			to the existing instances of Word, Excel or Powerpoint if there is one, 
			rather than creating a new instances. When the object closes down it 
			does not close the application by default (the application can be 
			explicitly closed by setting the attachExisting property to False before 
			calling the Kill method).
- Added a Log method to the oiCore class (available in all classes 
			throughout Office). This sends the passed string to the system debug 
			output.
- Added a errorMessage and 
			errorFunction property to the based classes. Any call to 
			ErrorTrap() will populate these two strings, which can then be used to 
			display error messages etc. The errorMessage 
			property stores the error message, and errorFunction 
			stores the name of the method that it occured in.
	oiObject and generic objects
	
		- New: oiParams class that allows any number of parameters to be 
			passed to any Office object. See the Generics 
			example. New methods:
		
			- Construct Procedure ()
- Destruct Procedure ()
- Free Procedure ()
- Count Procedure ()
- Fetch Procedure (long pos)
- AddString Procedure (string sVal, long pType = 0)
- AddBString Procedure (string bs)
- AddInt Procedure (long pVal, bool isBool=false)
- Insert Procedure (*long pVal, bool 
			isBool=false)
- Insert Procedure (*ulong pVal)
- Insert Procedure (*string pVal)
- Insert Procedure (*cstring pVal)
- Insert Procedure (*short pVal)
- Insert Procedure (*ushort pVal)
- Insert Procedure (*byte pVal, bool fUnsigned = 
			false)
- Insert Procedure (*real pVal),
- Insert Procedure (*sreal pVal)
- Insert Procedure (*decimal pVal)
- Insert Procedure (*long pDate, *long pTime)
- Insert Procedure (*oiVariant pVal)
- Insert Procedure (*oiObject pObj)
- _AddVariant Procedure (long pVar)
 
 
- New: oiObject.CallEx Procedure calls any member of 
			the Office object with the parameters stored in the 
			oiObject.params member.
- New oiObject.Call procedure. Functionally the same 
			as CallEx(), except that it takes a oiParams object rather than using 
			the oiObject.params member.
- New: oiObject.GetProp Procedure (string 
			propertyName, *oiVariant pValue)
- New: oiVariant type that allows any Office 
			type to be represented in Clarion applications
- Updated the Generics example to demonstrate the use of the new 
			methods and classes. Note: This example has been moved to Clarion 6, as 
			C55 does not support embedding Vista/Windows 7 manifests natively, which 
			is required to interface with Outlook 2010. Not including a valid 
			Vista/Windwos 7 manifest will cause the Outlook 2010 security dialog to 
			not be displayed correctly (note: by default this dialog is only 
			displayed when there is no up to date anti-virus installed, so this 
			behaviour won't occur on many systems).
- New: oiObject.SetString Procedure (string 
			propertyName, string pValue)
- New: oiObject.SetInt Procedure (string 
			propertyName, long pValue)
- New Functionality in the Generics example application:
		
			- Creating a new mail message and setting the values for 
				properties such as the Subject, Body and To fields.
- Saving a mail message to disk in a variety of formats such as 
				text, HTML, MSG, Word Doc etc. (this demonstrates the new oiParams 
				class which allows any number of parameters to be passed when 
				accessing methods and properties of the Office objects).
- Send and Receive All (Synchronise). Demonstrates getting a 
				collection (of Synch objects), looping through the collection and 
				getting each object within it, and calling a method of that object.
- Listing, retrieving and modifying Appointments items (this code 
				existed in previous versions of the example, but has been improved).
- New oiWord example, demonstrates basic functionality - custom 
				Pasting setting the formatting options
 
oiExcel
		- New: Find method 
			allows the document to be searched and returns the address of the cell 
			that the data is found at.
- New: GetRangeAddress method returns the address 
			that an Range object starts at.
Version 3.54 Beta (13 December 2010)
	General
	
		- This version is compatible with Clarion 7.3
- Updated documentation for oiOutlook with new examples of using the 
			generic objects to perform tasks like performing a Send/Receive 
			programatically etc.
	Word
	
		- Fixed: The PrintOut example was calling the Init method for Excel 
			and Word twice, which was preventing it from opening documents 
			correctly.
	oiExcelImpEx 
	
		- Fixed: The CLW file was not being included in the project by the 
			template, resulting in unresolved external errors.
- Fixed: The SetMap method was not correctly setting all queue entries 
			based on the passed queue.
- New ValidateRecord example code in the documentation
- Added ValidateRecord example code to the ImportExport example 
			application
- Added example data to the ImportExport example
Version 3.52 Beta (12 August 2010)
	General
	
		- Updated documentation for oiOutlook with new examples of using the 
			generic objects to perform tasks like performing a Send/Receive 
			programatically etc.
- Fixed: The PageSetup method was failing as the properties were set 
			for the wrong interface.
Version 3.51 Beta (12 August 2010)
	General 
	
		- Updated documentation for oiExcel to include additional examples
- Expanded the oiExcel How To section with new code examples
- Expanded the color handling sections and added links to all relevant 
			methods, properties and other documentation to each of the section.
- Added new color handling sample code.
- Marked old export functions as deprecated and added notes linking to 
			the new oiExcel class.
- Fixed typographic errors
- Expanded documentation for a number of methods in the oiExcel class, 
			added code samples and reformatted the documentation in the new style 
			(including parameters, return value, remarks, examples and references).
Version 3.50 Beta (12 August 2010)
	General
	
		- Clarion 7.2 compatibility updates.
	oiObject 
	
		- The oiObject documentation 
			is now available and documentats the entire class.
- Added a HowTo 
			section to the oiObject documentation.
- The following methods are now available:
- Init procedure (string pName, 
			*oiObject iParent, <long itemNumber>)
- Kill Procedure ()
- GetChild procedure (string cName, 
			*oiObject child, <*long itemNumber>)
- GetChild procedure (string cName, 
			*oiObject child, *string identifier)
- GetParent procedure (*oiObject 
			iParent)
- AsVariant procedure ()
- Get procedure (string 
			propertyName, *long pValue)
- Get procedure (string 
			propertyName, *string pValue)
- Get procedure (string 
			propertyName, *long dateValue, *long timeValue)
- Note: Under Clarion 5.5, 
			the "Get" methods are named "GetProp".
- Set procedure (string 
			propertyName, *real pValue)
- Set procedure (string 
			propertyName, *string pValue)
- Set procedure (string 
			propertyName, *long pValue)
- Set procedure (string propertyName 
			dateValue timeValue)
- Set procedure (string propertyName 
			pValue)
- Set procedure (string 
			propertyName, *oiObject pObj)
- Call procedure (string methodName)
- Call procedure (string methodName, 
			*long pValue)
- Call procedure (string methodName, 
			*string pValue)
- Call procedure (string methodName, 
			*oiObject pObj)
	oiExcelImpEx 
	
		- New oiIExcelmpEx documentation. 
- Added a How To and 
			Examples section, including code for the most frequently 
			used functionality in the class, and the various scenarios that it is 
			used in.
- Note: The Colum/Field mapping support has not been fully tested in 
			this release. It will be tested and new set of examples and templates 
			will be provided with the next release.
- New methods that are now available:
			- Construct Procedure ()
- Destruct Procedure ()
- Init Procedure ()
- InitExcel Procedure ()
- Kill Procedure ()
- Open Procedure (string p_FileName)
- NewWorkbook Procedure (string p_FileName)
- SaveFile Procedure ()
- OpenFile Procedure ()
- CloseFile Procedure ()
- With Procedure (*File f)
- With Procedure (*Queue q)
- With Procedure (*Group g)
- With Procedure (*View v)
- Load Procedure (*File p_File, string 
				p_FileName)
- Load Procedure (*Group p_Group, string 
				p_FileName)
- Load Procedure (*Queue p_Queue, string 
				p_FileName) 
- Load Procedure (string p_FileName) 
- SetupLoad Procedure ()
- Save Procedure (*Group p_Group, string 
				p_FileName)
- Save Procedure (*File p_File, string 
				p_FileName)
- Save Procedure (*Queue p_Queue, string 
				p_FileName),long 
- Save Procedure (*View p_View, string 
				p_FileName) 
- Save Procedure (*string p_FileName)
- SetupSave Procedure()
- SaveData Procedure()
- TakeInit Procedure ()
- TakeSetup Procedure ()
- TakeComplete Procedure ()
- ValidateRecord Procedure ()
- TakeRecord Procedure (*excelImportQType cellsQ)
- InsertRecord Procedure ()
- AssignField Procedure ()
- IgnoreField Procedure (long fieldNum)
- ClearIgnored Procedure ()
- Close Procedure ()
- CloseAndKill Procedure ()
- CreateFooter Procedure ()
- CreateHeader Procedure ()
- AddMap Procedure (long fieldPos colPos)
- SetMap Procedure (*oiColumnMap qMap)
- GetMap Procedure (*oiColumnMap qMap)
- CreateMap Procedure ()
- ClearMap Procedure ()
- FieldName Procedure (long fieldPos), string
- ColumnName Procedure(long columnNumber), string
- CountFields Procedure()
- SetHeader Procedure (string headerText, long colPos)
- HeadersFromFields Procedure (long caseType = 0, 
				long keepPrefix = false)
- RunFile Procedure (string fileName)
- FreeData Procedure ()
- FreeFileData Procedure ()
- FreeQueueData Procedure ()
- FreeGroupData Procedure ()
- ProgressControl Procedure (long 
				progressControl)
- ProgressSetup Procedure (long rangeLow 
				rangeHigh)
- ProgressSet Procedure (long progress)
- ProgressIncrement Procedure ()
- DbgMsg Procedure (string pDbgMessage)
- ErrorTrap Procedure (string errorMessage, 
			string functionName)
- IsIgnored Procedure (long pos)
 
- Internal Methods
			- _ClearReferences Procedure ()
- _ClearAutos Procedure ()
- _GetRecord Procedure ()
- _GetViewRecord Procedure (long fieldPos)
- _ClearRecord Procedure ()
- _SetHeaderText Procedure(*string hText)
 
 
- The following Properties are now available:
- dataType long - 
			The data type being import or exported
- debug long - 
			Enable debug output
 
 Properties used for both import and export
- colMap &oiColumnMap - Maps columns to fields
- ignored &oiIgnored - Ignored fields or columns
- killWhenDone long
- excelFile string(280) - Name of the Excel document
 
 Properties that modify the position to process from, and the 
			number of records to process. These are cleared at the end of each 
			load/save call.
- startRow long - 
			Row to start at in the Excel document
- startCol long - 
			Column to start at in the Excel document
- curRow long - The 
			current row being read/written
- curCol long - The 
			current column being read/written
- numRows long - 
			Number of rows to process
- numCols long - 
			Number of columns to process
- startField long - 
			Field to start at in the data structure when importing or exporting
- numFields long - 
			Number of fields to export
- curRecPos long - 
			Position of the record being processed
- currentField Any 
			- The current field in the data structure
- currentFieldNumber
			long - Position of the current field
- progressControl long - 
			Optional handle to a progress control 
- hideProgress long 
			- Used to automatically unhide a progress control during the process, 
			and then hide it again when complete
- action long - If 
			this is oix:Save, then a save (export) is being performed, otherwise a 
			Load (import) is being performed
- lastError long - 
			The last error code
- errorMessage string(1024) - 
			the error message associated with the last error
- openAfterSave long - 
			If set the file is opened once the save is complete
 
 Export properties
- commitFileRecords long(1024) - How many file records to process in LOAD before committing
- headers &oiHeaders - Queue of custom headers for each column
- appendToFile long 
			- If this is set, then the Excel workbook is appended to
 
- Import properties
- freeBeforeLoad long - Clear/Empty the data structure before loading
- cellsQ &excelImportQType - Queue of cell data for the current row. Allows 
			filtering and modification in the 
 
 Internal Properties
- f &File
- q &queue
- g &group
- v &View
- rec &group
- fileOpened long, 
			dim(100)
- viewOpened long
- bindPushed long
 
- Removed uneeded global extension from the ImportExport example, and 
		corrected the path to the included oiImpEx.clw file.
Excel
	
		- Documented new methods:
			- PrintSheet procedure (*oixPrintProperties 
				printSettings)
- PrintWorkbook procedure (*oixPrintProperties 
				printSettings)
- _PrintOut Procedure (*oixPrintProperties 
				printSettings, long pType=oix:PrintWorkbook)
- SetAlerts Procedure (long alertLevel)
- GetActiveSheet Procedure (*oiObject iSheet)
 
		Outlook 
	
		- Updated Case 1659 (UAC breaks interaction with Outlook):
			Ensure that your applications that will 
			interact with Outlook have a valid manifest file for Vista/Windows 7. 
			Without a valid manifest file, your application may require elevation in 
			order to run, which will prevent Outlook 2007 and 2010 from displaying security 
			prompts to the user. In the event of a security prompt requiring user 
			interaction, this will prevent your application from interacting with 
			Outlook, and it may appears as if your application has locked up while 
			waiting for a response from Outlook. It is strongly recommended that 
			elevated applications do not interact with Outlook directly. The 
			Microsoft design recommendations should be followed - seperated the 
			functionality that requires elevation into a seperate application, or 
			seperate the components that interact with Office into applications that 
			can be run without requiring priviledge elevation. 
- Updated the FAQ with the above information.
- Updated the Outlook security FAQ to cover Outlook 2003 and earlier, 
			Outlook 2007 and Outlook 2010
- New methods ot provide generic access to Outlook using the oiObject 
			class, as to provide improved performance and flexibility when 
			retrieving multiples items (Mail, Contacts, Appointments etc.). Allows 
			the columns to be restricted (improving performance), as well as query 
			style (filtered) access to Outlook data, for dramatically improved 
			performance and efficiency when fetching large data sets, and the 
			ability to synchronise data between Outlook and Clarion.
- GetNameSpace Procedure()
- GetDefaultFolder Procedure()
- WithFolder Procedure(string 
		folderName)
- GetItems Procedure()
- GetItem Procedure(long itemPos)
- GetItem Procedure(long itemPos, 
		*oiObject pItem)
- NextItem Procedure()
- PreviousItem Procedure()
- FirstItem Procedure()
- LastItem Procedure()
- Restrict Procedure()
- SetColumns Procedure()
- ResetColumns Procedure()
- RemoveItem Procedure()
- DeleteItems Procedure()
- MoveItem Procedure(string 
		destFolderName)
- MoveItems Procedure(string 
		destFolderName)
- FindItems Procedure(string 
		searchString)
- FindNextItem Procedure()
- CountItems Procedure()
- _Cleanup Procedure()
- New Properties:
- pNameSpace 
		&oiObject - Root MAPI namespace
- pRootFolder 
		&oiObject - The Folders collection that contains the default inbox
 
 Default folders for each of the item types
- pMailFolder 
		&oiObject
- pContactFolder 
		&oiObject
- pCalendarFolder 
		&oiObject
 
 Current items
- pFolder &oiObject
- pItems &oiObject 
		- The current Items collection
- pItem &oiObject - 
		The currently selected item
- Fixed: The Reminder flag is now correctly retrieved when reading 
		appointments.
 
Version 3.41 Beta (9 June 2010)
	General
	
		- Expanded the new oiObject 
			documentation to cover all the methods provided, along with 
			examples detailing the use of each of the methods and properties.
- The oiObject class now supports passing objects to methods as 
			parameters. See the Moving 
			Mail Between Folders HowTo for an example.
- Fixed a GPF in the Kill method as a result of a pointer being 
			disposed of twice.
Version 3.40 Beta (4 June 2010)
	General
	
		- Clarion 7.2 Compatibility.
- Expanded the "Generics" example and added a new section documenting 
			the new oiObject class, which provides full access to the Office Object 
			Model.
- Coming soon: Additional examples of using oiObject to move mail and 
			other items between folders in Outlook, as well as manipulating Excel, 
			Word and Powerpoint.
	Excel
	
		- New oiExcelImpEx class provides powerful and simple import and 
			export functionality to and from Excel using Clarion Files, Queues, 
			Views and Groups.
- Added an ImportExport example that demonstrates using the new 
			oiExcelImpEx class.
- Initial oiExcelImpEx documentation
- Coming soon: new import and export templates.
	Version 3.21 Beta (7 May 2010)
	General
	
		- Resolved duplicate symbol error in C7.1 in local (lib) mode for apps 
			using FileExplorer and OfficeInside. 
- Resolved a duplicate symbol error in C7.1 in local mode when using 
			both the Topspeed and DB4 file drivers and Insight Graphing with 
			OfficeInside and FileExplorer.
Version 3.21 Beta (3 May 2010)
	General
	
		- New "Generics" example demonstrates using the oiObject class to 
			interact with Outlook.
- Expanded the oiObject support in the oiOutlook class, to allow 
			objects to be retrieved and used more effectively.
- New: oiGetChild() method that allows a string to be passed 
			specifying which child is retrieved.
- For example, get an Appointment Item from Outlook based on the ID, 
			set and get properties from the object, and then add a Recipient (an 
			attendee) to the appoinment, and set properties for that object.
 
Outlook       oiOutlook
Namespace     oiObject
Appointment   oiObject
Recipients    oiObject
Attendee      oiObject
ItemID        string(_oit:EntryIDSize)  
attendeeList  string(1024)  
 
AddAttendee routine
    ident = 'MAPI'
    if Outlook.iApplication.GetChild('GetNamespace', Namespace, ident)
        
        if Namespace.GetChild('GetItemFromID', Appointment, ItemID)
            Appointment.Set('BusyStatus', oio:Busy) 
            
            if Appointment.GetChild('Recipients', Recipients)      
               
                if Recipients.GetChild('Add', Attendee, attendeeName)                      Message('Attendee Added.')
                    Attendee.Set('Type', oio:Required)
                else
                    Message('Failed to add an Attendee.')
                end
                
                Appointment.Call('Save')
                 
                Appointment.Get('RequiredAttendees', attendeeList)
                Display(?attendeeList)
            end
        else
            Message('Could not get the requested appointment, the ID may be invalid.')
        end
    end
    Do Cleanup
-  Fixed oiObject.GetChild not returning True when successful when 
			passed a string identifier for the specific child to be retrieved.
	Word
		- Fixed: The NewDoc method was not working when a 
			file name was passed to the method (when a file name is passed, that 
			file is used as the template for the new document).
- Fixed: OpenDoc not returning true (1) when the 
			document was opened successfully.
- New documentation for the 
			SaveAs method, including a full list of all formats for 
			Office 2003 and earlier, and Office 2007 and later. Also includes 
			multiple examples, and a full discussion on the various options for 
			ensuring compatibility across versions of Word. 
			Recommended reading!
	Excel
	
		- Fixed: SelectWorksheet not selecting the specified 
			sheet.
- Changed: Initial optimisation and refactoring of the methods related 
			to interaction with work sheets. 
Version 3.20 Beta (12 April 2010)
	General
	
		- Added: oiObject.Kill method. This method cleans up 
			and disposes all memory allocated for an oiObject instance.
- Added: iApplication object to each of the classes. 
			This generic oiObject represents the 
			application and can be used to call methods and access properties of the 
			application associated with the OfficeInside classes, as well as get 
			child object for that application.
- The new generic oiObject class is now functional and available for 
			use:
			
				- Init - creates the object, using the passed 
					name:
 iSheet              
				oiObject
 ExcelBook           
				oiExcel
 code
 ExcelBook.Init()
 :
 iSheet.Init('ActiveSheet', 
			ExcelBook.iApplication)
- GetChild - gets a child object, such as a 
			MailItem from a Folder or a Sheet from a Workbook.
 ExcelBook.iApplication.GetChild('ActiveSheet', 
			iSheet)
- GetParent - retrieves the parent object.
 ! Use to retrieve a parent object of the passed object.
 iSheet.GetParent(iWorkbook)
- GetProperty - gets the value a property of the 
			object using the property name. For example:
 iWorkbook.GetProperty('FullName', 
			workbookFileName)
- SetProperty - Sets the property of the object 
			to the passed value. Example:
 iActiveSheet.SetProperty('Name', 
			'Accounts Nov')
- CallMethod - call a method of the object. 
			Example:
 iSelectedSheet.CallMethod('PrintPreview', 
			oi:False)
 
- Using a generic oiObject:
 iSheet              
		oiObject
 ExcelBook           
		oiExcel
 code
 ExcelBook.Init()
 
 :
 iSheet.Init('ActiveSheet', 
		ExcelBook.iApplication)
 
 iSheet.GetChild('PageSetup', 
		iPageSetup)
 
 :
 centerFooter = 'My Worksheet':
 iPageSetup.Set('CenterFooter', 
		centerFooter)
- Excel Editable Report Output. Resolved (Fixed) Case 870:   Blank 
			rows and columns not being deleted 
- Fixed: Potential memory leak when destroying an OfficeInside object.
- Tested OfficeInside with MS Office 2010.
- Resolved EXP file export inconsistencies, particularly for C55.
- Added a officeVersion property, which 
			retrieves the version of Microsoft Office when the object is 
			initialised. Note: You can get the version of Office directly by calling 
			the GetOfficeVersion method. This can be used before 
			the object is intialised to check for a valid version of Office - if no 
			version of Office is installed this method returns zero, and if the 
			version returned is less than 9 (Office 2000), then the version of 
			Office available is too old. The versions returned are:
			
				- 14     Office 2010
- 12     Office 2007
- 11     Office 2003
- 10     Office XP
- 9       Office 2000
 
- The GetOfficeVersion method now supports all 
			version of Office up to version 20 (future releases).
- Fixed: Incorrect icons used in the example application.
- Added: The main Demo example now allows the printer to be selected 
			from a list when performing a mail merge to a printer. This also 
			demonstrates the use of the new oiUtil class to fetch a list of all 
			printers installed on the machine, as well as using the SetPrinter method to set the printer for Word
			
				- Notes: 
 1. When using the PrintOut method the printer to 
					use can be passed directly to the method, and SetPrinter 
					does not need to be called.
 2. If no printer is set (for both a mail merge and when calling
					PrintOut), then the current printer (usually the 
					system default) is used.
 
- Examples: Demo: Removed the empty Wizard procedure from the demo
- Examples: Demo: oiExcelImportWizard is now called from the button 
			and correctly place in the procedure tree.
- Examples: Demo: The About window now demonstrates the use of the
			GetVersion method to display the version of Office 
			installed. This uses the oiOffice class directly, and retrieves version 
			without initialising any of the Office applications. Note: The version 
			is automatically retrieved and stored in the officeVersion 
			property of each object when a specific object is initialised.
- Examples: Demo: Main Word example - fixed the display of methods 
			being called in the listbox (note: some methods may not display in this 
			list as the internal method handling is being updated and improved, this 
			will not affect functionality or Word event callbacks).
- Examples: Demo: Added Document Statistics to the "Other" menu for 
			the main Word example.
- Examples: Demo: Added a "Unit Conversion" example to the "Other" 
			menu for the main Word example.
- Changed: The template now checks whether %ApplicationLocalMode is 
			defined, otherwise it assumed that the project is in DLL mode. 
- Resolved (implemented): Case 1052:   DLL Function to check whether 
			Office applications are available. Can be done by calling th 
			GetOfficeVersion provided by all the classes. If the 
			method returns 0, then Office is not available.
	Word 
	
		- Spell Checking: Changed: By default Word is now initialised when the 
			spell checking is first called, if it has not already been initialised. 
			This can speed up the procedure start significantly, and only intialises 
			Word when the needed (if the spell checking functionality is not used, 
			then Word is never initialised). The object is reused until the 
			procedure is closed, at which point it is automatically cleaned up.
- Spell Checking: Added: Automatic initialisation and creation of the 
			document and spell checking interfaces. These are now persistent for the 
			lifetime of the procedure, improving performance. Cleanup is done when 
			the procedure exits.
- Spell Checking: Fixed: When spell checking and RTF control the 
			actual RTF code was being retrieved in certain cases (an empy RTF 
			control, or a control that only contained whitespace). The text is not 
			correctly retrieved.
- Note: Word 2010 appears to have an error in one of the interfaces 
			that is causing spell checking to fail. This has been reported to 
			Microsoft.
- Fixed: Spell checking errors and template error in C55 and C6. The 
			spell checking has been updated and improved for all versions of 
			Clarion.
- Resolved (fixed): Case 1660:  Spell checking GPFs on an empty RTF 
			control.
- Resolved (implemented): Case 2212:  Spell Checking template - change 
			to init based on the user's choice (Word is initialised when the spell 
			checking code is first called, however the user can intialise it 
			earlier, and the spell checking code will automatically use the 
			intiailised instance).
- Resolved (fixed): Case 1661:  Spell checking doesn't handle 
			compositions. Spell checking now handles string that contain 
			compositions such as "isn't"; "wouldn't"; "it's"; "could've" and so on.
- This version includes major refactoring and a rewrite of a large 
			portion of this class.
- Support for multiple documents. When a new document is opened or 
			created it becomes the active document, and when a document is closed, 
			the next available document becomes the active one. This includes 
			documents opened by the user - calling oiWord.GetActiveDocument(true) 
			will get the active document for use, regardless of whether OfficeInside 
			created or opened the document or not.
- The Open, Save and SaveAs methods now use the new format by default 
			under Office 2007 and later.
- Added: When saving a document using the default format the version 
			of Word being used is detected and the correct format selected 
			automatically. This can be overridden using the pFileFormat parameter.
- Added: New formats for opening and saving files.
- Added: When opening a document the native format of the document is 
			used rather than forcing a specific format.
- Fixed: Incorrect message that there is not sufficient buffer size 
			for replacing a word when spell checking.
- Added: Opening documents using a Password is now supported.
- Improved efficiency of the OpenDoc method.
- Added the Documents interface to the class. Will provide support for 
			working with multiple documents simultaneously.
- Closed (Fixed) Case 1611:  FindText always 
			returns 1, even when nothing is found 
- Rewrite of the following methods to improve performance, memory 
			usage, error handling, and improve the class structure:
		    
				- _InitWordSelection()
- _InitRange() - creates the range interface
- _WrapperSelection() - handles SetSelection(); 
					MoveLeft() etc. Will be replaced and deprecated in future versions.
- _WrapperDocument() - handles document level 
					options such as self.SetBackground(). Will be replaced and 
					deprecated in future versions.
- _KillRange()
- _InitTables()
- _InitInlineShapes()
- _WrapperParagraphFormat() - will be replaced in 
					future versions.
- CheckSpelling_Init()
- _WrapperStoryRanges() - will be replaced in 
					future versions
- _InitInlineShapes()
- InsertPicture()
- SaveAs()
- Underline()
- _WrapperWordFont() - will be replaced in future 
					versions
- _InitWordFont()
- _InitPageSetup()
- _InitSystem()
- GetFileName()
- CountCharacters()
- SetSelection()
- _WrapperTableRows()
- Undo()
- _WrapperDocument() - Complete re-write. Will be 
					split into individual methods using the new interfaces, and 
					deprecated, along with all other "wrapper" methods.
- Redo()
- RefreshScreen()
- _WrapperActivePane() - will be replaced in 
					future versions.
- _WrapperCommandBar() - will be replaced in 
					future versions.
- ShowToolbar()
- HideToolbar()
- CountOpenDocs ()
- PrintPreview() 
- PrintPreview(long) 
- CheckSpelling_Init()
- SetActivePrinter()
- CountCharacter - complete rewrite, now calls
					DocumentStatistics
 
- Rewritten and refactored to support multiple simultaneous documents, 
			improve performance, reduce overhead etc.
		
			- NewDoc()
- OpenDoc()
- CloseDoc()
 
- The following methods are now obsolete and deprecated:
			- _KillApplication
- _KillSystem
 
- New Methods:
			- GetDocuments - Gets the Documents interface
- GetActiveDocument - Get the ActiveDocument 
				interface
- GetRange - Get the Range interface
- GetWindow - Get the ActiveWindow interface
- GetPane - Get the ActivePane interface
- StoreDoc - Stores each new or opened document 
				in the Documents queue as an oiObject
- RemoveDoc - Removes a document from the 
				.Documents queue, typically when it is closed.
- ReleaseDocs - Clears the .Documents queue and 
				releases all memory allocated.
- GetDialogs - Get ths Dialogs interface and the 
				Dialog interface for the File->Printers dialog (used for setting the 
				active printer for Word).
 
- New Methods (general use)
		
			- DeleteSelection - Delete a selection
- RefreshDocs - Refreshes the list of available 
				documents and populates the .Documents queue with all the currently 
				open documents.
 
- New Documents queue, stores all open documents as a queue 
			of oiObjects. The documents can be switched 
			between, manipulated, and otherwise fully accessed  using the 
			interface provided by the new oiObject class.
- Rewrote SetPrinter, which aso fixes it returning an 
			incorrect value
- Resolved (fixed): Case 1595:   GetFontNames is not working - 
			returning an empty queue. Note: This functionality in broken in Office 
			2010 Beta. This has been reported to Microsoft.
- Resolved (implemented): Case 1299:   DeleteSelection 
			method - deleted the current select in Word.
- Resolved (implemented): Case 1588:   Page orientation and setup, 
			margins etc. - implemented via both the Update and
			PrintOut methods.
- Resolved (implemented): Case 1449:   Add Documents queue that stores 
			Document objects 
- Closed (duplicate): Case 1931:   Autofilter not 
			properly implemented 
- Resolved (implemented): Case 2216:   Version function needs to 
			support checking for Office 2010 
- Resolved (implemented): Case 1127:   SaveAs function - Save As Html 
			saves a "Web archive" .mht (EML) file, needs an HTML option
Outlook
	
		- Closed (Not reproducible) Case 1659: UAC breaks interaction with 
			Outlook. 
- Closed (Not reproducible) Case 1667: Appointments not all being 
			fetched when UAC is turned on 
- Resolved (Implemented) Case 373: The oioFolderItemsQ does not have 
			date or time fields. 
- Resolved (By Design) Case 1119: IMAP folders not included in the 
			Folder list that is retrieved. This is how the Microsoft Outlook Object 
			Model is designed. 
- Resolved (Implemented) 
			Case 516: Increase Property Size (Body field for items).
- Fixed: Problems calling the oiSendEmail() function, which was 
			failing under newer versions of Office.
Excel
	
		- Added: OpenWorkbook now prompts the user to select a file if the 
			passed file name is blank or omitted. Previously calling with a blank 
			file name would simply fail. The file name can be passed, or a blank 
			file name can be passed, or the parameter can be omitted entirely.
- Resolved (Implemented) Case 1248: Expose additional print properties 
			for Excel. See the PrintWorkbook() and 
			PrintWorkSheet() methods.
- Deprecated: OpenWorkbook_LB method. The 
			functionality is provided directly by the OpenWorkbook 
			method.
- Resolved (Implemented) Case 1408: Expose the 'DisplayAlerts' 
			property. See SetAlerts()
- Added: GetActiveSheet(). Creates an 
			oiObject that represents the currently active sheet.
- Added: GetPageSetup(). Creates an 
			oiObject that represents the PageSetup object. This 
			contains all the Page Setup settings for the currently active worksheet.
- Resolved (Duplicate) Case 1687: Add OpenHeader and CloseHeader 
			methods. These are exposed by the PageSetup property, which is being 
			exposed via the GetPageSetup() method.
- Resolved (Implemented) Case 1616: Expose the Zoom property in Office 
			Inside. Implemented via the PageSetup object.
- Resolved (Implemented) Case 1877: Page Layout Options. Implemented 
			via the PageSetup object.
- Resolved (fixed) Case 1934: C7 compatibility for editable reports.
- Resolved (Implemented) Case 1935: Set Page Margins. Implemented via 
			the PageSetup object.
- Resolved (Duplicate) Case 1938: Set page zoom. Implemented via the
			PageSetup object.
- Resolved (Fixed) Case 1985: Editable reports not working in C7 PE.
- Resolved (Duplicate): Case 1370: Expose the PageSetup object 
- Resolved (Duplicate): Case 1867: Print Setup/Settings 
			propeties/methods 
- First round of refactoring and optimisation:
		
			-  _WrapperRange - will be replaced in 
				future releases
- InsertRow
- WriteToCell
- SelectCells
- InsertColumn
- SetCellBackgroundColor
- GetCellBackgroundColor
- CountUsedRows - complete replacement, 
				encapsulates the functionality within the method itself, and adds 
				full error handling. Returns the number of rows that contain data, 
				or returns -1 if an error occurs and calls the ErrorTrap() method
 
- Old Excel Import template now cleanly closes the document rather 
			than try to save it (new import template coming soon)
- SaveAs method now automatically detects the version and uses the new 
			Excel format by default for Office 2007 and later.
- Fixed: Example data - some example had old data shipped
- Updated: All the example applications have been updated, tested and 
			improved.
- If the Excel report output fails to save, the created Excel document 
			is then displayed to allow the user to save it to an alternate location.
- Fixed Editable Report output not calculating columns correctly when 
			placing data.
PowerPoint 
	
		- Refactored methods and interfaces for future expansion of this 
		class.
Version 3.15 Beta (21 January 2010)
	General
		- Modified template, DLLs, LIBs and linking for C7 and C7.1 
			compatibility.
- _ABCLinkMode_=>1 set to 0 in C7.1 and C7.0 build for the LIB 
			compile.
- Ship pwutil.lib, and link at the project level
- Changed projects to release mode to work around broken Assert 
			function in Clarion 7.0. Fixes errors such as: "Assertion failed on 
			line: 1461 in file pwcom.clw when calling ReplaceText".
- Fixed: Assert messages in Clarion 7.0, as a result of the broken 
			Assert statement in C7.0 (see above). This error only affect Clarion 
			7.0, it is fixed in Clarion 7.1.
- Tested build for regression in Clarion 6 in Local and Standalone 
			modes.
- Test build for regressions in Clarion 5.5 in Local and Standalone 
			modes.
	Excel
	
		- New: Added a SetAlerts() method to enable or 
			disable the display of alerts. Can be set to true (1) or false (0). If 
			alerts are disabled, then Excel will assume the default value rather 
			than prompting the user. 
	Word
	
		- Note: There is a known bug in the spell checking for RTF controls. 
			When the control is empty, or only contains control characters (such as 
			CR,LF pairs), the GetText method is returning the underlying RTF rather 
			than the text itself. This will be resolved for the next release.
		Outlook 
	
		- One report of the Address Book/Contacts not working in the demo 
			application. Tested in Office 2003 and 2007 under XP, Vista and Windows 
			7. Note that the security settings can interfere, particularly in Office 
			2007. If the user has selected to disable all interaction with external 
			applications, the functionality will not work. The default setting in 
			Office 2007 is to prompt the user if the anti-virus solution is out of 
			date (or not installed). The new section of the docs on
			Outlook Security covers this issue in 
			detail.
- Added: Outlook Security section 
			to the Outlook documentation (If you use 
			Outlook, this section should be considered required reading. Ignore it 
			at your own peril!).
Version 3.14 Beta (31 December 2009)
	Word
	
		- New: The PrintOut() method now supports setting the 
			printer using the PrinterName parameter.
- New: SetPrinter() method. Allows the printer for 
			the current Word document to be set. 
- New: SetAlerts() method allows the alert level to 
			be set to oiw:AlertsNone(0), oiw:AlertsMessageBox(-2),  or 
			oiw:AlertsAll(-1).
Version 3.13 Beta (30 December 2009)
	Excel
	
		- Fixed: ReadCell truncating data at 255 bytes. The full 32KiB is now 
			supported.
Version 3.12 Beta (23 December 2009)
	
	General
	
		- Fixed: Clarion 7.0 and 7.1 template compatibility
- Fixed: Linker problems in Clarion 7.1
- Fixed: Editable report template options causing problems in Clarion 
			7.1 PE as a result of template changes in Clarion 7.1 (Clarion 
			Enterprise is unaffected).
- Fixed: Word editable report output not displaying the selection 
			option at runtime when used with Fomin Report Builder.
- Added: Performance improvements for the editable report output
		- Note: Non public pre-release versions of Clarion 7.1 prior to the 
			office 6545 build are NOT supported, as a result of 
			linker changes and fixes in the official 7.1 release.
Version 3.11 Beta (14 December 2009)
	General
	
		- Fixed: The Word Editable report template wasn't always providing the 
			option to print to Word at runtime when using with Fomin Report Builder 
			reports.
Version 3.10 Beta (03 December 2009)
	General
	
		- Deprecated: The Benchmark example is deprecated and has been removed
- Fixed: The Init() method prototype was incorrect in the Two Printers 
			example
- Fixed: An assert firing when compiled in C7 debug mode ("assertion 
			failed on line: 382 in file pwcom.clw")
- New: ProcessToExcel example application which 
			demonstrated creating an Excel workbook, inserting data from a table, 
			saving, and closing the workbook Automatically using a Process 
			procedure.
- New: ExportBrowse example. Demonstrates creating a 
			working, dynamically exporting all fields in a queue or a file to the 
			workbook, and saving and closing the workbook (as well as optionally 
			displaying it to the user). The approach used for the export can be used 
			to export any file or queue, regardless of the fields in the queue or 
			table.
- Update documentation, and list all the examples in the Examples 
			section, along with descriptions of all examples.
- New editable report output templates for Word and Excel. These 
			replace the old templates and provide improved integration with 
			Clarion's report templates
- Editable report output support for Legacy applications
- Editable report output support for Fomin Report Builder
- Improved editable report output support for CPCS
- Improved editable report output support for other third party 
			reporting and previewing templates
- Added: Editable reports for Excel and Word are now fully support in 
			Legacy application.
	Word
	
		- New: ReplaceInString() method, allows one or more 
			instances of a substring to be found and replaced in a string (does not 
			require Word).
- Fixed: Spell Checking now fully supports 
			Clarion 7 (fixed a GPF that could occur under C7).
- Fixed: The "Spell checking complete" message being displayed on 
			controls that were excluded from spell checking (although no spell 
			checking was actually performed the message was still displayed).
- Fixed: The spell checking template "exclude/include" controls 
			options were not functioning correctly.
- New: 
			DocumentStatistics() method with the following options:
			- oiw:StatisticCharacters: Count of characters.
- oiw:StatisticCharactersWithSpaces: Count of characters including 
				spaces.
- oiw:StatisticFarEastCharacters: Count of characters for Asian 
				languages.
- oiw:StatisticLines: Count of lines.
- oiw:StatisticPages: Count of pages.
- oiw:StatisticParagraphs: Count of paragraphs.
- oiw:StatisticWords: Count of words.
 
	Excel 
	- Improved: Editable Report Output now supports a far 
		wider variety of reports and provides intelligent positioning for even 
		complex reports. The previous version still had problems with reports that 
		had few "columns" near the top of the report, but had controls spread out 
		horizontally. It was creating columns for these controls, which then 
		offseted columns created further down, which should have been "inserted" 
		before these existing columns, but were instead added after them. The code 
		has been refactored to handle these cases for both rows and columns.
Outlook
	
		- Added: A new "SimpleEmail" example that 
			demonstrates sending a text only email using Outlook using a minimal 
			window, and only one line of actual code.
Version 3.03 Beta (9 November 2009)
	Word
	
		- New: ReplaceInString() method, allows one or more 
			instances of a substring to be found and replaced in a string (does not 
			require Word, or the Init method to be called).
- New methods (methods that existed have been expanded, improved and 
			are now fully supported by the templates):
			
				- SpellCheckString
- SpellCheckHtml 
- SpellCheckRTF
- ReplaceInString
 
- New callback methods:
		
			- GetRtfText
- ReplaceRtfText
- SpellWord 
 
- New: Completely replaces Spell Checking. Provides improved spell 
			checking for text, RTF and HTML.
- New: Replace All functionality in spell checking is now implemented
- New: Spell checking is now object based and no longer generates 
			large amounts of code for each control on the window
- Improved spell checking performance and efficiency.
- New spell checking control template allows the controls and code to 
			be populated onto any window
- Control template based spell checking eliminates the maintenance 
			required by the previously source based TXA import and helper template.
- Spell checking no longer requires any other extensions - just the 
			control template needs to be populated onto a window (or the provided 
			utility template can be used to add the window to your application 
			automatically).
- New spell checking is fully backward compatible. We recommend 
			replacing the old spelling suggestions window with the new one.
- Note: If the old template is used a warning at compile time will be 
			displayed once. This warning will not be displayed on subsequent 
			compilations of the application.
- New: oiWord.PageSetup() 
			method allows all page setup properties for the current document to be 
			modified.
- Documentation updates and improvements
Version 3.01 Beta (13 October 2009)
	General
	
		- Fixed: Missing files from the installer
- Fixed: Missing Example data in the installer
- Fixed: Compile errors in C7
	General
	
		- Added: oiApiBase class provides a base class that 
			encapsulates basic API functionality, debugging and error logging
- Added: oiUtil class for general functionality 
			outside of the Office classes, for example listing all printers on the 
			system and populating them into a queue. Useful with the new 
			PrintOut methods that allows fully automated printing to any 
			printer with no user interaction
- Added: oiUtil.EnumPrinters method populates a queue 
			with a list of all printers installed on the system. See the new
			PrintOut example application.
- Added a new oiObject class. This represents any 
			Office object, such as a mail item, workbook, worksheet, chart, mail 
			folder, address book entry etc. This provides generic access to the 
			methods and properties of Office objects, including those not exposed 
			through the other OfficeInside classes.
 Some of the new methods provided by this class include:
				- GetProperty - gets the value a property of the 
					object using the property name. For example:
 iWorkbook.GetProperty('FullName', 
					workbookFileName)
- SetProperty - Sets the property of the object 
					to the passed value. Example:
 iActiveSheet.SetProperty('Name', 
					'Accounts Nov')
- CallMethod - call a method of the object. 
					Example:
 iSelectedSheet.CallMethod('PrintPreview', 
					oi:False)
- Init - creates the object, using the passed 
					name:
 iSheet.Init('ActiveSheet', 
					ExcelBook.iApplication)  iSheet.GetChild('PageSetup', 
					iPageSetup)
 centerFooter = 'My Worksheet'
 iPageSetup.SetProperty('CenterFooter', 
					centerFooter)
- GetChild - gets a child object, such as a 
					MailItem from a Folder or a Sheet from a Workbook.
- GetParent - retrieves the parent object.
 
- Added: A new PrintOut example application that 
			demonstrates using the new printing options for both Word and Excel.
- Entirely new Report Output engine.
			
				- The new Editable Report output engine for Excel extends the 
					output abilities and now creates well formatted Excel spreadsheet 
					without requiring specific alignment and sizing of controls. 
- Intelligent column and row checking allows controls to be 
					automatically assigned to the correct column and row without 
					specific alignment requirement
- Improved report processing speed (additional performance 
					improvements are coming in future releases).
 
	Word 
	
		- Fixed/Improved: All the unit conversion methods (PicasToPoints,
			PixelsToPoints, PointsToCentimeters 
			etc.) now take the correct parameter types, and return using appropriate 
			types rather than passing and returning strings.
- Improved: All unit conversion methods are now optimized and no 
			longer use a wrapper method.
- Added: Completed PointsToPixels and 
			PixelsToPoints methods.
- Fixed: The PrintOut method is now fully functional 
			and allows completely automated printing without any user interaction. 
			See the PrintOut example application, which also demonstrates the use of 
			the new 
- Added: Event handling functions (Note that 
			these are not tested or supported in this release).
			
				- oiWord.EventStartup( )
- oiWord.EventQuit( )
- oiWord.EventDocumentChange( )
- oiWord.EventDocumentOpen( )
- oiWord.EventDocumentBeforeClose( )
- oiWord.EventDocumentBeforePrint( )
- oiWord.EventDocumentBeforeSave( )
- oiWord.EventNewDocument( )
- oiWord.EventWindowActivate( )
- oiWord.EventWindowDeactivate( )
- oiWord.EventWindowSelectionChange( )
- oiWord.EventWindowBeforeRightClick( )
- oiWord.EventWindowBeforeDoubleClick( )
- oiWord.EventEPostagePropertyDialog( )
- oiWord.EventEPostageInsert( )
- oiWord.EventMailMergeAfterMerge( )
- oiWord.EventMailMergeAfterRecordMerge( )
- oiWord.EventMailMergeBeforeMerge( )
- oiWord.EventMailMergeBeforeRecordMerge( )
- oiWord.EventMailMergeDataSourceLoad( )
- oiWord.EventMailMergeDataSourceValidate( )
- oiWord.EventMailMergeWizardSendToCustom( )
- oiWord.EventMailMergeWizardStateChange( )
- oiWord.EventWindowSize( )
- oiWord. EventXMLSelectionChange( )
- oiWord.EventXMLValidation( )
- oiWord.ErrorEventDocumentSync( )
- oiWord. EventEPostageInsertEx( )
- oiWord.EventMailMergeDataSourceValidate2( )
- oiWord.EventUnknown( )
 
	Excel
	- Added PrintSheet method to print the current sheet and 
		allow the page range and number of copies to be specified.
- Added PrintWorkbook method to print the current 
		workbook and allow the page range and number of copies to be specified.
- Added _PrintOut method that handles sheet and workbooks 
		printing (typically not called directly)
- Added GetActiveWorkbook method to retrieve and oiObject 
		that represents the currently active Workbook object. This may not be the 
		workbook that relates the the oiExcel object, it is whichever workbook is 
		currently active in Excel. This allows the Workbook to be interacted with 
		using the generic access methods provided.
- Added GetCurrentSheet method
- Added GetActiveSheet method
- Added SetActivePrinter  method
		(not currently supported)
- Added GetActivePrinter method
- Added GetWorksheets method
Version 2.77 (20 July 2009)
	General 
	
		- Fixed: Fixed incorrect release dates and version number in the 
			History doc.
- Fixed: Error in the C7 LIB that caused FM3 to not upgrade files.
	Excel 
	
		- Fixed: CloseWorkbook method returning 0 incorrectly when no 
			parameter was passed to specify the behaviour (the workbook was 
			correctly closed, but the return value was incorrect).
- Fixed: RenameWorksheet()
Version 2.76 (14 July 2009)
	General 
	
		- Fixed: Fixed incorrect release date for 2.74 in the History 
			document.
- Fixed: Compatibility problems with OfficeInside and editable reports 
			between various versions of Clarion
- Fixed: Long standing issue with the editable report classes and a 
			potential conflict with FM3, which prevented files from upgrading in 
			some cases.
- Changed: The Editable Report classes now ship as source code and are 
			added at the project level. The underlying classes are contained in 
			_oiABPROI.clw and oiABPROI.inc and the ReportGenerator interface is 
			defined in oiABPROI.clw.
	Word
	
		- Fixed: Fixed the SpaceBefore and SpaceAfter options of the 
			SetParagraphFormatting not working correctly.
Version 2.74 (06 July 2009)
	General
	
		- Fixed: OfficeInside is now compatible with Clarion 7 is both Local 
			and Standalone modes.
	Excel
	
		- Fixed: The oiExcel.ExcelImport() method  was not correctly 
			retrieving the filename from the user when no filename is passed. The 
			method can be called with a blank file name, in order to prompt the user 
			for the file to import:
 ExcelDoc.ExcelImport ('', 
			?Progress, numColumns, startRow)
- Added: Equates for passing to 
			oiExcel.CloseWorkbook( ) to determine the save behaviour:
 oix:Default  
			equate(1)
 oix:DontSave equate(2)
 oix:Save     equate(3)
- Fixed: The oiExcel.ExcelImport() method was prompting to save the 
			document before closing.
- Fixed: The oiExcel.ExcelImport() method stopping before importing 
			all rows if the startRow parameter was passed.
Version 2.74 (19 June 2009)
Outlook 
	
		- Fixed: The Contact HomeAddressStreet property was not being 
			updated when the UpdateContact method was called to update the entire 
			contact from a group (updating the individual property worked correctly, 
			as did retrieving the value from the Outlook contact). 
Version 2.73 (15 June 2009)
	General 
	
		- Fixed a compile error when using the Editable Report templates in 
			current build of C7 (5675). The SoftVelocity ReportGenerator interface 
			changed in this release (ProcessText reverted to the C6 protoype). This 
			resolves the "No matching prototype available" error in oiABPROI.clw on 
			compilation.
Version 2.72 (11 June 2009)
	General
	
		- Documentation improvements, new navigation and menu system etc.
- Changed: The oiBase.NewObject() method now requires the passed pItem 
			to have been allocated before calling it (previously it allowed a null 
			pointer to be passed, which would result in errors).
- Fixed: Memory leak in the oiExcel object because of handles to 
			interfaces not being freed.
- Fixed a problem with methods ignoring calls because of an incorrect 
			flag being set on intialisation (prevented Mail Merge from working in 
			2.71).
	Excel
	
		- Added: New oiExcel.Replace procedure to provide additional find and 
			replace parameters (string pFind, string pReplace lookAt=0 
			searchOrder=1 lookAt=2 matchCase=0 matchByte=0). 
- Fixed: ReplaceText (): Changed internal calling to not pass the last two 
			parameters (searchFormat and replaceFormat), neither of which was used. 
			Also corrected one of the parameters being passed incorrectly.
- Changed: ReplaceText(): now returns True for success and False for 
			failure. 
- Changed: ReplaceText(): The replacement string may be an empty string, it is 
			perfectly legal to replace a string with nothing (removing it)
- Added: New internal method GetCells() returns the Cells range object.
- Added: In Progress. Please do NOT use this method in this release. New Find() method for returning the position of a specific 
			string of text. Supports searching in either direction, case sensitive 
			or insensitive searches, searching for exact matches or the search 
			phrase within the string etc. Returns the cell that the match was found 
			at.
- Added: oiExcel.DisplayAlerts() method allows the 
			display of messages from Excel to be enabled or disabled
- Added: oiExcel.EnableEvents() procedure (currently 
			this is internal)
- Added: oiBase.ToCstring(*string s) method. Copies 
			the contents passed string to a new cstring and returns a pointer to the 
			new cstring.
- Added: oiExcel.RunAutoMacros() method that allows 
			the auto macros built into a file to be run (Auto_Activate, Auto_Close, 
			Auto_Deactivate, and Auto_Open macros)
- Added: oiExcel.GetWorkbooks().
- Added: oiExcel.GetActiveWindow().
- Deprecated: CountWorkbooks_LB()
- Deprecated: NewWorkbook_LB()
Version 2.71 (10 April 2009)
	General
	
		- C7 support update for Multi-Proj.
- C7 support - template includes the oiABPROI.INC, Fomin support,  
		Report target selector, WOWordReporterDeclaration, legacy class 
		generation when necessary.
- C7 support - uses the additional parameter in the implemented IReportGenerator.ProcessString 
		class in C7.
		Outlook
	
		- Outlook (UpdateContact) - Updated to support all of the properties, 
			optimised the update code and added a new GetContactPropertyName method 
			to return the name when passed the long value for a field.
Version 2.69 (11 September 2008)
	General 
	
		- Clarion 7 compatible release.
- Updated documentation and reformatted the oiExcel class documentation 
			for improved clarity and consistency.
	Word 
	
		- Added/Fixed: The FindText() method now returns 1 when the text that 
			was search for is found, and zero if it is not found, which is the 
			documented behaviour. The method now checks the Found property of the 
			Find member of the Selection object to determine whether the search was 
			actually successful. Previously the FindText() method was actually 
			returning whether or not execution was successful, and the return value 
			was not related to the result of the Find.
- Fixed: The MailMergeSetDataSource was always returning 0, even when 
			successful. It now returns 1 for success and 0 for failure.
	Excel
	
		- Added: 
			GetCellBackgroundColor() method returns the background color of a 
			cell or range of cells. Can be called as:
 curColor = oiExcel.GetCellbackgroundColor('', 
			'')
 curColor = oiExcel.GetCellbackgroundColor('A1', 
			'')
 curColor = oiExcel.GetCellbackgroundColor('D1', 
			'E7')
Version 2.68 (16 July 2008)
	Excel
	
	General
	
		- Documentation updates.
- Website pages were not correctly reflecting the version.
Version 2.67 (02 July 2008)
	Word 
	
		- Changed: Removed the temporary InitSite method.
	General 
	
		- Fixed: Incorrect style sheet in some of the documentation files.
- Added: The Microsoft Office Compatibility pack is now supported. 
			Unfortunately the compatibility pack causes the incorrect version of 
			Office to be reported, which was causing OfficeInside to specify the the 
			Office 2007 format for spreadsheets, which the compatibility pack would 
			be create, and convert as if it was an older binary Excel document, 
			causing the document o become corrupt. This has been resolved in this 
			release.
- Added: Error handling and logging to the email sending for Outlook.
- Important: With Outlook 2007 the 
			Outlook Security model has changed. There are now three settings 
			(accessible via Tools -> Trust Centre -> 
			Programmatic Access):
			
				- "Warn me about suspicious activity when my antivirus 
					software is inactive or out of date (recommended)". 
 This setting does not appear to function correctly when most setups. 
					Presumably it is meant to allow the antivirus software to determine 
					whether access is allowed or not. Instead in every configuration 
					tested it simply blocks all access, which means that sending mail 
					will fail because the Recipient object cannot be retrieved. Outlook 
					provides no indication of the failure, or the reason for it.
- "Always warn me about suspicious activity". 
 This setting operates in the same manner as the security model in 
					Outlook 2003, except that it introduces an even more onerous warning 
					dialog box on mail sending. First the user is prompted to allow 
					access to 1, 5 or 10 minutes, then when an email is sent a warning 
					dialogue is displayed (because the first dialog is actually a 
					security flaw). The second dialog does not allow the user to 
					continue immediately, but instead displays a progress bar for a few 
					seconds before the button can be pressed. This means that utilities 
					such as "ClickYes" can no longer be used.
- "Never warn me about suspicious activity". 
 This setting allows all applications access, much like in Office 
					2000 and XP.
- Unfortunately all three of the settings are essentially useless 
					- either they are overly onerous for the user, or they provide no 
					protection against malicious software (even the option to always 
					warn of suspicious activity can be overridden by malicious 
					software). One solution to this is to install the free Advanced 
					Security for Outlook from MAPILabs 
					(http://www.mapilab.com/outlook/security/). This allows the user to 
					choose whether an application is trusted when it tries to access 
					Outlook. This approach only requires the user to allow (or deny) an 
					application access once, which provides good protection, without any 
					burden on the end user. 
 
Version 2.66 (11 June 2008)
	Word
	
		- Added: Additional errortrapping and error handling code for document 
			and object creation.
- Changed: Changed the way that the Tables object was retrieved to 
			improve reliability when processing multiple documents in a row.
	General 
	
		- Fixed: The Clarion 5.5 DLL that shipped with the 2.65 release was 
			the 2.64 version.
Version 2.65 (4 June 2008)
	Word 
	
		- Added: [Beta] New PrintOut method that exposes all the print 
			settings available in Word. This uses the new
		
			- Background (optional). True to have the macro continue 
				while Microsoft Word prints the document.
- pAppend (optional). True to append the specified 
				document to the file name specified by the OutputFileName argument. 
				False to overwrite the contents of OutputFileName.
- pRange (optional). The page range. Can be one of the 
				following WdPrintOutRange constants: wdPrintAllDocument, 
				wdPrintCurrentPage, wdPrintFromTo, wdPrintRangeOfPages, or 
				wdPrintSelection.
- OutputFileName (optional). If PrintToFile is True, this 
				argument specifies the path and file name of the output file.
- pFrom (optional). The starting page number when Range 
				is set to wdPrintFromTo.
- pTo (optional). The ending page number when Range is 
				set to wdPrintFromTo.
- Item (optional). The item to be printed. Can be one of 
				the following WdPrintOutItem constants: wdPrintAutoTextEntries, 
				wdPrintComments, wdPrintDocumentContent, wdPrintKeyAssignments, 
				wdPrintProperties, or wdPrintStyles.
- Copies (optional). The number of copies to be printed.
- Pages (optional). The page numbers and page ranges to 
				be printed, separated by commas. For example, "2, 6-10" prints page 
				2 and pages 6 through 10.
- PageType (optional). The type of pages to be printed. 
				Can be one of the following WdPrintOutPages constants: 
				wdPrintAllPages, wdPrintEvenPagesOnly, or wdPrintOddPagesOnly.
- PrintToFile (optional). True to send printer 
				instructions to a file. Make sure to specify a file name with 
				OutputFileName.
- Collate (optional). When printing multiple copies of a 
				document, True to print all pages of the document before printing 
				the next copy.
- FileName (optional). The path and file name of the 
				document to be printed. If this argument is omitted, Word prints the 
				active document. Available only with the Application object.
- ActivePrinterMacGX (optional). This argument is 
				available only in Microsoft Office 98 Macintosh Edition. For 
				additional information about this argument, consult the language 
				reference Help included with Microsoft Office 98 Macintosh Edition.
- ManualDuplexPrint (optional). True to print a two-sided 
				document on a printer without a duplex printing kit. If this 
				argument is True, the PrintBackground and PrintReverse properties 
				are ignored. Use the PrintOddPagesInAscendingOrder and 
				PrintEvenPagesInAscendingOrder properties to control the output 
				during manual duplex printing. This argument may not be available to 
				you, depending on the language support (U.S. English, for example) 
				that you’ve selected or installed.
- PrintZoomColumn (optional). The number of pages you 
				want Word to fit horizontally on one page. Can be 1, 2, 3, or 4. Use 
				with the PrintZoomRow argument to print multiple pages on a 
				single sheet.
- PrintZoomRow (optional) . The number of pages you want 
				Word to fit vertically on one page. Can be 1, 2, or 4. Use with the 
				PrintZoomColumn argument to print multiple pages on a single sheet.
- PrintZoomWidth (optional). The width to which you want 
				Word to scale printed pages, in twips (20 twips = 1 point; 72 points 
				= 1 inch).
- PrintZoomHeight (optional). The height to which you want Word to 
				scale printed pages, in twips (20 twips = 1 point; 72 points = 1 
				inch).
 
- Added: [Beta] new task insert and update properties for use with the 
		InsertTask, UpdateTask and GetTask/GetTaskQ methods:
		
			- oio:TaskCategories equate(13)
- oio:TaskCompanies equate(14)
- oio:TaskComplete equate(15)
- oio:TaskIsConflict equate(16) ! read only
- oio:TaskDateCompleted equate(17)
- oio:TaskTimeCompleted equate(18)
- oio:TaskIsRecurring equate(19) ! read only
- oio:TaskNoAging equate(20)
- oio:TaskOwner equate(21)
- oio:TaskPercentComplete equate(22)
- oio:TaskSize equate(23) ! size in bytes, read 
			only
- oio:TaskStatus equate(24)
- oio:TaskStatusOnCompletionRecipients equate(25) ! 
			recipients who will receive notification on completion
- oio:TaskStatusUpdateRecipients equate(26) ! recipients 
			who will receive notification when the task is updated
- oio:TaskTeamTask equate(27) ! set to true if this is a 
			team task
- oio:TaskTotalWork equate(28)
- oio:TaskUnRead equate(29)
 
	General
	
		- Documentation Updates and improvements
- Internal class additions and cleanup, new generic COM classes and 
			access methods
- New internal generic Get/Set and Call methods
Version 2.64 (04 April 2008)
Excel
	
		- Added: GetFileName() method that returns the name and path of the 
			file on disk that is currently open.
- Changed: The ReadCell method now supports up to 4096 characters 
			rather than 255 characters. This limitation will be removed in a future 
			release.
- Added: The .excelFileName property to the Excel editable report 
			class. This stores the file name that Excel returned once the file is 
			saved.
	Word
	
		- Added: GetFileName() method that returns the name and path of the 
			file on disk that is currently open.
- Fixed: Editable Report: Removed an extraneous call to Update() to 
			change the application visibility after an editable report was created, 
			but the application has already been closed by the Kill() and the file 
			opened (if chosen) in a new instance using ShellExecute.
- Added: The .wordFileName property to the 
			Word editable report 
			class. This stores the file name that Word returned once the file is 
			saved.
- [Editable Reports] Added: If the FileName is blank for the report 
			output then the user is prompted for a file name automatically.
	General
	
		- Note: There is an issue with compatibility with FileExplorer in Clarion 5.5 when in 
			Local Mode (duplicate symbol errors). This is not an issue with Clarion 
			6 or 7 and only occurs in Local Mode in Clarion 5.5.
- Fixed: the csWord.ico and csExcel.ico icons were not always being linked into 
			the project automatically for Editable Report use with the TargetSelector.
- Added: Multi-Proj support for automatically including required icons in 
			the project.
- [Editable Reports] Fixed: The Excel and Word Editable report now 
			uses the new excelFileName/wordFileName property to ensure the correct 
			file name is always opened.
- [Editable Reports] Fixed:Removed an extraneous call to Update() to 
			change the application visibility after an editable report was created, 
			but the application has already been closed by the Kill() and the file 
			opened (if chosen) in a new instance using ShellExecute.
- [Editalbe Reports] Added: Error handling and user information 
			messages.
- Right Reports Integrations -
			CapeSoft Right Reports 
			now supports outputting reports to fully editable Word and Excel 
			documents using OfficeInside.
- General documentation cleanup and improvements.
		Outlook
	
		- Fixed: The DateReceived and 
			TimeReceived properties contents were 
			reversed when retrieving the list of messages.
- Added: SaveAs() method that allows 
			the document to be saved to disk as a the following formats: 
		
			- Microsoft Office Word format (.doc)
- HTML format (.html)
- iCal format (.ics)
- MIME HTML format (.mht)
- Outlook message format (.msg)
- Outlook Unicode message format (.msg)
- Rich Text format (.rtf)
- Microsoft Office Outlook template (.oft)
- Text format (.txt)
- VCal format (.vcs)
- VCard format (.vcf)
 
Version 2.63 (02 January 2008)
	Excel	
	
		- Added: ImportSetup() and ImportComplete() callback methods to allow 
			the document to be modified before and after the actual import when 
			using the ImportExcel() method.
- Fixed: The Report To Excel template was displaying a prompt to save 
			the current sheet when used in versions of Office prior to 2007. The new 
			version now supports all version of Office and correctly determines the 
			version and saves the document appropriately.
- Added: Code for Excel and Word editable reports to check the version 
			of Office being used do the file saving appropriately.
			Note: It is recommended that the file 
			name is specified without a file extension, this will 
			allow OfficeInside and the Office application to set the correct file 
			extension (for example either .XLS or .XLSX).
General
	
		- Additional documentation updates, converted the bulk of the 
			documentation to using style sheets, removed inline and outdated 
			attributes, reduced the document sizes, added new method 
			documentation and improved existing documentation with full 
			parameter lists and descriptions, examples etc.
Version 2.62 (11 November 2007)
		Outlook
	
		- Added a new GetEmailBody method to the Outlook object that is 
			does not limit the size of the email body fetched, and returns the 
			size required if the passed string reference is not large enough and 
			the data has been truncated. The old method has a limit of 20,000 
			characters. This is the method that is now called in the example 
			application.
Version 2.61 (17 October 2007)
	General
	
		- Fixed the GetOfficeVersion function which was returning the 
			incorrect version of Office for versions prior to Office 2007. This 
			was causing a problem in SendTo.
Version 2.60 (04 October 2007)
	General
	
		- Fixed the editable reports example and removed an unnecessary 
			Message() statement, also added both Word and Excel functionality to 
			both examples. This should have been fixed in the previous release but 
			the incorrect example was fixed. 
- Closed (cannot reproduce): Case 1582: Office Inside not working 
			with Office 2003 SBE. OfficeInside has been tested using Office 2003 
			SBE under both Windows XP and Vista without any problems.
- Added: More documentation updates, fixed missing links in the 
			new method listing, updated documentation for method, converted 
			documentation to all CSS for styling to improve consistency and 
			speed (reduced the page size).
- Added a GetOfficeVersion() method that returns the version of 
			Office installed. This is particularly useful for determining 
			whether Office 2007 (12) is installed and hence the default document 
			format being used (.xlsx, .docx etc.)
	Word
	
		- Confirmed Behaviour: Case 1486: ReplaceText() has a 256 character limit in Word. 
			This is an intrinsic limitation of MS Word, not of OfficeInside. The workaround 
			is to use the Find method to find and select the text to replace, and then use 
			the InsertText to insert text if more than 256 characters are needed. This has 
			been documented for the 
			ReplaceText 
			method, along with the workarounds (such as putting your large 
			string on the clipboard and calling 
			MyWord.ReplaceText('LookFor', 
			'^c',
			true). The 2-character string '^c' will be interpreted by Word 
			as the Paste command. 
- Fixed: Case 1367: GotoEndOfDoc doesn’t go to last character. The new GotoItem 
			method that this calls fixes the various bugs and problems that existed with 
			this method. The GotoItem can be use to go to the last line in the document, 
			which will actually also go to the end of the document (selection moves to after 
			the last line). Similarly going to the first line goes to the start of the first 
			line (the beginning of the document).
- Fixed: Case 1366: GetFontSize returning invalid result - the 
			GetFontSize method was returning a large integer rather than the 
			correct font size.
	Excel
	
		- Added: Support for saving to the new XLSX format for the editable 
			report templates. If now uses the default format specified by Excel, 
			which ensures that the Compatibility dialog box is not displayed. It is 
			recommended that you do not specify the file extension when specifying 
			the file name, which allows Excel to pick the correct file extension 
			based on the format used.
Version 2.50 (12 September 2007)
	General
	
		- Fixed the Editable Report templates for Word and Excel, they were 
			not sharing the same TargetSelector object unless it was specified 
			manually and with some configurations it was possible to have two 
			independent TargetSelectors declared in a single procedure.
- More documentation updates for Word and Excel.
- Note: For the Word and Excel editable reports in Legacy you must 
			have at least one of the SV report output templates added. For ABC this 
			limitation does not apply. Full Legacy support will be added in a future 
			release to remove this limitation.
	Word
	
		- Added: Two new methods for AutoFormat support for tables. This 
			allows one of the built-in tables styles in Word to be applied to any 
			table automatically. This also solves the problem under Word 2002 where 
			an auto style is selected as default and that style is applied to any 
			tables inserted. See the oiWord.TableAutoFormat() 
			and oiWord.TableUpdateAutoFormat() 
			method for more information.
- Added Auto Formatting support to the example application for tables, 
			support all of the around 30 different styles.
- Closed: Case 1583: 
			Cannot reproduce in the current build. oiWord.TableSetCellBold setting 
			the style for the whole column. This is not reproducible, using either 
			the oiWord.TableSetCellBold() method or the normal methods for setting 
			the current selection to Bold, Italic etc. Also tested to ensure that 
			the Toggle commands work as well as On/Off for styles. Test with bold, 
			italic, underlined and combinations. 
- Added: New 
			FindText() method search 
			for a string and selects the next instance found, allowing each instance 
			of a string to be found and modified (the style changed, or the actual 
			string changed etc.).
- Fixed: Case 1368: 
			GotoItem method not working. This method has been 
			completely replaced and now works for all of the options available. Also 
			note that this method now works as expected, so a number of workarounds 
			are no longer needed. See the new oiWord.GotoItem() 
			documentation for more information.
- Confirmed Behaviour: Case 1486: ReplaceText() has a 256 character 
			limit in Word. This is an intrinsic limitation of MS Word, not of 
			OfficeInside. The workaround is to use the Find method to find and 
			select the text to replace, and then use the InsertText to insert text 
			if more than 256 characters are needed. This will be documented for the
			ReplaceText method.
	Excel
	
		- Closed: Case 1478: Cannot reproduce in the current build: SetCellFormat does not 
			appear to be working fully. Test all possible cell formatting 
			options, along with a large number of combinations. All are working 
			correctly.
Version 2.40 (10 September 2007)
	General
	
		- Added a Clarion 7 build.
- New documentation and changes to the existing 
			documentation. All method, properties and data types for Word and Excel 
			are being documented and the documentation completely overhauled, in 
			line with the new Outlook documentation.
- Fixed invalid tags and attributes in 
			documentation, added accessibility, fixed non html encoded characters 
			etc.
- Changed and Fixed the RecentFiles classes. They 
			are now initialised only for Word and Excel (PowerPoint can also be made 
			available) and they correctly list everything the the Recent Files list 
			for both applications. The list and objects are initialised when the 
			object is, and the list is available as soon as the application has 
			started (directly after the call to the Init() method returns).
- Added a RecentFiles tab to both the Excel and 
			Word examples that displays the Recent File list for each application.
- Major cleanup of the documentation, all documentation will be moved 
			to XHTML 1.0 Strict, and use CSS for formatting. This will improve load 
			performance, accessibility and consistency. A large number of errors, 
			formatting problems and code issues have been fixed.
- Added a new section to the documentation indicating how to 
			dynamically create OfficeInside objects using the New command.
			Important: If you New an OfficeInside 
			object you must set the .disabled
			property to 1 before the call to the Init method or the call to 
			Init() will not work, and subsequent calls to the methods of the object 
			will not work.
	Word
	
		- Fixed the RecentFiles list, it was not 
			returning the list of recent files due to an initialisation error.
- Note: Event handling is currently being worked 
			on, it has not been enabled since OfficeInside moved to late bound in 
			1.40 Beta. Currently event handling is only working for Outlook.
- Changed: The oiWord.Update() 
			method. The Option parameter was optional, but required in order for any 
			code to execute. It is not an optional parameter and is no longer passed 
			as such.
- Fixed: Case 1561: 
			Opening and closing two instance of Word on two threads produces a 
			normal.dot error. Can no longer reproduce this in the current release of 
			OfficeInside.
- Fixed: Case 1470: TableSetInsideBordersLineStyle 
			equates were incorrect and setting the style resulted in the style being 
			set to the next one in the style list.
- Fixed: Case 1560: 
			TableSetOutsideBordersLineStyle was not working at all, it is now 
			correctly setting the table borders.
- Added: Case 1404: Add 
			support for Document Protection. You can now Protect and Unprotect any 
			document, including choosing the type of protect (read only, edit 
			comments only, edit form fields only, make revisions only, or no 
			protection). See the 
			oiWord.Protect() and
			oiWord.Unprotect() method. A password 
			is used if specified.
	Excel
	
		- New methods to for importing Excel files. 
			Replaces the old ImportXLSFile() 
			method. The new method is 
			ExcelImport() 
			and calls the new 
			TakeImportRecord() 
			callback method. No longer has any limitation on the number of 
			columns imported, any number of columns can be imported.
- New ColumnName() method replaces the old
			GetColumnAddressFromColumnNumber() 
			method removes the 26 column limit - column numbers up to 450,000 
			are now supported making this method quite future proof (Excel 2007 supports 
			16K columns and earlier versions supported 255 columns). The old method is 
			deprecated, but will still be supported and simply calls the new
			ColumnName() method.
- Important: 
			If you are using the 'Import XLS To TPS' control template (now 
			called 'Import and Excel File') then you 
			must move your code for 
			processing each record from the old ImportXLSFile_TakeRecord() method to the new
			TakeImportRecord() method. Also note 
			that instead of each column being passed as a parameter the columns 
			are now passed using a queue.
- Fixed the RecentFiles list, it was not 
			returning the list of recent files due to an initialisation error.
- New alignment options for 
			oiExcel.SetCellAlignment:
			- oix:WrapText
- oix:HorizontalAlignment
- oix:VerticalAlignmentszMemberof
- oix:Indent
- oix:ShrinkToFit
- oix:TextDirection
- oix:Orientation
 
- In addition alignment equates for each of the options was added 
			(see the 
			SetCellAlignment() documentation)
- New documentation for 
			SetPaletteColor() and 
			GetPaletteColor(), including three 
			examples, and an example of two complete procedures for implementing 
			local color palette management. Fully documented how Excel uses 
			colors and the difference between passing clarion color equates and 
			actual color values using the oiExcel.InterpretClarionColorEquates property.
- SetCellNumberFormat()
			now supports any format and picture that Excel supports, also 
			fully documented how to create custom pictures and formatting, and 
			to use Excel to generate a picture for any possible format needed.
 
	Outlook
	
		- Added: New properties to the
			oioFolderItemsQType. This queue is 
			used to store the contents of the folder in Outlook. The following 
			properties are now available when using the 
			oiOutlook.GetMailItemsQ() 
			method. Note that the oioFolderItemsQType
			has changed to reflect the new properties. If you are using 
			your own manually declared queues rather than the types provided by 
			OfficeInside you will need to update your queue declaration. Please 
			note that this is strongly not recommended. 
			
				- Categories
- Companies
- FlagRequest
- Importance
- IsMarkedAsTask
- LastModificationTime
- LastModificationDate
- ReceivedByName
- ReceivedTime
- ReceivedDate
- ReplyRecipientNames
- SentOnBehalfOfName
- UnRead
 
- Fixed: Case 823: Address Book reading 
			GPFs with more than 350 contacts. This error 
			cannot be reproduced in the current release, even with far more than 
			350 contacts
- Fixed: Case 824: Start Date and Start Time not 
			read from Outlook when reading Tasks
- Added: New properties when reading Tasks to the 
			oioTasksQType1 and 
			oioTaskProperties structures 
			(Writing to these properties will be supported in the next release.):
			- Categories
- Companies
- Complete
- IsConflict
- DateCompleted
- TimeCompleted
- IsRecurring
- NoAging
- Owner
- PercentComplete
- Size
- Status
- StatusOnCompletionRecipients
- StatusUpdateRecipientsTeamTask
- TotalWork
- UnRead
 
Version 2.36 (23 July 2007)
	General
	
		- Fixed: Compile error (unresolved external) in 
			C55. The DLL for C55 was not correctly compiled, and an old DLL was 
			included in the install.
Version 2.35 (11 July 2007)
	General
	
		- Documented a number of DLL functions that can be 
			called from anywhere within an application using OfficeInside (no object 
			needs to be instantiated to call these functions). See the
			DLL Functions section.
- Exposed the oiBaseToDec() and 
			oiDecToBase() DLL 
			functions.
Version 2.34 (06 July 2007)
	General
	
		- When using the 
			Excel.dontCloseOnKill or
	        the Word.dontCloseOnKill option  the instance of Word
	        or Excel is now automatically made visible and the
	        display refreshed (and automatic display refreshing enabled if it was
	        disabled).
- Corrected the dates in the History for all releases in 2007 (they were
			listed as 2006).
- Updated the Editable Reports example. Clarified the options, redid 
			window layout, provided new instructions etc. The example now 
			demonstrates the different options setting the report target. The hand 
			code required will be moved to template options.
- Added support for Multi-Proj
		- Updated documentation for the 
			ScreenRefresh() method.
- New editable report template, generates all code needed, supports 
			other report generators (such as those provided by SoftVelocity), allows 
			the user target selection dialog box to be controlled etc.
	Excel
	
		- New editable report template, generates all code needed, 
			supports other report generators (such as those provided by 
			SoftVelocity), allows the user target selection dialog box to be 
			controlled etc.
- New SaveAs 
			method and documentation, now support specifying a file format to 
			save the file as, which is useful for ensuring that a standard XLS 
			file is saved with Office 2007, and ensuring that the Compatibility 
			dialog is not displayed.
Version 2.33 (07 February 2007)
		General
	
		- The template now generates return values for method declarations
	        that return values and correctly returns the parent's return value by
	        default. Solves the "Function did not return a result" compiler warnings.
- Installer is now cryptographically signed by Capesoft Software. Ensures
	        the validity of the installer and avoids the "unsigned file" security
	        warning. Also allows the installer to run correctly under Windows Vista.
Version 2.32 (07 February 2007)
		General
	
		- Fixed the dontCloseOnKill option
        for use with 
			Word and 
			Excel, it was allowing Word and Excel to close
	        when Kill() was called and it had been set to a non zero value.
Version 2.31 (06 February 2007)
		General
	
		- Updated documentation to reflect newly added methods for
	        spell checking etc. 
			SpellCheckString, 
			SpellCheckHtml, 
			SpellWord. These method will be used to clean up the template generated spell checking.
	        In addition they provide improved support and functionality.
- Added example code using SpellCheckString and SpellCheckHtml, which show how
	        the methods work, as well as providing an example of spell checking a
	        FileExplorer control.
- General documentation update (ongoing) to document every method 
			and property, add examples for every method, document all 
			parameters, return values and add cross referencing!
- New Properties sections added to Word and Excel docs, and new Methods tables
	        added.
Version 2.30 (02 February 2007)
		General 
	
		- New Office01.tpw for handling classes and objects, maintains
	        backward compatability while supporting all possible parameters etc. 
- Fixed template bug that was not generating parent called with pointer to typed
	        queues corrected.
- Template: Added support for additional data types in the method declarations.
- Update the template that generates object and method declarations, and fixed
	        a number of small issues.
	Excel
	
		- Documented the two templates to import from Excel. See the Import
			From Excel templates section.
- Udpated document, new example code for WriteToCell (shows how to export a table
	        to an Excel file), clean up documentation example code, added syntax
	        highlighting etc. Documentation will be overhauled as the Outlook docs
	        have already been.
- New section in the documentation on class properties.
- New dontCloseOnKill 
			property allows the OfficeInside object to be killed while
		    leaving Excel open.
Word
	
		- New SpellChecking methods.
- New method to check the spelling
	        of all words in a string and to encapsulate spelling (CheckSpelling).
- Add a CheckSpellingHtml method to allow HTML to be spell checked.
- Added support for punctuation to the spell checker so that additional punctuation
	        is not incorrectly determined as part of the word.
- Optimised spell checked and improve process speed of splitting the string into
	        words, removing punctuation etc.
- Added support for ignoring URL Encoded characters in HTML.
- Added support for ignoring HTML Escape code such as  
- Additional documentation on Spell Checking and RTF controls, new FAQs, links
           in the docs and cross referencing etc.
- New dontCloseOnKill 
			property allows the OfficeInside object to be killed while
	        leaving Word open.
Version 2.21 (23 January 2007)
Excel
	
		- Fixed the PrintMe() method wich stopped working the the previous release. 
Version 2.20 (16 January 2007)
	Word
	
		- Fixed the MailMerge example in the Clarion 6 Demo, now
              uses a CSV file, fixed issues with dialog boxes displaying and
              problems reading the data from the file etc
- Case 1126: oiWord.InsertTable() fails when too many
              rows are specified (stops editable reports working):
 Fixed this using the Table.Rows.Add() method. Now the Tables.Add()
              call always adds a single row table, and Table.Rows.Add()is called in a loop to add the
              rest of the rows. No real speed difference and there is now no
              limitation on the number of rows being added. Although the MS Documentation for the Add() method of
              the Tables Collection seems to indicate that there is no limit
              to the number of added rows(other than
              the 32 bit signed integer being passed), all the examples provided
              seem to use the Table.Rows.Add() method in a loop, indicating
              that this appears to be a known(and ignored) behavior.
- Updated spell checking templates, fixed a potential
              problem with C55 and spell checking with RTF controls, where they
              were spell checked before any other controls.
- Created new C55 and C6 specific examples for spell checking,
              show the two different approach needed for RTF controls in the two different version.
- Added 
			SetScreenUpdating() and 
			ScreenRefresh() methods to allow screen updating
            to be turned off when writing data to Word (provides a small performance improvement) and 
			ScreenRefresh() allows the screen to be refreshed manually.
- Updated documentation and began documentation rewrite.
	Outlook
	
		- Modified the Address Book example to use a queue declared in
            the data section. Although it is recommended that you use the data types
            provided for Contacts, Tasks, Appointments, Folders and Messages, the Clarion
            listbox editor does not allow you to populate the fields easily, and so
            to make the example easily modifiable we have opted to declare the queue
            as local data.
Excel
	
		- Began rewrite of docs. This will be a full rewrite as has been done with the Outlook docs
- New Methods:
          	
				- SetCalculations:
                     Allows automatic calculation of each inserted or edited cell in Excel
                     to be turned off. This can dramatically increase the speed of writing
                     large numbers of cells to Excel, and once complete automatic calculation
                     can be turned back on using the same method.
- Calculate: Forces the values of all formulas in all open
                    workbooks to be calculated. Useful if SetCalculations has turned
                    off automatic cell value calculation and the values need to be calculated at some point.
- SetScreenUpdating:Allows screen updating to be turned off and on
                    in Excel. This can also dramatically improve performance when inserting large numbers of cells.
 
- The new methods for optimisation have been implemented in the editable report
                templates etc. to improve performance. This has provided a small improvement
                in output speed to Word, and a very large performance improvement in outputting
                to Excel (in some cases as much as a hundred times faster).
Other
	
		- Added support for the Recent Files classes to the demo application
- Global and Local templates: cleaned up tabs, moved overlapping
            text, added descriptions to tabs, made RTF info version specific for C55/C6 etc.
- New utility functions:
          	
				- oiDecToBase: Converts from a decimal (base 10) to any other base, for example Hexidecimal (base 16), binary (base2) etc.
- oiBaseToDec: Converts from any base to a decimal number. For example convert Hexidecimal or binary to decimal.
 
- New Classes for all the applications representing the Recently Used Files objects:
          	
				- oiRecentFiles: Stores a list of recent files for all of the Office applications (Word, Excel,
	              Powerpoint and Outlook). This class is automatically initialised when
	              the main object is, and filled with a list of recent files, which
	              can then be accessed by looping through the queue. The class also contains
	              methods to refresh the queue, delete files, open files etc.
- oiRecentFile: Class used by the RecentFiles class, and represents an individual file in the
	              list. This class will typically not be accessed directly.
 
- New oiBase class that the original Office Inside classes inherit from, as well as the new child classes (such as RecentFiles).
                The oiBase class provides NewObject, CallMethod, GetProperty and SetProperty methods,
                and neatly encapsulates access to the properties and methods of the COM objects
                encapsulated by Office Inside. It is intended to also provide an interface for exposing
                COM objects that have not otherwise been exposed by Office Inside.
- Moved all functionality into the C55 compatible demo application. Functionality will no longer be split between C55 and C6 in the main
                Demo. For features that differ in C55 and C6 (or like editable report are
                only available in C6) separate examples will be include.
- Moved editable reports to a separate example.
- Editable reports no longer require either C6 EE or the SV Advanced Report Output Templates, they now only require Clarion
              6. See the new Editable Report Example for the optional code to allow the use of editable
              reports without the SV templates.
- Editable reports  now start hidden and only display when complete (if the template setting to display the document is turned on).
- Note: The RecentFiles class and other new base class
              method have very rudimentary document and will be fully documented in the next release. The RecentFiles
              class usage is demonstrated in the main OffDemo.app example application on the Word_Main window (procedure)
Version 2.11 : (08 December 2006)
		- New classes (to be documented and functional in the next release): RecentFile, RecentFiles
- New Data type (to be documented and functional in the next release): RecentFilesType
- Completely rewritten documentation for the Outlook class. Every single method,
	        property, data type and equate have been documented. Quickstart sections
	        showing how the objects work have been added, along with improved formatting
	        and clarity. Every method has all parameters, the return values, related
	        class properties, data types and equates listed, along with an actual
	        example of its use. In addition every method now has a See Also section
	        that cross references it with all related methods.
Version 2.10 :  (17 November 2006)
		- Added support for spell checking RTF text boxes and RTF controls populated
	        using the RTF template in both ABC and Legacy for Clarion 6.
- Added Clarion 5.5 RTF Spell Checking control template. In order to add spell
          checking to a Clarion 5.5 RTF control populate the 'Office Inside Spell
          Check for C55 RTF' spell checking control template onto the window
          for each RTF control that needs spell checking. This adds a "check
          spelling" button which then checks the spelling of the control. This
          is necessary simply because of the design of the C55 RTF control and
          class. See the section on C55 RTF Controls.
- Added support for FileExplorer and Office Inside on the same window and the same
	        thread. There is now a "Activate compatibility with File Explorer" on
	        the local extension of the Office Inside object. Tick this box only if
	        you are using Office Inside on the same procedure as FileExplorer. If
	        you are calling the Init method manually the you need to set the oiOffice.noComInit      
	        property of the object to 1 before calling the Init() method.
- Changes to the manner in which Office Inside is initialised to allowing another
	        object or control outside of Office Inside to initialise COM. This allows
	        the above feature of compatibility with File Explorer, but also allows
	        the use of Office Inside with other COM objects that need to initialise
	        the COM interface themselves.
- Add the first set of changes to the documentation. All objects, method, properties,
	        data types etc. will be fully documented and the existing documentation
	        enhanced to provide better examples, as well as better explanations of
	        the method, their parameters, return types, requirements etc.
- Fixed: Spell check template used the an embed for alertkeys in Legacy that did
	      not work in some instances. Simplified the code to use a single embed for
	      both ABC and Legacy. Thanks to Jorge Alejandro Lavera for not only reporting
	      this, but suggesting the solution too.
Version 2.01 : (30 August 2006)
		- Added support for Text Boxes on Editable Word and Excel reports.
- Updated documentation for oiOutlook.GetMailFoldersQ
Version 2.00 :  (18 August 2006)
		- Fixed the oiOutlook. GetMailFoldersQ method to return all folders, not just the outbox
- oiOutlook.GetMailFoldersQ now recurses through as many levels as there are folders,
	        rather than being limited to four levels.
- oiOutlook.GetMailFoldersQ has a new optional parameter that allows all folders to be retrieved,
	        including non mail folders such as Contacts, Tasks etc.
- Minor documentation updates.
For versions prior to 2.00 please see the 
Old Version History document.