Seite 1 von 1

Datei schließen

Verfasst: So, 11.10.2015 14:39
von erikafuchs
Hallo leute,
ich brauche mal wieder eure Hilfe:
Beim Öffnen meiner Datei wird ein Makro ausgeführt. Es wird ein Dialog aufgerufen. Dort gibt es auch ein Button "abbrechen". Beim Anklicken soll die Datei wider geschlossen werden. Das klappt nicht, oO stürzt ab. Ich nehme an, man kann eine Datei nicht schließen während ein Makro in dieser Datei ausgeführt wird - oder gibt es da eine Möglichkeit?
Pit

Re: Datei schließen

Verfasst: So, 11.10.2015 19:24
von F3K Total
Moin,
das geht, im Forum gibt es zig Threads dazu.
Gruß R

Re: Datei schließen

Verfasst: So, 11.10.2015 20:04
von erikafuchs
Lieber F3K Total,
ich habe gesucht. Aber entweder war das Problem ein anderes oder ähnlich und ungelöst.
Also ausprobiert habe ich den Zusatz von "StarDesktop.terminate()" und "dispose()" - beides ändert nichts, es kommt zum Absturz.

Re: Datei schließen

Verfasst: Mo, 12.10.2015 17:52
von komma4
welchen Code führt denn die Schaltfäche "Abbrechen" aus? (zeigen!)

Re: Datei schließen

Verfasst: Mo, 12.10.2015 18:25
von erikafuchs
Lieber Winfried,
ich glaube, ich habe dich auch schon mit meinem Rechentrainerprogramm belästigt - es ist etwa so umfangreich wie das Telefonbuch meiner Heimatstadt. Ich habe jetzt mal versucht, die relevanten Zeilen zu extrahieren. Die "sub start" wird beim Öffnen der Datei ausgeführt, in der "sub Namen" müssen die Schüler ihre Namen eingeben und wenn auf dem Dialog der "Abbr." Button gedrückt wird, wird die "sub Startabbruch" ausgeführt, diese soll die Datei schließen:

Code: Alles auswählen

sub start 
	oDoc=ThisComponent

	DialogLibraries.LoadLibrary("Rechentrainer")	
	
				namen 
		
		nachname=dSheet.getCellByPosition(1,1).string
		vorname=dSheet.getCellByPosition(2,1).string    

			Speichername="Rechentrainer " & vorname & " " & nachname & ".ods" 
			
end sub
'*******************************************************************************************************************************************************
sub Namen
	nDialog=createUnoDialog(DialogLibraries.Rechentrainer.NameDialog)
	do while (len(Trim(nachname))<2 or len(Trim(vorname))<2 or len (Trim(Klasse))=0) and abbr=0                         
		nDialog.execute()  

		vorname=nDialog.getControl("Vorname").text
		if len(Trim(vorname))<2 then msgBox "gib deinen Vornamen ein!"
		nachname=nDialog.getControl("Nachname").text
		if len(Trim(nachname))<2 then msgBox "Gib deinen Nachnamen ein!"                        
		klasse=nDialog.getControl("Klasse").text
		if fix(Klasse)=0 then msgBox "Gib deine Klasse ein!"
		kurs=nDialog.getControl("Kurs").text 
	loop 
	
 end sub
 *******************************************************************************************************************************************************
'sub startabbruch
	nDialog.endexecute()
	oDoc=ThisComponent
	oDoc.close(true)
end sub 
... im Code habe ich zur Übersichtlichkeit viele Zeilen weggelassen - Reicht das so oder brauchst du mehr?
Pit