Solved

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

Posted on 2011-09-29
1
286 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

Master Your Team's Linux and Cloud Stack

Come see why top tech companies like Mailchimp and Media Temple use Linux Academy to build their employee training programs.

Question has a verified solution.

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

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…
Performance in games development is paramount: every microsecond counts to be able to do everything in less than 33ms (aiming at 16ms). C# foreach statement is one of the worst performance killers, and here I explain why.
Familiarize people with the process of utilizing SQL Server functions from within Microsoft Access. Microsoft Access is a very powerful client/server development tool. One of the SQL Server objects that you can interact with from within Microsoft Ac…
What’s inside an Access Desktop Database. Will look at the basic interface, Navigation Pane (Database Container), Tables, Queries, Forms, Report, Macro’s, and VBA code.

790 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