Seite 1 von 1

Dateinamen mit Makro einlesen

Verfasst: Mi 9. Jul 2025, 14:36
von kilix
Hallo,

ich habe 2 Calc-Dokumente:
1) Export_Name.ods: "Name" steht für eine Mitgliedernamen, z.B. Meier, Müller etc. Dieses Dokument (mit 6 Tabellen) wird in einer Datenbankapplikation erzeugt und enthält aus dieser Datenbank exportierte Daten eines Mitglieds.
2) Matrikel.ods: dieses Dokument erstellt mit Hilfe von Makros aus den Daten von z.B. Export_Meier.ods oder Export_Müller ein Matrikelblatt im PDF-Format.
Wie das Übertragen von Daten aus einem Dokument in ein anderes (also in diesem Fall von Export_Name.ods in Matrikel.ods) mit Makro funktioniert weiß ich, das habe ich in anderen Fällen schon gemacht.

Meine Frage ist nun: wie kann ich mit Hilfe eines Makros aus dem im Dokument Makro.ods den Namen des Import-Dokuments Export_Name.ods finden? Beide Dokumente liegen im gleichen Verzeichnis und ich kann es so einrichten, dass es da immer nur ein Dokument Export_Name.ods gibt.
D.h. das Makro müsste das Verzeichnis nach einem Dokument durchsuchen das mit den Zeichen "Export" beginnt und dieses im Hintergrund öffnen.

Danke für Hinweise und Hilfe!

Re: Dateinamen mit Makro einlesen

Verfasst: Mi 9. Jul 2025, 16:05
von kilix
Hallo,

ich habe dieses Problem auf andere Weise gelöst. Nachdem es in diesem Fall günstiger ist zuerst alle Dateien Export_Name.ods aus der Voranwendung zu exportieren und dann nacheinander mit dem Dokument Matrikel.ods zu bearbeiten macht es Sinn die Dateinamen nacheinander in das Dokument Matrikel.ods in ein Feld zu kopieren, dann den entsprechenden Exportdateinamen mit Makro einzulesen und die Exportdatei zu öffnen. Das funktioniert auch problemlos.
Einzig, die neu geöffnete Datei erscheint im Vordergrund und ich muss über den Menübefehl die Matrikeldatei wieder in den Vordergrund bringen.
Daher meine Frage: wie kann ich die Exportdatei im Hintergrund, also hinter der Matrikel.ods, öffnen?
Ich habe bisher diesen Code geschrieben:

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= "FilterName"
	args(0).Value = "Text - txt - ods (StarCalc)"
'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, "_blank", 0, args())
Daran wird dann der Code anghängt mit dem Daten aus dem Export-Dokument in Matrikel.ods übertragen werden.

Re: Dateinamen mit Makro einlesen

Verfasst: Mi 9. Jul 2025, 16:21
von kilix
Hallo,

auch der letzte Punkt hat sich von selbst gelöst denn nach der Übertragung aller Daten habe ich das Dokument Export_Namen.ods geschlossen und damit das erreicht was ich wollte.