I have the following references selected (see screen shot) in various access2007 runtime applications which seem to run OK on various XP machines with Office 2003 installed.
I think this is because I am using late binding. Attached is a code snip which is using late binding
So I am using dim myObj as Object
rather than dim myObj As Excel.Application
The reason I am not 100% sure is that because I cannot tell on my own test XP/Office 11 PC whether I have in the past downloaded 2007 Microsoft Office System Update: Redistributable Primary Interop Assemblies.http://www.microsoft.com/download/en/details.aspx?displaylang=en&id=18346
(I don't think I did - it doesn't spear in the list of programs in the control panel) BUT I do have the compatibility pack installed.
I know I downloaded mscomctl.ocx the Active X control module to the xp machine a long time ago, as I needed it for some of the applications.: - But my understanding is I only need this if I use an actrive x control in the application. And anyway XP SP3 has since included this.
Can someone confirm that:
1. As long as I only define objects as above then that prooves I am using late binding throughout and therefore, regardless of the references I have checked in the screen shot I will have no problems with earlier versions of Office or XP regarding references.
2. The office 2007 compatibility pack has no influence over whether the references are valid - i.e the dlls required are NOT included in the compatibility pack.
3. If 2007 Microsoft Office System Update: Redistributable Primary Interop Assemblies does not appear in my control panel Add or Remove Programs list - then it is not installed.
Dim rst As DAO.Recordset
Dim ApXL As Object
Dim xlWBk As Object
Dim xlWSh As Object
Dim fld As DAO.Field
Const xlCenter As Long = -4108
Const xlBottom As Long = -4107
On Error GoTo ITAError
'Do nothing if the form is unbound
If frm.RecordSource = "" Then
MsgBox "There are no records in this area of the screen to export.", _
vbInformation, "Test App"
Set rst = frm.RecordsetClone
Set ApXL = CreateObject("Excel.Application")
Set xlWBk = ApXL.Workbooks.Add
ApXL.Visible = True
Set xlWSh = xlWBk.Worksheets("Sheet1")
If Len(strSheetName) > 0 Then
xlWSh.Name = Left(strSheetName, 34)