Name des Ordners in dem sich Datei befindet

Hallo zusammen.

Ich habe mit Freude auf Libre-Office umgestellt, verzweifele gerade an folgender Aufgabe:

Ich möchte den Namen des Ordners (nicht den ganzen Pfad, sondern NUR den Ordnernamen) in dem sich die Datei befindet in mein Writer-Dokument automatisch einfügen lassen… mir ist es bisher nur über den Feldbefehl geglückt den ganzen Dateipfad einfügen zu lassen, will aber wirklich nur den Ordnername…

hat jemand einen Tip?

vielen Dank!

Ich weiß keinen Weg, das zu machen, jedenfalls nicht ohne trickreichen “Makro”.
Wozu auch? Ein Ordnername kann -genau wie ein Dateiname- auf einer Festplatte tausend mal vorkommen. Nur ein Pfad gibt verlässliche Information.

Wenn du aus wichtigem Grund einen Basisteil des Pfades unterdrücken willst, kannst du den im Environment auf Betriebssystemebene durch einen Kurznamen ersetzen (Mapping). Unter Win geht das, indem man mit dem Subst-Kommando ein logisches Laufwerk erstellt.

(Bearbeitung 2018-09-26 00:55 CEST:)

Die Sache mit eigenem Code zu machen ist nicht schrecklich schwierig, aber:

-1- Auch wenn der Code schon vorliegt, ist noch eine gewisse Sorgfalt nötig, um die Funktion zu erzielen.
-2- Die nötige Konfiguration muss je System, auf dem sie arbeiten soll, wiederholt werden.
-3- Es könnte Fehler geben, die unter seltenen Bedingungen vielleicht auftreten.
-4- Falls -3- zuschlägt, kann es Artbeit machen, Spuren dieser Fehler aus den Dokumenten zu entfernen.

Für Interessenten hänge ich diese Datei an, in der entsprechender Code enthalten ist. Man kan damit spielen, um die Funktion zu testen. Für den tatsächlichen Gebrauch ist aber weder Speicherung im Dokument, noch Aufruf mit einem Dokumentbutton sinnvoll. Der Code ist bei fehlerfreier Funktion in Ordnung. Reparaturwerkzeuge sind nur teilweise vorbereitet.

Natürlich könnte man dieses Feature, eventuell mit erweiterter Funktion in eine .oxt Extension packen. Ich halte das für zu viel Aufwand.

(Alle erforderlichen Informationen und auch Beispielcode findet man in den bekannten Terxten von Andrew Pitonyak.)

Das geht m.E. nur über ein Makro. Nimm den kompletten Pfad (Url) und teile ihn per Split-Befehl in die Komponenten auf. Als Trennzeichen für Split benutzt du den Pfadtrenner /. Danach steht der komplette Pfad in einem Array. Das letzte Element ist der gesuchte Dateiname.

a = split(Url, sTrenner)
Dateiname = a(uBound(a))

Für den Fall, dass du deine Felder im Dokument Feld1 bis Feld33 genannt hast und aFeld die Feldinhalte im Makro in dieser Reihenfolge (1 bis 33) enthält, kannst du sie aus dem Makro heraus so beschreiben:

aFeld = array("","geschlecht","bdat","bearbeiter","kuerzel","ticket","reaktion2","gdat","klemail","klasse","stufe","ist18","reaktdate","","fzliste","","","","bildungsgang","anhdate","anhtime","kkkonsequenz","fzbeginn","mkonsequenz","endkonsequenz","kkdate","kktime","kontaktdate","version","gort","gformel","x","kkort","anhort")
	for i=1 to 33 'felder 0 bis 23 im Dok auf dialogwerte setzen 
		sVar = "com.sun.star.text.FieldMaster.SetExpression.feld" & i
	    oPropSet = oTextFieldMasters.getByName(sVar)
		oDepTextFields = oPropSet.DependentTextFields
	    oXDepTextFeld = oDepTextFields(0)	    	    
	    select case i
	      case 1,3,4,5,6,8,9,14,18,21,23,24,28,29,32,33'Textfelder ins Dokument feldn
			sFeldinhalt = odlg.getControl(aFeld(i)).text
		  case 2,7,12,19,22,25,27'Datumsfelder ins Dokument feldn
			sFeldinhalt = CDateFromUnoDate(odlg.getControl(aFeld(i)).date)
			sFeldinhalt = ConvertDateTime(sFeldinhalt,  "DOUBLE")
		  case 10'Numerischefelder ins Dokument feldn
			sFeldinhalt = odlg.getControl(aFeld(i)).value
		  case 11'boolsche felder ins Dokument feldn
			sFeldinhalt = odlg.getControl(aFeld(i)).state
		  case 20,26'Zeitfelder ins Dokument feldn
			sFeldinhalt = CDateFromUnoTime(odlg.getControl(aFeld(i)).time)
			sFeldinhalt = ConvertDateTime(sFeldinhalt,  "DOUBLE")
		  case 30,31'Variable feldn
			sFeldinhalt = sGFormel
		end select
		   	oXDepTextFeld.content = sFeldInhalt
   			oXDepTextFeld.isVisible = true
   			oDoc.getTextFields().refresh()	
	next

Die Idee stammt von Thomas Krumbein.

Hallo und herzlichen Dank für Eure Bemühung!

Da ich nur Anwender bin und mich der Programmcode völlig überfordert werd ch wohl warten bis LO vielleicht von sich aus mal diesen Feldbefehl integriert…

Ich kann ja mal versuchen zu beschreiben was ich vor habe, möglicherweise weiß jemand einen anderen Weg:

Man stelle sich vor ich habe einen Ordner mit ca. 50 Lieferscheinen in dem dieser Feldbefehl verwendet wurde; dann nenne ich den Ordner einfach: “Weihnachtsmarkt - Dortmund”

Dann soll auf allen Lieferscheinen “Weihnachtsmarkt - Dortmund” stehen.

Mache ich dann eine Kopie des kompletten Ordners (incl. der 50Textdateien) und nenne diesen Ordner dann um in “Weihnachtsmarkt - Köln” dann habe ich automatisch alle Lieferscheine mit einem neuen Inhalt versehen.

Hängt natürlich damit zusammen das ich meine Dokumente in dieser Ordner-Struktur organisiere…

wenn noch jemand eine Idee hat (oder mir gerade dieses Makro in eine Textdatei bastelt) sehr gerne und vielen Dank!

beste Grüße, thommy2204