I found from internet the following Excel VBA function customization tool by Laurent Longre several years ago:
Homepage:
http://www.xcell.excelabo.net/funcustomize
Download link:
http://www.xcell.excelabo.net/clic?fichier=funcustomize
which is an FUNCUSTOMIZE.DLL added-in for 32bit (Excel 95 / 97 / 2000 / 2002) versions. This free add-in allows to customize VBA user-defined functions in Excel's function wizard :
add descriptive text to each argument
store user-defined functions in a new category (e.g. "FunCustomize demo")
However, there is no source code release and the current added-in usually causes Excel2013 collapse on x64 windows 8.1 platform.
I wonder how can I recreate the same implementation with C/C++/C# so as to modify it for the latest Excel versions and the windows platforms?
Related
Just now i realized that my Excel Version is missing some functions, e.g. =UNIQUE() or =XLOOKUP(). Also in the tab with the list of all functions these are not available. Other functions work fine though. Is there a way to install these functions manually?
I am using: Microsoft® Excel® 2016 MSO (Version 2112 Build 16.0.14729.20156) 64 Bit
I just tried to update, but it is already up-to-date.
[Sidenote: I am using the German Version, so I am actually missing the functions =EINDEUTIG() and =XVERWEIS() but either or - these functions are missing in my Excel]
Unless you're using Microsoft Office 365 compatible version of Excel, your only other chance might be to sign up with Office Insider, which gives you access to exclusive new content / features as a trial user (whilst unique, filter, let, sort, sortby etc. functionality has been out for some time, there may well be dependencies on this RE: new content). Thanks to Insider I had access to unique functionality long before the Office 365 build was officially launched (about a year before if I remember correctly).
You can do both this and see what version Excel you are on by opening Excel and selecting File -> Account:
Ultimately I want to build a MS Project file using early binding from VBA behind XLS or MPP.
In order to do that, it is my understanding that you should go to Tools--> References and select the Microsoft Project XX.X Object Library.
Unfortunately, it wasn't in the list.
The References pop-up allows you to browse, and select the reference library manually. Great! But, where do I look, and what file do I select to import this reference?
Assuming you are looking in Excel VBA References's list, it should just show up. Here's mine:
Note that I see it as Microsoft Office Project XX.X Object Library, you asked about Microsoft Project XX.X Object Library (lacking Office).
My environment is Win10; both Excel 2016 32-bit and Project 2016 32-bit are installed.
Perhaps try re-installing your Office components? Perhaps try making sure you have both the same bit architecture (32 or 64).
I've written a piece of kit on Excel 2016 that uses a combination of formula and vba macros.
Basically some of the people that will be using this may be using an older version of Excel (2013 or 2010). When testing out whether the file will run on 2013 the Microsoft Powerpoint 16.0 library was missing and some of the code would not run.
The only fix was to add the Microsoft PowerPoint 15.0 library and then it seemed to work.
Is there any way to add the libraries automatically when I send this file to other people, or add the 15.0, 14.0 and 13.0 library's in my copy so that this is not an issue for other users?
[EDIT] From further reading it appears that older versions of excel use different libraries and it doesn't look like you can "pick and choose" whether to use 16.0, 15.0 etc. (Please correct me if I'm wrong). Apparently there is something called "Early/Late Binding" which might help me out, I assume this is referencing within my actual VBA code so if that is a viable solution any more information would be appreciated.
You have two options.
Develop on the lowest common denominating Office version (references will automatically "upgrade" on newer versions)
Change your code from early binding (using a reference to the library) to late binding (using generic Object declarations for everything related to PPT, replacing all PPT constants with their associated values). You then get a reference to Powerpoint using the CreatObject or GetObject function.
When I try to insert it, I constantly get the "Cannot insert object" error. It seems to be a known issue with former Excel versions, but I couldn't find any support for 2016.
Has anyone been able to make this work?
Here are screenshots:
This appears to be intentional behaviour from Excel 2013 onwards. From this article:
This issue occurs because some scriptable controls are made obsolete
in Office 2013 for security reasons. This is by design, and these
errors are expected.
There is a workaround posted in that article which involves editing the registry to make these controls work again.
(The KnowledgeBase article was originally linked from this Microsoft community thread from 2014)
Fix ActiveX Controls (such as the Web Browser) in Excel (Office 2013-16)
Navigate to
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Office\ClickToRun\REGISTRY\MACHINE\Software\Wow6432Node\Microsoft\Office\16.0\Common\COM Compatibility\{8856F961-340A-11D0-A96B-00C04FD705A2}]
"Compatibility Flags"=dword:00000000
Navigate to in order to find the GUID of the control you are trying to fix (I was needing to fix the Web Browser control thus opened its GUID).
reference
Open the desired GUID and set dword to 0 (vs. 1024 (400H))
Context of the solution:
-Win 10 version 1803 / 64bit os
-Excel O365 ClicktoRun version 1806 10228.20080 / 64bit
The registry is located at
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Office\ClickToRun\REGISTRY\MACHINE\Software\Microsoft\Office\16.0\Common\COM Compatibility\{8856F961-340A-11D0-A96B-00C04FD705A2}
And set the "Compatibility Flags" DWord to 0
Note: To reenable the blocking feature set Dword value back to "400"
Killbit option
This article also helped: Cannot insert certain scriptable ActiveX controls into Office 2013 documents
And this one: Security Settings for COM objects in Office
Here is the file path for me: Win 10 x64 Build 1803 (17134.407)
Computer\HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Office\16.0\Common\COM Compatibility\{25336920-03F9-11CF-8FD0-00AA00686F13}
Hopefully, that helps someone
"Here is the file path for me: Win 10 x64 Build 1803 (17134.407)
Computer\HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Office\16.0\Common\COM Compatibility{25336920-03F9-11CF-8FD0-00AA00686F13}"
You need to set the compatibility flags to 0 for all the DWord entries in this Key not just the one mentioned above - then it works
I have a SAP Business Objects Web 7.5 Add-in in Excel 2007.
The add in itself is made up of a compiled .xll file (CtExcelLinksWeb.xll) and a number of dll's.
A bit of vba shows the xll is registered, and all of its registered functions.
However, when I try to use one of these functions in VBA using Application.Run(), I get
Runtime 1004 - Macro may not be available or may be disabled.
I have tried registering the xll within the same sub (Application.RegisterXLL ()) and upon registering a VBAProject called CtEmpty.csv is created
I want to be able to automate the use of this add-in using VBA as it does long winded repetitive tasks, and then I can work on figuring out how to use the functions
Any help will be appreciated
Are the DLLs on the PATH? It may be that Excel can't load the DLLs that the XLL is dependent upon. Dependency Walker (depends.exe) is a handy tool for troubleshooting this kind of issue.
Also, have you tried using File/Options/Addins to register the XLL, as well as VBA code?