One Ribbon XML for Outlook 2007 and Outlook 2010 - ribbon

I am trying to use Ribbon XML to create custom ribbon on Outlook 2010 and 2007, I have one XML file for the ribbon, and it works fine for Outlook 2010, the ribbon appear and is working. But it is not working on Outlook 2007. Since Outlook 2007 does not have ribbon, so in the GetCustomUI() function I have checking on the Outlook version using Application.Version, if the version is >= 14 then it will load the XML file, and if it is < 14 then I called a subroutine to create the menubar using commandbarcontrol, but this didn't work. The add in is not loaded during the startup of Outlook 2007.
Protected Overrides Function CreateRibbonExtensibilityObject() As Microsoft.Office.Core.IRibbonExtensibility
Return New MyRibbon
End Function
Public Function GetCustomUI(ByVal ribbonID As String) As String Implements Microsoft.Office.Core.IRibbonExtensibility.GetCustomUI
If iOfficeVersion >= 14 Then
Return GetResourceText("MyRibbon.xml")
ElseIf iOfficeVersion < 14 Then
'Load commandbar UI
End If
End Function
How do I use the Ribbon XML feature to support both Outlook 2010 and 2007?

I found out the problem. The problem is the Office.dll (C:\Program Files (x86)\Microsoft Visual Studio 10.0\Visual Studio Tools for Office\PIA\Office14\Office.dll) has the property "Embed Interop Types" set to False. This file is not available in user PC.

Related

Searching for referenced file Excel.exe in VBA script after converting to Office 2013

I have an Access application that I share with other users. We share the database on a Sharepoint site and each check it out / download it for edits, then put it back in Sharepoint and check it back in. We do it this way because response time if we all share the same copy on a server is unacceptable, and we only need one person to have acces at any one time. That's not my problem right now.
Last week, my old PC died and I replaced it with a new one. The old PC is Windows7, 32 bit, with Office 2010. The new PC is also Windows7, but 64 bit and with Office 2013. As far as I know, I did not change the database format to a new version of Access or make any other changes. The data base still works fine on my new PC.
The VBA script integrates the data base with Excel workbooks and exports data to Excel. One reference I have selected is Microsoft Excel 15.0 Object Library - the same reference I've always used. Now, when I load the database back to the server and other users downloads it, they can open the data base but get an error that says "Searching for reference file Excel.exe", followed by “Undefined function ‘Format’ in expression”.
The other users' PCs are configured the way my old one was, and they were able to use the database with no problems before I converted to Office 13 and saved my copy back to the server.
So my questions are - what is causing this, and more importantly, what can I do to fix it?
"... reference I have selected is Microsoft Excel 15.0 Object Library ..."
That Microsoft Excel 15.0 Object Library is the version for Office 2013. With Office 2010, the version is Microsoft Excel 14.0 Object Library.
The reference was originally 14.0 when you developed and used the db in Access 2010. When opened in Access 2013, Access adjusted the reference to its available version (15.0). Unfortunately, when you try to use the db again in Access 2010, Microsoft Excel 15.0 Object Library is meaningless to that Access version, so it doesn't know to use Microsoft Excel 14.0 Object Library instead.
The fix is to remove that reference and convert your code to use late binding.
Here is a brief example of late binding, copied from Using early binding and late binding in Automation:
' Declare the object as a late-bound object
Dim oExcel As Object
Set oExcel = CreateObject("Excel.Application")
Note, if your code uses Excel named constants, you will need to substitute the constants' values for their names, or declare the constants in your code.

Access 2013 file to open in Access 2007

I made Access Form which was working fine in Access 2013 and Access 2007 until I add some new features(I don't remember what) to it.
After adding them, it keeps giving me error "Unrecognize file format" when I try to run it in Access 2007. Meanwhile it runs fine in Access 2013.
I want to ask if there exists some software to convert Access 2013 file to Access 2007? Or is there any way make it compatible to 2003? When I Save As 2003 file it don't because of some added features.
Please help!
You could try using Access' Application.SaveAsText in 2013 and Application.LoadFromText in 2003.
Even if this doesn't work directly, if you have an older version that does work, you could compare the differences between the text files the two versions of Access produce, as SaveAsText produces (for the most part) human readable output; the only unreadable parts are typically images.
I've had this happen to me during development on A2010 and deployment on A2007. The possibilities are explained on this page. It is likely that you added an Empty Cell control to a form that had a VBA module (or added a module to a form with an Empty Cell control). I did this unknowingly by inserting a row into the AutoHeader that is created in forms by the Form Wizard.
Follow the steps at the bottom row of Table 2 to rectify this.

Convert Access 2010 accdb to 2007 accdb

I'm trying to convert an accdb file from use in Access 2010 to Access 2007. I first tried opening the file with Access 2007 and I get the error Unrecognized database format. I was able to get my backend to open in 2007 by removing the MSysResources table (which uses the new attachment datatype) but the same technique has not worked with my front end.
My front end does use a webbrowser control (which Microsoft claims won't work but also won't stop the file form being opened). I thought I'd better import one form at a time to see where the error is. While in a new, blank 2007 file I tried to use External Data>Access to import one form (a very simple form, a button, two text boxes). Same error as opening the whole file. I tried having 2010 open at the same time as 2007 and copy/pasting the form over. Same error. Unrecognized database format.
I then try to export the form using Application.SaveAsText in 2010 and import using Application.LoadFromText in 2007. There were errors importing but at least this method generates an error log. The error.txt file has issue with the header line PublishOption =1. After I remove that I continually get errors regarding theme settings. I remove every line it has a problem with which are from there on all theme related (HoverForeThemeColorIndex, AlternateBackThemeColorIndex...). I never did get rid of enough of these to successfully import the form though.
Where am I going wrong? If, like I suspect, I cannot use a theme generated in 2010 in 2007, how can I remove all these references from all my forms? Is this actually the problem? How can I more smoothly move back to a 2007 file?
Edit: It turns out the client is on Office 2007 SP2. I'm going to update my development machine and try all this again. I was not using nay service packs originally.
According to the Microsoft support article
Backward compatibility between Access 2010 and Access 2007
an Access 2010 database can be reverted back to "Access 2007 format" by
removing all Access_2010-specific features from the database (details in the article),
creating a new "Blank Database" (not "Blank Web Database"), and
using External Data > Import in Access 2010 to import all objects (tables, forms, etc.) from the previous database into the new (empty) one.
The list of features that must be removed include a couple that may not be immediately obvious to a casual inspection of the original Access 2010 database, such as
using a new or updated database sort order, and
using "Access 2010 encryption compliance".

How to check if MS Access Fullversion or Viewer

I want to check wheather my database application is running in a fullversion MS Access or only with a viewer / limited MS Access.
The problem is that in a limited version a user can close the last form and then is not able to reopen any form without restart the whole application.
Private Sub Form_Unload(Cancel As Integer)
If LimitedVersion Then
Cancel = True
End If
End Sub
So the question is how to determine LimitedVersion ?
You can use:
SysCmd(acSysCmdRuntime)
It will return True for the runtime version.
However, I would never allow the last menu to be closed in an application. The people with a full version can open the application in a different way if they need access to design.
To simulate the runtime environment, you can use the /runtime switch:
For MS Access 2010, it would look something like this, note that the line break is for display purposes.
"C:\Program Files\Microsoft Office\Office14\MSACCESS.EXE"
"z:\docs\demo.accdb" /runtime

MS Access 2010 Runtime - Missing Right Mouse Click Context Menu in continuous forms

I have written an application in MS Access 2003. I can run this using Access 2010, however when I open the same 2003 application with the MS Access 2010 Runtime only, I can no longer use the Right Mouse Click in a continuous form (as I can with the full version) to filter by selection or to sort data etc. Has anyone else encountered this situation? Is this a purposeful design of Access 2010? If so, does anyone know why the Right-Click Content Menu is not working? Otherwise - is it a normal part of the Runtime 2010 and my application is the problem?
The Runtime unfortunately doesn't have context menu enabled, however, you can re-create some of it for your application.
For instance, in mine, I create a basic copy/cut/paste context menu like this:
'-----------------------------------------------------------------------------'
' General Clipboard context menu, the basis for all forms '
'-----------------------------------------------------------------------------'
Public Function CreateGeneralClipBoardMenu()
On Error Resume Next
CommandBars("GeneralClipboardMenu").Delete
Dim cmb As CommandBar
Set cmb = CommandBars.Add("GeneralClipboardMenu", msoBarPopup, False, False)
With cmb
.Controls.Add msoControlButton, 21, , , True ' Cut
.Controls.Add msoControlButton, 19, , , True ' Copy
.Controls.Add msoControlButton, 22, , , True ' Paste
End With
Set cmb = Nothing
End Function
Just call this code once at the start of your application and the context menu will be available everywhere.
The Need a list of msoControlButton Ids thread on MSDN shows how to similarly add Sorting and filter options.
The standard context menus do not work with the Access runtime version. I have seen this effect with Access runtime versions 2003, 2007 and 2010.