[Opgelost] geen macro's na StarDesktop.loadComponentFromURL

SilentButeo2
Berichten: 6
Lid geworden op: wo jul 01, 2009 3:09 pm

[Opgelost] geen macro's na StarDesktop.loadComponentFromURL

Bericht door SilentButeo2 »

Ik heb een marco geschreven waarin het huidige document wordt gesloten en een nieuw wordt geopend.
Er wordt eigenlijk een kopie van het huidige bestand opgeslagen en het origineel wordt opnieuw terug geopend.
Dit gebeurt door een knop.
De eerste maal ik het document open, aanpas en dan op de knop druk, wordt de file opgeslagen. Hier zie ik dat de file wordt afgesloten en dat het nieuwe document( het originele waarmee ik begonnen was) terug wordt geopend.
1 Klein probleem, de knop werkt niet meer. Andere knoppen die in het document staan (om bepaalde velden te wissen) werken ook niet meer.

Dus enkel als ik het document manueel open, dan werken de knoppen. Eens ik via zo een knop het document opnieuw open, werken de knoppen (macro's) niet meer.

Is er soms iemand die hier ook al tegen gelopen is, of doe ik iets fout?
De code die ik gebruik om de om het document te open:

Code: Selecteer alles

	Dim newFactuurNummer as Long
	Dim msgbox_answer
	Dim oDoc as Object
	Dim Dummy() 
	Dim Url As String
	Dim SearchFlags As Long


	getCurrentWorkingDir()
	
	oDoc = ThisComponent
	If oDoc.isModified Then
		msgbox_answer = MsgBox("Wenst u de huidige factuur te archiveren?" , MB_YESNOCANCEL)
		If		IDYES	=	msgbox_answer Then
			' archive current file + open new file
			If ERR_SUCCESS <> ArchiveFactuur() Then
				Exit Sub
			Endif
		ElseIf	IDNO	=	msgbox_answer Then
			' discard current file + open new file
		Else
			' cancel operation, do nothing
			Exit Sub
		End If
	End If

	oDoc = ThisComponent
	oDoc.Close(True)
	Set oDoc = Nothing

	
	' open a new file
	SearchFlags = com.sun.star.frame.FrameSearchFlag.CREATE + _
              com.sun.star.frame.FrameSearchFlag.ALL
	Url = sProgramDirectoryURL & "/" & PROGRAM_NAME
	oDoc = StarDesktop.loadComponentFromURL(Url, "_blank", SearchFlags, Dummy()
De marco is opgeslagen in het document zelf, dus niet ergens in "Mijn Macro's" of "OpenOffice.org-macro's"

.
Laatst gewijzigd door SilentButeo2 op vr jul 03, 2009 10:40 am, 1 keer totaal gewijzigd.
SilentButeo2
Berichten: 6
Lid geworden op: wo jul 01, 2009 3:09 pm

Re: geen macro's na StarDesktop.loadComponentFromURL

Bericht door SilentButeo2 »

Ik heb gemerkt dat wanneer ik nu de macro's in "Mijn Macro's" stop, het wel werkt.

Het probleem hierbij is dat ik van plan ben om het bestand op een USB stick te zetten en ik dus op verschillende computers met dit bestand zal werken. Maar als ik dus op een andere PC dan de huidige ga, zullen de macro's van in "Mijn Macro's" niet meer aanwezig zijn.

Heeft iemand een oplossing.
RPG
Berichten: 4726
Lid geworden op: wo apr 15, 2009 1:01 am
Locatie: Apeldoorn, Nederland

Re: geen macro's na StarDesktop.loadComponentFromURL

Bericht door RPG »

Hallo

Ik denk dat je eerst het nieuwe document moet openen.
De macro's uit voeren in het nieuwe document die je wil uit voeren
dan pas het oude document afsluiten.

De methode loadComponentFromURL geeft je het object terug van de nieuwe file.
En deze link geeft je de informatie om een macro in een ander document te kunnen aan roepen

Romke
LibreOffice 24.2.4.2 op openSUSE Leap 15.6
SilentButeo2
Berichten: 6
Lid geworden op: wo jul 01, 2009 3:09 pm

Re: geen macro's na StarDesktop.loadComponentFromURL

Bericht door SilentButeo2 »

Mijn probleem is eigenlijk anders.

Ik heb nu 2 documenten gemaakt. Een main document met 1 knop en een sub document.
Het subdocument heeft verschillende knoppen waar marco's achter hangen(opgeslagen in het document zelf).
Als ik het subdocument handmatig open, dan werken de knoppen perfect.

Als ik het main document open en via een knop het sub document open met die StarDesktop.loadComponentFromURL, dan opent het document wel, maar werken de knoppen niet meer.

Dat is dus het probleem.
Gebruikersavatar
floris v
Berichten: 2129
Lid geworden op: za apr 11, 2009 3:30 pm
Locatie: Apeldoorn, Nederland

Re: geen macro's na StarDesktop.loadComponentFromURL

Bericht door floris v »

Ik vrees dat als de macro lokaal - dus in het bestand - is opgeslagen, hij alleen werkt als het bestand zelf de focus heeft, en zelfs niet in een hoofddocument waar het in zit. In dat geval zit er niets anders op dan de macro kopiëren naar alle computers waarop hij gebruikt moet kunnen worden.

Overigens - de functionaliteit van de macro wordt toch grotendeels afgedekt door de standaardfuncties in OOo, want bij gewoon sluiten van een document wordt ook gevraag of er bewaard moet worden.
* LibreOffice 24.2.7.2 op Ubuntu Linux
* Heb je de survival guide voor het forum al gelezen?
RPG
Berichten: 4726
Lid geworden op: wo apr 15, 2009 1:01 am
Locatie: Apeldoorn, Nederland

Re: geen macro's na StarDesktop.loadComponentFromURL

Bericht door RPG »

Hallo

Ik moest eerst eens goed naar de macro kijken voor ik kon begrijpen wat er niet goed ging?
Ik heb ook nooit geprobeerd datgene te doen wat jij probeert te doen. Het antwoord vond ik in de reeds gegeven link.

Romke

Code: Selecteer alles

Sub Main
'  Dim newFactuurNummer as Long
   Dim msgbox_answer
   Dim oDoc as Object
   Dim Url As String
   Dim SearchFlags As Long
' Ingevoegd een variabele voor een file
	dim PROGRAM_NAME
	PROGRAM_NAME="proefje_vervolg.odt"
'Ingevoegd een array voor eigenschappen die soms nodig zijn.

   'getCurrentWorkingDir() 'Dit heb je misschien nog nodig?
   
   oDoc = ThisComponent
   If oDoc.isModified Then
      msgbox_answer = MsgBox("Wenst u de huidige factuur te archiveren?" , MB_YESNOCANCEL)
      select case msgbox_answer 
	      case 2    :  Exit Sub 
			' Cancel
	      case 6 'Yes
	      	  	If ERR_SUCCESS <> ArchiveFactuur() Then
	            		Exit Sub
	         	Endif
	      case 7 'No
	  end select
   End If

Dim props(0) As New com.sun.star.beans.PropertyValue 'Maakt een array van 1 rij
    props(0).Name = "MacroExecutionMode" ' Dit is een methode van een writer file
    props(0).Value = com.sun.star.document.MacroExecMode.ALWAYS_EXECUTE_NO_WARN  ' Geef deze methode een waarde
' Eerst wordt de methode en eigeschap  alleen in de array op geslagen

' Komt hier bij nee 
' Niet gemodificeerd
' ja en nog iets
'     ' open a new file

' De code moet nu de nieuwe file openen en de oude sluiten
' " geef de eigenscappen van de SearchFlags
   SearchFlags = com.sun.star.frame.FrameSearchFlag.CREATE + _
              com.sun.star.frame.FrameSearchFlag.ALL
' Hier wordt de file naam gemaakt              
Url = ConvertToURL("/home/romgro/Documents/opof/data/" & "/" & PROGRAM_NAME)
'Open de nieuwe file
Stardesktop.loadComponentFromURL(Url, "_blank", SearchFlags, props)
oDoc.Close(True) 'sluit de oude
End Sub
LibreOffice 24.2.4.2 op openSUSE Leap 15.6
SilentButeo2
Berichten: 6
Lid geworden op: wo jul 01, 2009 3:09 pm

Re: geen macro's na StarDesktop.loadComponentFromURL

Bericht door SilentButeo2 »

RPG, dat is het

Code: Selecteer alles

Dim props(0) As New com.sun.star.beans.PropertyValue 'Maakt een array van 1 rij
    props(0).Name = "MacroExecutionMode" ' Dit is een methode van een writer file
    props(0).Value = com.sun.star.document.MacroExecMode.ALWAYS_EXECUTE_NO_WARN  ' Geef deze methode een waarde
Gewoon de macro's die gedisabled waren bij het open van die file. Wel raar dat bij het handmatig openen er gevraagd wordt of je marco's wil inschakelen of niet. En als je het via de load doet, de marco's standaard af staan. Zou toch denken dat ie de instellingen van OpenOffice zou overnemen en het ook zou vragen bij de load.

Maar goed, weer iets dat opgelost is. Heb nog een vraagje, maar zal een ander topic daarvoor open.
Zal deze nog heel even open laten staan indien nog mensen willen reageren.

Bedankt allen.
RPG
Berichten: 4726
Lid geworden op: wo apr 15, 2009 1:01 am
Locatie: Apeldoorn, Nederland

Re: geen macro's na StarDesktop.loadComponentFromURL

Bericht door RPG »

Hallo
Gewoon de macro's die gedisabled waren bij het open van die file. Wel raar dat bij het handmatig openen er gevraagd wordt of je marco's wil inschakelen of niet.
Mijn kennis gaat niet zover dat ik een echt antwoord kan geven. Maar ik denk dat het zo is
a) Macro's zijn standaard niet toegestaan.
b) Wordt een file normaal geopend dan worden de normale restricties toegepast.
c) Wordt een file met een macro geopend dan moet aangegeven worden wat is toegestaan, anders is er niets toegestaan.

In deze link kun je andere constanten vinden om het aan te passen. je mag ook de getallen 0 tot en met 9 gebruiken
Zal deze nog heel even open laten staan indien nog mensen willen reageren.
Als je vindt dat het een bevredigend antwoord is dan kun je dan gerust aan gegeven. Het belet niemand om alsnog iets aan tevullen op deze draad.

Groeten
Romke
LibreOffice 24.2.4.2 op openSUSE Leap 15.6
Gebruikersavatar
floris v
Berichten: 2129
Lid geworden op: za apr 11, 2009 3:30 pm
Locatie: Apeldoorn, Nederland

Re: geen macro's na StarDesktop.loadComponentFromURL

Bericht door floris v »

Laat ik daaraan toevoegen dat discussies niet worden gesloten, tenzij ze ontaarden in erg platte ruzies.
* LibreOffice 24.2.7.2 op Ubuntu Linux
* Heb je de survival guide voor het forum al gelezen?
Plaats reactie