Solved

References and late binding running access 2007 runtime app on XP/Office 2003 PC and mcscomctl.oxc

Posted on 2011-09-29
1
284 Views
Last Modified: 2012-05-12
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

   References
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.

Thanks Lou


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"
        GoTo ITAExit
    End If
    
    
    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)
    End If
    xlWSh.Range("A1").Sele


etc...

Open in new window

0
Comment
Question by:Louverril
1 Comment
 
LVL 84

Accepted Solution

by:
Scott McDaniel (Microsoft Access MVP - EE MVE ) earned 500 total points
ID: 36814347
Your code snippet above is using Late Binding, and would NOT require a reference to Excel on the target machines.

You don't need to include (or check for) mscomctl.ocx unless your application uses it. This is an ActiveX control, and would be "placed" on a form. If you can compile your app with no errors, then you don't need the reference to that .ocx file.

The Compatibility Pack has no bearing on references. Your user will be required to have some version of Excel on their machine. Otherwise, your code will fail.

It's possible that an installed item will not appear in the Installed Programs listing, but not very likely. Note too that the Interops assemblies are typically used with .NET code, and don't really have any bearing on VBA code.





0

Featured Post

Gigs: Get Your Project Delivered by an Expert

Select from freelancers specializing in everything from database administration to programming, who have proven themselves as experts in their field. Hire the best, collaborate easily, pay securely and get projects done right.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Calculating holidays and working days is a function that is often needed yet it is not one found within the Framework. This article presents one approach to building a working-day calculator for use in .NET.
Real-time is more about the business, not the technology. In day-to-day life, to make real-time decisions like buying or investing, business needs the latest information(e.g. Gold Rate/Stock Rate). Unlike traditional days, you need not wait for a fe…
Get people started with the utilization of class modules. Class modules can be a powerful tool in Microsoft Access. They allow you to create self-contained objects that encapsulate functionality. They can easily hide the complexity of a process from…
Using Microsoft Access, learn some simple rules for how to construct tables in a relational database. Split up all multi-value fields into single values: Split up fields that belong to other things into separate tables: Make sure that all record…

776 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question