Solved

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

Posted on 2011-09-29
1
287 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
[X]
Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people just like you are talking about what matters.

  • Help others & share knowledge
  • Earn cash & points
  • Learn & ask questions
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

DevOps Toolchain Recommendations

Read this Gartner Research Note and discover how your IT organization can automate and optimize DevOps processes using a toolchain architecture.

Question has a verified solution.

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

It’s the first day of March, the weather is starting to warm up and the excitement of the upcoming St. Patrick’s Day holiday can be felt throughout the world.
In Part II of this series, I will discuss how to identify all open instances of Excel and enumerate the workbooks, spreadsheets, and named ranges within each of those instances.
Familiarize people with the process of utilizing SQL Server views 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 Access…
Show developers how to use a criteria form to limit the data that appears on an Access report. It is a common requirement that users can specify the criteria for a report at runtime. The easiest way to accomplish this is using a criteria form that a…

697 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