Hi Niklas, thanks a lot for that. I can confirm that these macros do work... I will analyse them and should be able to adapt them to my needs.
Cheers Jon ----original message---- From: Niklas Johansson <[email protected]> Date: Mon, 21 Jul 2014 11:22:53 +0200 Subj: Re: [libreoffice-users] Macro to autoload first recent doc > Let's improve the code a bit... > > When we open the registry key we do not need it to be editable so let's > open it as read only. By default GetRegistryKeyContent opens it as such. > For some reason LibreOffice complains about named arguments not > supported for the object, as Jon pointed out to me. > > I've changed the key as well to correspond exactly with the key in > registry. You can search for the key in the registrymodifications.xcu > file (with the path > %appdata%\LibreOffice\4\user\registrymodifications.xcu on windows). > > I've added a new sub which opens the file and sets some open arguments > according to what is saved in the registry and if the file is a template > it should be opened in edit mode. I do not think that the password part > works at the moment, so that part of the code probably needs some love. ;) > > Sub Load1st() > Dim oCUA, oList, oItem As Object > If Not BasicLibraries.isLibraryLoaded("Tools") Then > BasicLibraries.LoadLibrary("Tools") > REM use GetRegistryKeyContent function from the module Tools.Misc > oList = > GetRegistryKeyContent("/org.openoffice.Office.Histories/Histories/org.openoffice.Office.Histories:HistoryInfo['PickList']/OrderList") > If oList.hasByName("0") Then > oItem = oList.getByName("0") > OpenRecentFile(oItem.HistoryItemRef) > End If > End Sub > > Sub OpenRecentFile(sFileURL as String) > Dim oPickList As Object, oPickListArgs As Object > Dim loadArgs(2) As New com.sun.star.beans.PropertyValue > If Not BasicLibraries.isLibraryLoaded("Tools") Then > BasicLibraries.LoadLibrary("Tools") > oPickList = > GetRegistryKeyContent("/org.openoffice.Office.Histories/Histories/org.openoffice.Office.Histories:HistoryInfo['PickList']/ItemList") > If oPickList.hasByName(sFileURL) Then > oPickListArgs = oPickList.getByName(sFileURL) > If FileExists(sFileURL) Then > loadArgs(0).Name = "AsTemplate" 'We never want to open a recent > file as template > loadArgs(0).Value = false > loadArgs(1).Name = "Filter" > loadArgs(1).Value = oPickListArgs.getByName("Filter") > loadArgs(2).Name = "Password" > loadArgs(2).Value = oPickListArgs.getByName("Password") > REM use OpenDocument function from the module Tools.Misc > OpenDocument(sFileURL, loadArgs()) > End If > End If > End Sub > > > 'I loosely took inspiration from the LibreOffice code > http://opengrok.libreoffice.org/xref/core/unotools/source/config/historyoptions.cxx > > > > Regards, > Niklas Johansson -- To unsubscribe e-mail to: [email protected] Problems? http://www.libreoffice.org/get-help/mailing-lists/how-to-unsubscribe/ Posting guidelines + more: http://wiki.documentfoundation.org/Netiquette List archive: http://listarchives.libreoffice.org/global/users/ All messages sent to this list will be publicly archived and cannot be deleted
