Dateiname einfügen
Moderator: Moderatoren
Dateiname einfügen
Hallo,
ich möchte gern den Dateinamen, der auf die ersten 11 Zeichen begrenzt sein soll, in meine Dokumente einfügen.
Am liebsten würde ich ja das Makro, das hinter dem Feldbefehl "Dateiname ohne Erweiterung" liegt, entsprechend ändern.
- Geht das? Lassen sich die mitgelieferten Makros überhaupt verändern?
- Und wie sähe die fachgerechte Korrektur aus?
Psionwelt
ich möchte gern den Dateinamen, der auf die ersten 11 Zeichen begrenzt sein soll, in meine Dokumente einfügen.
Am liebsten würde ich ja das Makro, das hinter dem Feldbefehl "Dateiname ohne Erweiterung" liegt, entsprechend ändern.
- Geht das? Lassen sich die mitgelieferten Makros überhaupt verändern?
- Und wie sähe die fachgerechte Korrektur aus?
Psionwelt
Ich wüßte nicht das dieser Feldbefehl mit dem Makro verknüpft ist, hast Du dazu im Internet etwas gefunden?Am liebsten würde ich ja das Makro, das hinter dem Feldbefehl "Dateiname ohne Erweiterung" liegt, entsprechend ändern.
Soweit Du die Ausgabe des Feldbefehls dadurch ändern willst das Du das Makro änderst wohl nicht.Geht das?
Lassen sich die mitgelieferten Makros überhaupt verändern?
Ja. Wenn Du über genügend Rechte verfügst kannst Du in der entsprechenden Datei den Schreibschutz für die Bibliothek entfernen. Für die oben diskutierte Funktion wäre zu ändern in der Datei: <OOo-Pfad>\Share\Basic\Tools\script.xlb
library:readonly="true" in library:readonly="false"
Dann kannst Du alle Makros/Funktionen dieser Bibliothek anpassen.
Und wie sähe die fachgerechte Korrektur aus?
Code: Alles auswählen
Function GetFileNameWithoutExtension(ByVal FileName as String, Optional Separator as String)
Dim MaxIndex as Integer
Dim SepList() as String
If not IsMissing(Separator) Then
FileName = FileNameoutofPath(FileName, Separator)
End If
SepList() = ArrayoutofString(FileName,".", MaxIndex)
GetFileNameWithoutExtension = RTrimStr(FileName, "." & SepList(MaxIndex)
'Aenderung 02.02.2005
GetFileNameWithoutExtension = LEFT(GetFileNameWithoutExtension, 11)
End Function
Gruß
Stephan
Nein, das war reine Vermutung.Ich wüßte nicht das dieser Feldbefehl mit dem Makro verknüpft ist, hast Du dazu im Internet etwas gefunden?
Schließlich lässt sich "GetFileNameWithoutExtension" gut mit "Dateiname ohne Erweiterung" ins Deutsche übersetzten.
Ich verstehe den Satz zwar nicht ganz, vermute aber, dass Du damit sagen willst, dass sich die Feldbefehle nicht verändern lassen.Soweit Du die Ausgabe des Feldbefehls dadurch ändern willst das Du das Makro änderst wohl nicht.
Korrekt?
Hat funktioniert.Ja. Wenn Du über genügend Rechte verfügst kannst Du in der entsprechenden Datei den Schreibschutz für die Bibliothek entfernen. Für die oben diskutierte Funktion wäre zu ändern in der Datei: <OOo-Pfad>\Share\Basic\Tools\script.xlb
library:readonly="true" in library:readonly="false"
Dann kannst Du alle Makros/Funktionen dieser Bibliothek anpassen.
Leider hat die Änderung aber keinen Einfluss auf den Feldbefehl.
Und wenn ich über einen separaten Feldbefehl das Makro "GetFileNameWithoutExtension" ausführen lasse, erhalte ich GAR NICHTS.
Warum nicht?
Alles was ich erreichen will, ist doch die Möglichkeit, den Namen des Dokumentes, auf die ersten 11 Zeichen begrenzt, per Feldbefehl in mein Dokument einzufügen.
dann hättest Du das hinschreiben können, denn ich z.B. habe lange nachgedacht ob ich etwas nicht weiß was ich wissen sollteNein, das war reine Vermutung.
Schließlich lässt sich "GetFileNameWithoutExtension" gut mit "Dateiname ohne Erweiterung" ins Deutsche übersetzten.
diese Art des Herangehens ist ziemlich orginell
Ich verstehe den Satz zwar nicht ganz, vermute aber, dass Du damit sagen willst, dass sich die Feldbefehle nicht verändern lassen.
Korrekt?
ja
Leider hat die Änderung aber keinen Einfluss auf den Feldbefehl.
genau so ist es
Weil das kein Makro, sondern eine Funktion ist die zwei Startparameter erwartetUnd wenn ich über einen separaten Feldbefehl das Makro "GetFileNameWithoutExtension" ausführen lasse, erhalte ich GAR NICHTS.
Warum nicht?
Na per Feldbefehl ist das nicht so günstig. Wenns dann aber so sein soll nimm diese Funktion (kopiere sie in das Modul Strings der Bibliothek Tools) und ordne sie dem Feldbefehl Makro ausführen zu:Alles was ich erreichen will, ist doch die Möglichkeit, den Namen des Dokumentes, auf die ersten 11 Zeichen begrenzt, per Feldbefehl in mein Dokument einzufügen.
Code: Alles auswählen
Function test_name()
Dim FileName
Dim Separator
Dim MaxIndex as Integer
Dim SepList() as String
FileName = ThisComponent.URL
Separator = "/"
If not IsMissing(Separator) Then
FileName = FileNameoutofPath(FileName, Separator)
End If
SepList() = ArrayoutofString(FileName,".", MaxIndex)
test_name = RTrimStr(FileName, "." & SepList(MaxIndex)
test_name = LEFT(test_name, 11)
End function
Weil Du BBCode deaktiviert hattest, ich habe es jetzt aktiviertUnd wieso wird HTML in meinen Postings als Quellcode dargestellt?
Stephan
Tja, schon wieder etwas, was ich nicht verstehe.Na per Feldbefehl ist das nicht so günstig. Wenns dann aber so sein soll nimm diese Funktion (kopiere sie in das Modul Strings der Bibliothek Tools) und ordne sie dem Feldbefehl Makro ausführen zu:
Klickst Du auf diesen Feldbefehl ändert sich der Hinweistext in die gewünschten 11 Buchstaben.Code: Alles auswählen
Function test_name() Dim FileName Dim Separator Dim MaxIndex as Integer Dim SepList() as String FileName = ThisComponent.URL Separator = "/" If not IsMissing(Separator) Then FileName = FileNameoutofPath(FileName, Separator) End If SepList() = ArrayoutofString(FileName,".", MaxIndex) test_name = RTrimStr(FileName, "." & SepList(MaxIndex) test_name = LEFT(test_name, 11) End function
Ich habe die Funktion an die richtige Stelle kopiert, aber wenn ich sie als Feldbefehl Makro ausführen will, passiert NICHTS.
Muss ich OpenOffice danach neu starten, das Makro neu übersetzen lassen oder sonst etwas?
Schöne Grüße,
Psionwelt
das Nichts passiert ist ungewöhnlich. Die Frage wäre zunächst ob die Funktion überhaupt gestartet wird. Überprüfe das durch das Einfügen der Zeile:
vor der Zeile:
Nun sollte beim Starten der Funktion in jedem Fall ein Meldungsfenster kommen, sonst hast Du etwas falsch gemacht. (Dann solltest Du mal genau beschreiben wie Du vorgegangen bist.)
Ansonsten sehe ich nur einen Fall das Nichts passiert: Der Feldbefehl Makro ausführen ist ohne Hinweistext eingefügt _und_ Dein Dokument ist noch nicht mit einem Namen gespeichert. Ansonsten sollte immer etwas passieren, möglicherweise etwas Falsches, aber es sollte etwas passieren. Der Grund ist einfach der das wenn die Funktion richtig eingebunden ist und fehlerhaft arbeiten würde gäbe es eine Fehlermeldung. Ist das nicht der Fall würde die Funktion immer eine Rückgabe liefern, entweder richtig oder falsch oder Nichts. Hat der eingefügte Feldbefehl einen Hinweistext, wäre in allen 3 Fällen etwas zu erkennen.
Stephan
Code: Alles auswählen
MsgBox "Test"
Code: Alles auswählen
End Function
Ansonsten sehe ich nur einen Fall das Nichts passiert: Der Feldbefehl Makro ausführen ist ohne Hinweistext eingefügt _und_ Dein Dokument ist noch nicht mit einem Namen gespeichert. Ansonsten sollte immer etwas passieren, möglicherweise etwas Falsches, aber es sollte etwas passieren. Der Grund ist einfach der das wenn die Funktion richtig eingebunden ist und fehlerhaft arbeiten würde gäbe es eine Fehlermeldung. Ist das nicht der Fall würde die Funktion immer eine Rückgabe liefern, entweder richtig oder falsch oder Nichts. Hat der eingefügte Feldbefehl einen Hinweistext, wäre in allen 3 Fällen etwas zu erkennen.
Stephan
Ich nehme alles zurück und behaupte das Gegenteil.Ansonsten sehe ich nur einen Fall das Nichts passiert: Der Feldbefehl Makro ausführen ist ohne Hinweistext eingefügt _und_ Dein Dokument ist noch nicht mit einem Namen gespeichert. Ansonsten sollte immer etwas passieren, möglicherweise etwas Falsches, aber es sollte etwas passieren. Der Grund ist einfach der das wenn die Funktion richtig eingebunden ist und fehlerhaft arbeiten würde gäbe es eine Fehlermeldung. Ist das nicht der Fall würde die Funktion immer eine Rückgabe liefern, entweder richtig oder falsch oder Nichts. Hat der eingefügte Feldbefehl einen Hinweistext, wäre in allen 3 Fällen etwas zu erkennen.
Das Makro funktioniert einwandfrei.
Was mich zuerst irritiert hat, war der Aufruf. Auch bei eingefügtem Feldbefehl will das Makro von Hand gestartet werden.
Gibt es eine Möglichkeit, den Aufruf automatisch zu starten, wenn der Befehl "Speichern unter" abgeschlossen wurde?
Grüße
Psionwelt
Ja genau. Und deshalb hatte ich geschrieben:Was mich zuerst irritiert hat, war der Aufruf. Auch bei eingefügtem Feldbefehl will das Makro von Hand gestartet werden.
Na per Feldbefehl ist das nicht so günstig.
Pauschal ja, aber ebend nicht das der Hinweistext des Feldbefehls aktualisiert wird. Ein Feldbefehl an dieser Stelle ist ebend ungünstig.Gibt es eine Möglichkeit, den Aufruf automatisch zu starten, wenn der Befehl "Speichern unter" abgeschlossen wurde?
Stephan
Das habe ich jetzt ja verstanden.Pauschal ja, aber ebend nicht das der Hinweistext des Feldbefehls aktualisiert wird. Ein Feldbefehl an dieser Stelle ist ebend ungünstig.
Aber welche andere Möglichkeit gibt es, das Makro aufzurufen?
Ich möchte diesen Aufruf an einer beliebigen Stelle in einer Dokumentvorlage einzufügen.
Nach dem Ausführen des Befehls "Speichern unter" soll dann der Dateiname (begrenzt auf die ersten 11 Zeichen, versteht sich) automatisch im Dokument eingefügt werden.
Psionwelt
Ich würde es einfach mit einer Textmarke machen.Aber welche andere Möglichkeit gibt es, das Makro aufzurufen?
Textmarke in Dokument einfügen Name: "textmarke"
die Funktion um dieses Makro ergänzen:
Code: Alles auswählen
Sub Main
BasicLibraries.LoadLibrary("Tools")
thisComponent.getBookmarks().getByName("textmarke").getAnchor.setString(Test_name())
End Sub
das obenstehende Makro dem Ereignis "Dokument wurde gesichert als" über Extras>Anpassen -->Ereignisse zuordnen
Wenn Du mit speichern unter speicherst werden die 11 Zeichen an die textmarke geschrieben, ohne das Du etwas tun mußt, wie gewünscht:
Nach dem Ausführen des Befehls "Speichern unter" soll dann der Dateiname (begrenzt auf die ersten 11 Zeichen, versteht sich) automatisch im Dokument eingefügt werden.
Stephan