Frage stellen
0

Name des Ordners in dem sich Datei befindet

gefragt 2018-09-19 16:08:22 +0200

thommy2204 Gravatar-Bild

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!

Bearbeiten Tags ändern Melden schließen vereinen löschen

3 Antworten

0

geantwortet 2018-09-19 16:41:21 +0200

Lupp Gravatar-Bild

updated 2018-09-26 01:04:35 +0200

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.)

Bearbeiten Melden löschen Link mehr
0

geantwortet 2018-09-25 16:28:55 +0200

thommy2204 Gravatar-Bild

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

Bearbeiten Melden löschen Link mehr
0

geantwortet 2018-09-22 17:13:44 +0200

krueuw Gravatar-Bild

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.

Bearbeiten Melden löschen Link mehr
Registrieren oder einloggen, um zu antworten

Antwortwerkzeuge

1 Beobachter

Statistik

Gefragt: 2018-09-19 16:08:22 +0200

Angesehen: 73 Mal

Aktualisiert: Sep 26 '18