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.