Product Maintenance: While Microsoft continues to recommend that customers install the most current Service Pack/Release for non-Year 2000 reasons, we understand that, for many reasons, this may not be possible. In order to aid our customersÆ Year 2000 efforts, Microsoft intends to maintain Office 95 as compliant through January 1, 2001. Newer Service Packs are also to be maintained as compliant, and may include additional non-Year 2000 updates. This is intended to minimize the Year 2000 as a reason to upgrade.
Operational Range for Data:
System dependent
Note: The below information refers to the code that is shared between Office 95 documents. Please see the individual applications for more detailed information on the product.
Prerequisites
An Office 95 Year 2000 update is now available that corrects all known Year 2000 related issues in the applications used in Office 95. For more detailed information and to download this update please go to http://officeupdate.microsoft.com/Brasil/downloadDetails/O95y2k.htm.
Description of how the product handles dates:
All dates and times that are displayed or query-able by the user are obtained from the operating system's date and time, stored as fully qualified four-digit year dates and displayed according to user settings in the operating system. Setup has no date sensitivity except in setup file removal. See below for testing implications
For VBA and the shared Office object model:
All dates and times displayed are obtained from the operating system clock. All dates are stored using a 4-digit year format. A date may be displayed in a 2-digit format (by formatting cells in an Excel worksheet for example) but the value is always stored as a 4-digit year value.
Since a common programming language (VBA v4) is used by all applications, date handling for all applications can be tested by testing the VBA intrinsic commands. These intrinsic functions for date handling include:
Now ()
CDate()
CVDate()
DateValue()
Date()
Date$()
Format()
DateAdd()
DateDiff()
DatePart()
IsDate()
Day()
Month()
Weekday()
Year()
Shared Object Model Methods and Properties
Files stored in Office format (.xls, .doc, .ppt etc.) have date properties associated with them. These properties can be manipulated using VBA methods.
Objects, Methods, Properties, and Collections possibly affected by Year 2000
Microsoft Office Language Reference
Document Properties Object- Property type can be date e.g. msoPropertyTypeDate CreationDate Property
LastPrintDate Property
LastSaveTime Property
PropertyTests Collection- Conditions for PropertyTests may be dates eg msoConditionNextMonth Add Method
Condition Property
FileSearch Object LastModified Property
2-digit shortcut handling:
Advanced Find under File/Open allows the entry of 2-digit dates. Beyond Advance Find File, Office shared features support short dates as system display options only. See individual applications for additional information.
In Advanced Find, distant future dates have little meaning relative to file creation dates. Therefore, the date is assumed to fall within a range between current year minus 90 years and plus 10 years. For example, in the year 1998 the date range spans from 1908 to 2008. See individual applications for additional shortcut logic. Logic is designed to be appropriate for particular application.
The Office Document Properties dialog stores and displays file date information consistent with the 4-digit year format set in the Windows Control Panel Regional Settings. However, the date formatting used in the Custom Document Properties dialog, does not properly recognize two digit years past 1999, so organizations using dates in custom properties should include all four digits of the year when entering them.
For VBA and the shared Office object model:
In the original configuration, all 2 digit dates were assumed to belong to the current century as defined by the system clock. The logic rules that determine this are included in the oleaut32.dll shared resource file.
In any particular computer configuration, this shared resource file may have been updated. This will occur if a browser (Internet Explorer 3.x or greater), Operating System (Windows 95 OEM Service Release 2.5, Windows 98, Windows NT 4, or other Office application is installed or updated using a newer oleaut32.dll file. In this case, the Office95 applications will use 2 digit date handling logic consistent with the oleaut32.dll version.
Users should load oleaut32.dll v2.20.4122 or later to the c:\Windows\System (Windows 95) or c:\WINNT\System32 (Windows NT) directories for all affected computers. This will ensure that the date handling characteristics for 2 digit dates are consistent with the date window approach outlined above for all computers.
For additional Information please see the VBA Year 2000 Product Guide
Recommendations to meet compliance:
1) An Office 95 Year 2000 update is now available that corrects all known Year 2000 related issues in the applications used in Office 95. For more detailed information and to download this update please go to http://officeupdate.microsoft.com/articles/O95y2kfactsheet.htm-
2) See the Year 2000 Product Guide for your computer operating system and install prerequisite updates for Year 2000 compliance. Also see the Product Guide documents for individual Office 95 applications.
3) Set display of short dates to include four digit years, both in your control panel regional settings and in the default display formatting for each application.
Common date usage errors:
Data exchange between Microsoft Office applications should avoid use of plain text data. If it is necessary to use plain text data, it should be saved and manipulated with the full four-digit year.
Text values that contain date data should be checked to ensure that they contain the full four-digit year.
Data entered or imported into Microsoft Office applications such as Microsoft Word or Microsoft PowerPoint, which do not have data typing in the document format, will be treated as simple text. Those applications should not be used to store dates for which calculations are based (except in the instance of document properties).
Standard document properties can be consistently queried and used across all Microsoft Office applications for date queries and calculations, both programmatically and through the user interface, but user-defined custom properties could generate inconsistencies.
For VBA and the shared Office object model:
User-defined functions are a prime area of date handling errors. A poorly written function may lead to problems.
Dates that are stored as strings can also be a problem if there is an error in the information. The VBA language will interpret a string as a date if by rearranging the month/day/year order a valid date can be found. For example, both 3/30/98 (March 30, 1998) and 187/3/1 (March 1, 187) are valid dates even though the month/day/year order have changed.
Testing guidelines and recommendations:
In general, avoid testing in a production environment because we cannot predict side effects with other products. Interoperability testing across all Microsoft Office products can be conducted safely.
Setup maintenance mode (for file removal), the only date sensitive portion of Microsoft Office setup, removes all templates except those installed in recent months. This does not affect Year 2000 compliance, but it could affect Year 2000 testing because moving the system clock ahead to test could cause more templates to be removed than would be otherwise.
Area SubArea MicrosoftÆs Testing Summary
File Open/Save Dialog Document Properties Document management features include file open/save bringing up the proper "OK to Replace?" confirmation dialog when attempting to save a file after the date/time has been changed; display of dates in results pane of dialog; sorting of dates in results pane of file open/save dialog.
Findfast Creation date of index Create an index with the date set to the year 2000. Click Index, create index, select the index mentioned and hit Information. Ensure that the date shown says the year 2000 or 00 depending on the regional settings.
Last modified date of index Have Findfast set to update itself every 3 minutes. Set the system date to December 31, 1999, and have it roll over to the year 2000. Verify that updating mechanism for Findfast is not affected.
Creation date of file Create a file created on January 1, 2000. Perform a search using an Office App for files created after December 30, 1999, and verify that the file was found.
Findfast (cont.) Last modified date of file Create a file last modified on January 1, 2000. Perform a search using an Office App for files last modified after December 30, 1999 and verify that the file was found.
Last printed date of file Create a file last modified on January 1, 2000. Perform a search using an Office App for files last modified after December 30, 1999 and verify that the file was found.
Custom date property Create a file with a custom date property of January 1, 2000. Perform a search using an Office App for files with that property set to a date later than December 30, 1999 and verify that the file was found.
Leap year testing Repeat the above 5 tests using February 29 and 28, 2000, 2001, and 2004, as the dates used.
Log file Verify that the log file shows the year 00 for any logs in the year 2000 if the regional settings are set to 2 digit format, and 2000 if the regional settings are set to 4 digit format.
Displayed dates Verify that the displayed dates for the creation/last modified dates of the index show 00 for the year 2000 if the regional settings are set to 2 digit format, and 2000 if the regional settings are set to 4 digit format.
Setup Complete Install Complete install is a superset of other options. Should be performed on clean machine and on machine with Office version 95 installed with all combinations spanning the turn of the century.
Maintenance Mode
Remove All
For VBA and the shared Office object model:
Users testing applications written in VBA should be especially careful to test four main problem areas:
User-defined functions: Many applications contain user-defined functions written in VBA to deal with dates in various ways. Many of these functions store date values as strings. Manipulating these values improperly can result in date handling errors that are outside of the scope of the testing that was done at Microsoft.
The date usage error described above can cause problems if an error handling routine is meant to catch improperly entered dates. Since VBA rarely generates an error when a string date is used as an input, an error handling routine is unlikely to be called. In this case the proper programming technique would be to validate the data using code instead of relying on an error to signal an improper date.
Interactions between computers with varying versions of oleaut32.dll should be tested to ensure that the two digit assumptions built into this system file do not cause problems.
Code Example:
The following example illustrates the date window in action with various input dates. Depending on the version of the file oleaut32.dll installed, this code will produce varying results.
Sub TestDate()
Dim MyDate As Date
MyDate = "1/1/00"
Format MyDate, "mm/dd/yyyy"
MsgBox MyDate
End Sub
MyDate input Oleaut32.dll v2.1 or earlier expected behavior Oleaut32.dll v 2.2 or later expected behavior
1/1/00 1/1/1 1/1/9 1/1/2000 4/1/98 10/24/29 7/4/30 1/1/1900 1/1/1901 1/1/1909 1/1/2000 4/1/1998 10/24/1929 7/4/1930 1/1/2000 1/1/2001 1/1/2009 1/1/2000 4/1/1998 10/24/2029 7/4/1930
Note that by excluding the quotations in setting the value of MyDate, VBA automatically interprets the date in 4 digit format as it is being entered.