🙏 Bitte helfen Sie uns das LibreOffice Forum zu erhalten. 🙏
Ihre Spende wird für die Deckung der laufenden Kosten sowie den Erhalt und Ausbau 🌱 des LibreOffice Forums verwendet.

🍀 Wir hoffen auf Ihre Unterstützung - vielen Dank!🍀

❤️ DANKE >> << DANKE ❤️

>> Dank Ihrer Unterstützung -> Keine Werbung für alle registrierten LibreOffice-Forum User! <<
🤗 Als Dankeschön werden Sie im Forum als LO-SUPPORTER gekennzeichnet. 🤗

Bildschirm nach Makro tlw. geschwärzt

Alles zur Programmierung im LibreOffice.
Antworten
kilix
Beiträge: 35
Registriert: So 26. Feb 2023, 16:31

Bildschirm nach Makro tlw. geschwärzt

Beitrag von kilix » Do 10. Jul 2025, 10:49

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) 45 mal betrachtet
Schon jetzt DANKE für eure Hilfe und Hinweise!
Grüße
kilix

mikele
* LO-Experte *
Beiträge: 1927
Registriert: Mo 1. Aug 2011, 20:51

Re: Bildschirm nach Makro tlw. geschwärzt

Beitrag von mikele » Do 10. Jul 2025, 17:02

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
Gruß,
mikele

kilix
Beiträge: 35
Registriert: So 26. Feb 2023, 16:31

Re: Bildschirm nach Makro tlw. geschwärzt

Beitrag von kilix » Fr 11. Jul 2025, 11:20

Danke mikele, das war es, jetzt funktioniert es einwandfrei!
Grüße
kilix


An alle, die das LibreOffice-Forum gern nutzen und unterstützen wollen:


Bitte helfen Sie uns mit 7 Euro pro Monat.
Durch Ihren Beitrag tragen Sie dazu bei, unsere laufenden Kosten für die kommenden Monate zu decken.
Unkompliziert per Kreditkarte oder PayPal.
Als ein kleines Dankeschön werden Sie im LO-Forum als SUPPORTER gekennzeichnet.



Antworten