Results 1 to 13 of 13
  1. #1
    redhonda9834 is offline Novice
    Windows 7 32bit Access 2010 32bit
    Join Date
    Mar 2015
    Posts
    9

    access 2016 automatically install microsoft 16 object libraries

    Hello Everyone,



    I am at a business that is upgrading our office from 2010 to 2016, but not all of the computers at our site are upgrading. About half of them are staying 2010 for now(for reasons...). I am finding out that when someone uses an older database that has Microsoft 14.0 objects installed, office 2016 automatically removes library version 14 and upgrades them to 16. The issue is when the computer with access 2010 tries to use those databases/forms that have been upgraded, they receive a missing library error and they are unable to use it. I am not finding much research on this problem or how to keep access 2016 from updating the database. Anyone have fixes out there?

    Thanks!

  2. #2
    MikeP940 is offline Novice
    Windows 7 64bit Access 2010 64bit
    Join Date
    Sep 2017
    Posts
    2
    Hello,
    just wondering if you ever resolved this. I support several DBs that were built with 2010 but since our desktop guys have been rolling out Access 2016 we're having the same problem. I've tested one of the DBs using late binding but Access 2016 still inserts that reference so it still clobbers it for 2010 and 2013 users.

    thanks for any help you can offer

  3. #3
    CJ_London is online now VIP
    Windows 10 Access 2010 32bit
    Join Date
    Mar 2015
    Posts
    11,397
    it is likely that the problem is users are sharing the front end. Each user should have their own copy of the front end on their machine linked to a backend on the network which contains the tables. Then you wouldn't get this problem. Not sure why the OP can't find anything on the subject - there is plenty about it on the web

  4. #4
    MikeP940 is offline Novice
    Windows 7 64bit Access 2010 64bit
    Join Date
    Sep 2017
    Posts
    2
    Thanks Alex. These DBs are all front ends on a shared drive and are all connected to a single back end. It was built that way by someone who's no longer here so I'm not sure what the thinking was at the time. That solution might be problematic in the current configuration, but I previously used accde files with a script that copies the accde to your local drive then runs it. I may be able to implement that here.

    thanks for the suggestion

  5. #5
    Super Mario is offline Novice
    Windows 7 32bit Access 2010 64bit
    Join Date
    Aug 2018
    Posts
    12
    I had the same problem and found a solution that works fine for me. In my case, I have an Access DB application saved in a server. This application can be launched from a number of Client Workstations networked with that server, some running Windows 7 Enterprise and MS Office 2010 and others have Windows 2010 and MS Office 2013 (or MS Office 2016). If I set the References in a machine running MS Office 2010, it runs well. But if I launch the application from a machine running MS Office 2013, the assigned references are dynamically changed. If then I launch the application in office 2010, I get MISSING libraries and the VBA code fails.

    This is how I resolved the issue:

    1. I found out the Guid number and version number of all the reference libraries that I checked (see code below)

    Sub ReferenceProperties()
    Dim ref As Reference

    ' Enumerate through References collection.
    For Each ref In References
    Debug.Print ref.Guid, ref.Major, ref.Minor ' This line gives me the information about my checked references
    Next ref
    End Sub

    2. Using the information gathered above, I created a Function that will ADD all these reference libraries when I launch the application (this Add_References() function is executed by Autoexec macro)

    Public Function Add_References()
    '----------------------------------------------------------------------------------------
    ' This Sub Procedure adds all the Library References needed by the SCRIPT Tool
    '----------------------------------------------------------------------------------------
    ' List for References loaded when SCRIPT runs on Office 2010
    '----------------------------------------------------------------------------------------
    ' 1. Visual Basic for Applications
    ' 2. Microsoft Access 14.0 Object Library
    ' 3. Microsoft Word 14.0 Object Library
    ' 4. Microsoft Office 14.0 Object Library
    ' 5. Microsoft Office 14.0 Access database engine Objects Library
    ' 6. OLE Automation
    ' 7. Microsoft Scripting Runtime
    ' 8. Microsoft Visual Basic for Applications Extensibility 5.3
    '----------------------------------------------------------------------------------------
    Dim ref As Reference

    On Error Resume Next
    '------------------------------------------------------------------------------------
    ' 1. Add reference for VBA (2010 = 4.1; 2013 = 4.2; 2016 = 4.2)
    '------------------------------------------------------------------------------------
    Application.References.AddFromGuid Guid:="{000204EF-0000-0000-C000-000000000046}", Major:=4, Minor:=1
    Application.References.AddFromGuid Guid:="{000204EF-0000-0000-C000-000000000046}", Major:=4, Minor:=2
    '------------------------------------------------------------------------------------
    ' 2. Add reference for Access (2010 = 9.0; 2013 = 9.0; 2016 = 9.0)
    '------------------------------------------------------------------------------------
    Application.References.AddFromGuid Guid:="{4AFFC9A0-5F99-101B-AF4E-00AA003F0F07}", Major:=9, Minor:=0
    '------------------------------------------------------------------------------------
    ' 3. Add reference for Word (2010 = 8.5; 2013 = 8.6; 2016 = 8.7)
    '------------------------------------------------------------------------------------
    Application.References.AddFromGuid Guid:="{00020905-0000-0000-C000-000000000046}", Major:=8, Minor:=5
    Application.References.AddFromGuid Guid:="{00020905-0000-0000-C000-000000000046}", Major:=8, Minor:=6
    Application.References.AddFromGuid Guid:="{00020905-0000-0000-C000-000000000046}", Major:=8, Minor:=7
    '------------------------------------------------------------------------------------
    ' 4. Add reference for Office (2010 = 2.5; 2013 = 2.7; 2016 = 2.8)
    '------------------------------------------------------------------------------------
    Application.References.AddFromGuid Guid:="{2DF8D04C-5BFA-101B-BDE5-00AA0044DE52}", Major:=2, Minor:=5
    Application.References.AddFromGuid Guid:="{2DF8D04C-5BFA-101B-BDE5-00AA0044DE52}", Major:=2, Minor:=7
    Application.References.AddFromGuid Guid:="{2DF8D04C-5BFA-101B-BDE5-00AA0044DE52}", Major:=2, Minor:=8
    '------------------------------------------------------------------------------------
    ' 5. Add reference for DAO (2010 = 12.0; 2013 = 12.0; 2016 = 12.0)
    '------------------------------------------------------------------------------------
    Application.References.AddFromGuid Guid:="{4AC9E1DA-5BAD-4AC7-86E3-24F4CDCECA28}", Major:=12, Minor:=0
    '------------------------------------------------------------------------------------
    ' 6. Add reference for stdole (2010 = 2.0; 2013 = 2.0; 2016 = 2.0)
    '------------------------------------------------------------------------------------
    Application.References.AddFromGuid Guid:="{00020430-0000-0000-C000-000000000046}", Major:=2, Minor:=0
    '------------------------------------------------------------------------------------
    ' 7. Add reference for Scripting (2010 = 1.0; 2013 = 1.0; 2016 = 1.0)
    '------------------------------------------------------------------------------------
    Application.References.AddFromGuid Guid:="{420B2830-E718-11CF-893D-00A0C9054228}", Major:=1, Minor:=0
    '------------------------------------------------------------------------------------
    ' 8. Add reference for VBIDE (2010 = 5.3; 2013 = 5.3; 2016 = 5.3)
    '------------------------------------------------------------------------------------
    Application.References.AddFromGuid Guid:="{0002E157-0000-0000-C000-000000000046}", Major:=5, Minor:=3
    '------------------------------------------------------------------------------------

    End Function

    3. The last action I coded (just before the database exits) is to remove all the references (that the system allows: "Visual Basic for Applications" and "Microsoft Access 14.0 Object Library" cannot be removed)

    Public Sub Remove_References()
    '----------------------------------------------------------
    ' This procedure will remove "most" references upon exit.
    '----------------------------------------------------------
    Dim ref As Reference

    For Each ref In References
    On Error Resume Next
    Application.References.Remove ref
    Next ref

    End Sub

    If you need more information to implement this solution, please send an e-mail to mario.stalker@jhuapl.edu

  6. #6
    isladogs's Avatar
    isladogs is offline MVP / VIP
    Windows 10 Access 2010 32bit
    Join Date
    Jan 2014
    Location
    Somerset, UK
    Posts
    5,954
    Super Mario

    That's a clever solution and you did well to identify all the relevant GUIDs.
    However, I suspect the GUIDs may be different in 64-bit Access compared to 32-bit.

    Also, as Ajax has already stated, the problem is solved if
    a) applications are always developed in the lowest version used by clients as the reference will upgrade successfully (but not the other way round)
    b) each user downloads the latest version from the network to their C drive - as then it won't be affected by other users' versions.

    Even if every user had the same version, b) is still essential, Sharing a FE WILL lead to database corruption at some point.
    Colin, Access MVP, Website, email
    The more I learn, the more I know I don't know. When I don't know, I keep quiet!
    If I don't know that I don't know, I don't know whether to answer

  7. #7
    ssanfu is offline Master of Nothing
    Windows 7 32bit Access 2010 32bit
    Join Date
    Sep 2010
    Location
    Anchorage, Alaska, USA
    Posts
    9,664
    It looks like it took a lot of work to create the code. I'm going to add it to my library.

    But I have to ask: Did you look at the dates of the posts?

    The OP posted on 07-29-2016
    Then the next 3 posts were on 09-06-2017 ( a year later)
    Then today 8/31/2018........ (and another year goes by)


    I'm just sayin......


  8. #8
    Super Mario is offline Novice
    Windows 7 32bit Access 2010 64bit
    Join Date
    Aug 2018
    Posts
    12
    riders52

    "That's a clever solution and you did well to identify all the relevant GUIDs.
    However, I suspect the GUIDs may be different in 64-bit Access compared to 32-bit."
    As far as the references is concerned, the Guid is the same for MS Access 32B and 64B. The only thing that "sometimes" change for some libraries is the version number among Office 2010, 2013, and 2016. But assuming that you find some reference libraries that have different Guid, then put then in the code and it will work just as fine. The key in the code is "
    On Error Resume Next", if a reference doesn't exist, the code will skip to the next statement.

    "Also, as Ajax has already stated, the problem is solved if
    a) applications are always developed in the lowest version used by clients as the reference will upgrade successfully (but not the other way round)
    b) each user downloads the latest version from the network to their C drive - as then it won't be affected by other users' versions."

    I considered installing a copy of FE in each client machine, but there are too many and that will make my job of making updates very complicated and time consuming. My solution is better for my case, but a) and b) may be better for other cases.

    "
    Even if every user had the same version, b) is still essential, Sharing a FE WILL lead to database corruption at some point."

    I have not experienced database corruption by having a shared version of application in the server; but if that happens, then Compact and Repair is what you can use to fix a corrupted database.


  9. #9
    Super Mario is offline Novice
    Windows 7 32bit Access 2010 64bit
    Join Date
    Aug 2018
    Posts
    12
    ssanfu:

    "It looks like it took a lot of work to create the code. I'm going to add it to my library." [CUT and PASTE]

    That is fine if you are using the same reference libraries that I am using. If you use any other references, you need to find the Guid / Version Number and add that information to the code.

    "But I have to ask: Did you look at the dates of the posts?"
    Yes, I noticed the dates on previous posts, but I decided to post my solution for the following reasons:
    1. Exhaustive search on the Internet didn't provided a solution to my problem.
    2. I assumed that my solution can give another option to people having the same problem
    3. A mouse trap can always be improved

  10. #10
    isladogs's Avatar
    isladogs is offline MVP / VIP
    Windows 10 Access 2010 32bit
    Join Date
    Jan 2014
    Location
    Somerset, UK
    Posts
    5,954
    Quote Originally Posted by Super Mario View Post

    As far as the references is concerned, the Guid is the same for MS Access 32B and 64B. The only thing that "sometimes" change for some libraries is the version number among Office 2010, 2013, and 2016. But assuming that you find some reference libraries that have different Guid, then put then in the code and it will work just as fine. The key in the code is "
    On Error Resume Next", if a reference doesn't exist, the code will skip to the next statement.

    I considered installing a copy of FE in each client machine, but there are too many and that will make my job of making updates very complicated and time consuming. My solution is better for my case, but a) and b) may be better for other cases.

    I have not experienced database corruption by having a shared version of application in the server; but if that happens, then Compact and Repair is what you can use to fix a corrupted database.

    Thanks for responding re 32/64 bit GUIDs. As I said before, I hadn't checked that.
    However, I'm surprised the values are identical as they are different products.

    Compact & repair will sometimes fix corruption but not always. It depends on what caused the corruption.

    Having multiple users sharing the same front end is a disaster waiting to happen.
    You wouldn't let 4 people try to drive your car at once as a crash is inevitable. Same with any Access application.
    You don't have to take my word for it. Just Google the topic

    Don't use managing client machines and updates as an excuse for not doing this. This is very easy to manage automatically.

    First of all, IT network staff can copy all required files for the FE to a specified location on users machines and install a desktop or start menu shortcut

    Use a 'starter app' to launch your FE. This just looks like a splash screen to end users.
    The starter app checks the local version number against the version in a specified update folder on the network.
    If its up to date, the starter app closes & the main app opens. Time time - less than a second
    If a newer version is available the file(s) are automatically copied to the local machine and the updated app then opens. Time taken about 2-3 seconds depending on file size.

    The same process can also be used to overwrite a starter app itself if a newer version is available
    In case you are interested, the attached PDF explains the process in a bit more detail

    Using the SDA Updater.pdf

    You might also find part of this recent thread worth a quick read: https://www.accessforums.net/showthr...560#post405560
    Last edited by isladogs; 09-05-2018 at 12:22 AM.
    Colin, Access MVP, Website, email
    The more I learn, the more I know I don't know. When I don't know, I keep quiet!
    If I don't know that I don't know, I don't know whether to answer

  11. #11
    Super Mario is offline Novice
    Windows 7 32bit Access 2010 64bit
    Join Date
    Aug 2018
    Posts
    12
    ridders52:

    Each situation is different and you need to take many things in consideration when designing, implementing, and deploying a database application. The approach I followed is the best solution for my particular case. Nevertheless, I greatly appreciate your suggestions and will keep them in mind if my set of conditions shall change in the future.

  12. #12
    isladogs's Avatar
    isladogs is offline MVP / VIP
    Windows 10 Access 2010 32bit
    Join Date
    Jan 2014
    Location
    Somerset, UK
    Posts
    5,954
    Quote Originally Posted by Super Mario View Post
    ridders52:

    Each situation is different and you need to take many things in consideration when designing, implementing, and deploying a database application. The approach I followed is the best solution for my particular case. Nevertheless, I greatly appreciate your suggestions and will keep them in mind if my set of conditions shall change in the future.
    Of course you need to take many things into consideration. I couldn't agree more
    But it is NEVER a good idea for multiple users to share a FE in ANY circumstances. There are NO EXCEPTIONS to this.

    Yours is an elegant solution to solve a problem but the situation should never arise in deployed databases.
    However there is one exception for development purposes and I may well use it for that myself'

    I have both Office 2010 & 2016 on my main development PC.
    I normally develop in 2010 but test in 2016 (usually with a backup copy)

    Your code should simplify issues if I want to switch the same copy back to 2010 after using 2016 ... so many thanks again for providing your code
    Colin, Access MVP, Website, email
    The more I learn, the more I know I don't know. When I don't know, I keep quiet!
    If I don't know that I don't know, I don't know whether to answer

  13. #13
    ssanfu is offline Master of Nothing
    Windows 7 32bit Access 2010 32bit
    Join Date
    Sep 2010
    Location
    Anchorage, Alaska, USA
    Posts
    9,664
    Quote Originally Posted by Super Mario View Post
    <snip> Yes, I noticed the dates on previous posts, but I decided to post my solution for the following reasons:
    1. Exhaustive search on the Internet didn't provided a solution to my problem.
    2. I assumed that my solution can give another option to people having the same problem
    3. A mouse trap can always be improved
    I'm just saying that, IMHO, it would have been more appropriate for MikeP940 to have started his own thread and referenced this thread, instead of resurrecting a 1 year old post. Then a year after that, you resurrected the same post.

    As I said, I appreciate your code, but I would suggest starting your own thread and referencing a thread would be better.

    Thanks again.......

Please reply to this thread with any new information or opinions.

Similar Threads

  1. Replies: 3
    Last Post: 06-17-2016, 12:05 PM
  2. Replies: 5
    Last Post: 12-08-2015, 10:15 AM
  3. Replies: 13
    Last Post: 11-23-2015, 09:00 AM
  4. Replies: 7
    Last Post: 11-13-2014, 07:46 AM
  5. Replies: 1
    Last Post: 09-03-2011, 07:01 PM

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •  
Other Forums: Microsoft Office Forums