Seite 1 von 1

Bildschirm nach Makro tlw. geschwärzt

Verfasst: Do 10. Jul 2025, 10:49
von kilix
Hallo,

ich habe eine LO-Dokument zum Einlesen von Matrikeldaten eines Vereinsmitglieds die nach einem Export aus einer DB-Anwendung auch als xlsx-Dokument vorliegen. Bei der Anwemdung gehe ich so vor, dass der Dateiname der Export-Datei im Matrikel-Dokument gespeichert ist und vom Makro eingelesen wird. Das Makro öffnet nun das Expot-Dokument im Hintergund und kopiert ausgewählte Bereiche in eigene Tabellen des Matrikel-Dokuments. Das Makro funktioniert technisch (habe dazu Code verwendet den ich vor längerer Zeit von mikele erhalten habe und mir schon sehr geholfen hat!).
Das Problem ist, dass nach Abschluss des Makros große Teile des Fensters geschwärtzt sind. Ich habe das Makro schrittweise gefahren und festgestellt, dass es mit dem Laden des Export-Dokuments zusammenhängt (oODS = StarDesktop.LoadComponentFromURL(sURL, "default", 0, args()).
So sieht der Code des Makros aus:

Code: Alles auswählen

sub Exportdatei
	dim document   as object
	dim dispatcher as object
	document   = ThisComponent.CurrentController.Frame
	dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")
	oDoc = thisComponent
'Dateiname einlesen (=Name)
	oSheet = oDOC.sheets(0)	'Tabellennummer, bei 0 beginnend)
	oView = oDOC.CurrentController
	oZelle = oSheet.getCellRangeByName("M5")	'Zelle in der Dateinamen steht
	Name=oZelle.string	'Name = Exportdateiname aus AVS
'Öffnen der ods-Datei
	Dim args(1) as New com.sun.star.beans.PropertyValue
	args(0).Name = "ReadOnly"
	args(0).Value = True
'Aktuelles Verzeichnis einlesen und Datei basis.ods öffnen
	sURL = thiscomponent.url
	apfad = split(sURL,"/")
	apfad(ubound(apfad)) = Name
  	sURL = convertToURL(join(apfad,"/"))
        oODS = StarDesktop.LoadComponentFromURL(sURL, "default", 0, args())

'1: Auslesen Mitglied in ein Array der Daten
	aDaten=oODS.Sheets(0).getCellRangeByName("B3:B12").getDataArray
	'Schreiben der Daten in die aktuelle Datei (aDaten = Zwischenspeicher im Makro)
	oDoc.Sheets(2).getCellRangeByName("B3:B12").setDataArray(aDaten)
	
'2: Auslesen Eingang in ein Array der Daten
	aDaten=oODS.Sheets(1).getCellRangeByName("A1:F300").getDataArray
	'Schreiben der Daten in die aktuelle Datei
	oDoc.Sheets(3).getCellRangeByName("A1:F300").setDataArray(aDaten)

'Basis-Datei schließen
	oODS.close(false)
'Rückkehr
	dim args63(0) as new com.sun.star.beans.PropertyValue
	args63(0).Name = "Nr"
	args63(0).Value = 1
	dispatcher.executeDispatch(document, ".uno:JumpToTable", "", 0, args63())
	dim args64(0) as new com.sun.star.beans.PropertyValue
	args64(0).Name = "ToPoint"
	args64(0).Value = "$A$1"
	dispatcher.executeDispatch(document, ".uno:GoToCell", "", 0, args64())
end sub
Und hier ist noch das Bild dazu:
schwarz.jpg
schwarz.jpg (7.83 KiB) 51 mal betrachtet
Schon jetzt DANKE für eure Hilfe und Hinweise!

Re: Bildschirm nach Makro tlw. geschwärzt

Verfasst: Do 10. Jul 2025, 17:02
von mikele
Hallo,
probier' mal die Datei im Hintergrund (praktisch unsichtbar) zu öffnen:

Code: Alles auswählen

'Öffnen der ods-Datei
	Dim args(1) as New com.sun.star.beans.PropertyValue
	args(0).Name = "ReadOnly"
	args(0).Value = True
	args(1).Name = "Hidden"
	args(1).Value = True

Re: Bildschirm nach Makro tlw. geschwärzt

Verfasst: Fr 11. Jul 2025, 11:20
von kilix
Danke mikele, das war es, jetzt funktioniert es einwandfrei!