Umm - yes it could. If you have users who have only 2003 and you have a database with custom menus/toolbars or specific code/or items that only work with 2007 (like pulling data from databases and you want to include Accdb formats for the user to be able to choose from, or Excel 2007 files (xlsm, xlsx, etc.), then you can't use that code for 2003. Or if you had a custom ribbon and wanted to load it for 2007 users and a custom toolbar/menu for 2003 users, you could.I feel like I'm posting the same comment in every other thread.
Forget which version of Access a user has. Or even if they have Access installed on their computer. It doesn't matter.
That is good to a point but it depends on why they need to know which version it is whether that solution will work for them or not. As mentioned above, there ARE instances where you might need to know which version you have so you can enable different features.If you are designing your app in 2007 or 2010 then just package your app to run under Runtime.
The Access 2007 Runtime is a redistributable program that allows people who do not have Access 2007 installed on their computers to use Access 2007 database applications.
You can create a custom Ribbon, and then associate that Ribbon with a form or report. You cannot expose the default Ribbon tabs in runtime mode.
No more creating 2 db's with 2 sets of code and 2 sets of custom menus. Even to the extreme of 2 sets of help files with 2 sets of screen shots. Or having to test the app on 2 computers (or on a virtual computer) to see if the 2003 version works. Your client requests a change or submits a bug report and off you go again. Double the work. As a client I'm not going to pay you twice to do the same thing.
By using Runtimes you are giving the user the benifit of the newer version without the cost of upgrading.
If the user has 97, 2000 or 2003 they still get the look and feel of 2007 and can run your 2007 app as if they have Access 2007 installed. They just can't build or edit the structure of the app.
As far as working with other Office apps, there are plenty of work arounds. a small price to pay.
access97 = c:\program files\microsoft office\office
access2002/XP = c:\program files\microsoft office\office10
access2003 = c:\program files\microsoft office\office11
access2007 = c:\program files\microsoft office\office12
access2010 = c:\program files\microsoft office\office14
That is, if the DEFAULT installation path is chosen. But it may not have been, so you need the registry entries to ensure the correct path.access97 = c:\program files\microsoft office\office
access2002/XP = c:\program files\microsoft office\office10
access2003 = c:\program files\microsoft office\office11
access2007 = c:\program files\microsoft office\office12
access2010 = c:\program files\microsoft office\office14
That is, if the DEFAULT installation path is chosen. But it may not have been, so you need the registry entries to ensure the correct path.![]()
Could you let me know if there is a way we can by pass the version problem in Access. I have access 2007 running in office 2003 and so there is always a library incompatility issue were i go to the script and add references and select office 2003 library, word, outlook excel etc.. and the application runs. I need to do this across a group and to a lot of users. can i automate this process. Detect what version is on the user machine and based on the office version install the corresponding library files so it does not generate a reference error.
thanks
Dim appXL As Excel.Application
Dim xlWB As Excel.Workbook
Dim objXL As Object
Dim objWB As Object
Set objXL = CreateObject("Excel.Application")
No, if you use LATE BINDING you need NO code to check versions and you do not need to check any Office references AT ALL.
if you use late binding, and you don't set a reference to the appropriate library - then if you use a function from the library - how does the app compile without an error? I never understood this.
In order to use a function from the applicable library you would need to reference it with the upper level application object you create. It compiles because it isn't calling anything at that point. It may not run if you don't do it correctly, which is why many times I will set the references and use EARLY binding for development but change it over to LATE binding for production. Then I need not worry about versioning problems, unless I'm using something from a later version which doesn't exist in the earlier version (so that you still have to be mindful of).
The code goes wherever you currently have code with something likeThanks for the reply but were in the VB code should I declare these variables.
Dim objXL As Object
Dim objWB As Object
Set objXL = CreateObject("Excel.Application")
should it be inside a procedure or before the form opens. Should it be after option compare database. also for word and outlook should i just say word.application and outlook.application in the CreateObject.
I do apologize since this is a very basic question but i am a novice as far as coding goes.
Thanks