Dateiformat ermitteln

Programmierung unter AOO/LO (StarBasic, Python, Java, ...)

Moderator: Moderatoren

Benutzeravatar
sven-my
*****
Beiträge: 358
Registriert: Fr, 14.12.2007 19:56

Dateiformat ermitteln

Beitrag von sven-my »

Hallo Experten,

ich habe mir ein Makro geschrieben, daß beim Schließen eines Dokuments ausgeführt wird.

Was ich nicht bedacht hatte, ist, dies Makro wird auch ausgeführt, wenn ich eine DokumentVORLAGE bearbeitet habe, was aber NICHT passieren soll.

Zuweisung des Makros an ein Ereignis beenden, und wieder setzen, birgt Fehler (Vergesslichkeit, falscher Klick [Ereignis], u.s.w.)

Wie kann ich innerhalb des Makro das Dateivormat, also nach *.ot? abfragen, sodaß ich bei Auftreten dieser Endung das Makro einfach beende (if ... exit sub)

Hab' mich schon dusselig gesucht, aber wohl an den falschen Stellen, mit den falschen Begriffen.

gruß
sven-my
win7 prof / AOO 4.1.2 & AOO 3.4.0 portable
Karolus
********
Beiträge: 7532
Registriert: Mo, 02.01.2006 19:48

Re: Dateiformat ermitteln

Beitrag von Karolus »

Hallo
Bei einer Vorlage sollte es ausreichen das Makro an das Ereignis "Dokumentkopie speichern oder exportieren" zu binden.

Gruß Karo
LO7.4.7.2 debian 12(bookworm) auf Raspberry5 8GB (ARM64)
LO25.2.3.2 flatpak debian 12(bookworm) auf Raspberry5 8GB (ARM64)
Benutzeravatar
sven-my
*****
Beiträge: 358
Registriert: Fr, 14.12.2007 19:56

Re: Dateiformat ermitteln

Beitrag von sven-my »

Hallo Karo,

ich glaube das hast Du etwas falsch verstanden.

Ich möchte, daß das Makro nicht ausgeführt wird, wenn ich eine Vorlage bearbeitet habe.

Ich will ja die Vorlage speichern ! Aber als Vorlage !!!

gruß
sven-my
win7 prof / AOO 4.1.2 & AOO 3.4.0 portable
Karolus
********
Beiträge: 7532
Registriert: Mo, 02.01.2006 19:48

Re: Dateiformat ermitteln

Beitrag von Karolus »

Hallo
Ich will ja die Vorlage speichern ! Aber als Vorlage
Das sollst du ja auch.
Und wenn du aus dieser Vorlage eine neues Dokument "Unbenanntx" erzeugst und nach Bearbeitung unter dem Namen "xyz.ods" speicherst wird das genannte Ereignis in Kraft treten (hoffe ich zumindest) - probiere doch meinen Vorschlag mal aus.

Gruß Karo
LO7.4.7.2 debian 12(bookworm) auf Raspberry5 8GB (ARM64)
LO25.2.3.2 flatpak debian 12(bookworm) auf Raspberry5 8GB (ARM64)
Benutzeravatar
komma4
********
Beiträge: 5332
Registriert: Mi, 03.05.2006 23:29
Wohnort: Chon Buri Thailand Asia
Kontaktdaten:

Re: Dateiformat ermitteln

Beitrag von komma4 »

sven-my hat geschrieben:Wie kann ich innerhalb des Makro das Dateivormat, also nach *.ot? abfragen, sodaß ich bei Auftreten dieser Endung das Makro einfach beende (if ... exit sub)
Binde die Bibliothe TOOLS ein, frage ab, ob das Dokument schon gespeichert ist (weil es sonst bei einem nicht-gespeicherten zu einem Fehler kommt) und ermittle dann die Dateiendung mit der Routine GetFileNameExtension

Code: Alles auswählen

If ThisComponent.hasLocation() Then
   If NOT GlobalScope.BasicLibraries.isLibraryLoaded( "Tools" ) Then
      GlobalScope.BasicLibraries.loadLibrary( "Tools" )
   End If

   DateiEndung = GetFileNameExtension( ThisComponent.getURL() )

   If DateiEndung = "ott" Then
      Exit Sub
   End If
End If
Das hilft?
Cheers
Winfried
aktuell: LO 5.3.5.2 30m0(Build:2) SUSE rpm, unter Linux openSuSE Leap 42.3 x86_64/KDE5
DateTime2 Einfügen von Datum/Zeit/Zeitstempel (als OOo Extension)
Benutzeravatar
sven-my
*****
Beiträge: 358
Registriert: Fr, 14.12.2007 19:56

Re: Dateiformat ermitteln

Beitrag von sven-my »

Hallo Karo,

man kann mit Vorlagen *.ott auf ZWEI Arten umgehen :

1. öffnen
2. bearbeiten

Wenn ich ÖFFNE erzeuge ich ein neues Dokument auf Grundlage dieser Vorlage.
Wenn ich BEARBEITE ändere ich die Vorlage

Mit dem Makro wird das neue Dokument geändert, was ich aber nicht in der Vorlage haben will.

gruß
sven-my
win7 prof / AOO 4.1.2 & AOO 3.4.0 portable
Benutzeravatar
sven-my
*****
Beiträge: 358
Registriert: Fr, 14.12.2007 19:56

Re: Dateiformat ermitteln [gelöst]

Beitrag von sven-my »

Hallo komma4,

mir schein, das ist genau das was ich suchte.

Geht das mit "Tools" einbinden nicht etwas einfacher ? (ohne die verschachtelte if..Abfragen.)

Das Makro wird ansich schon gleich zu Anfang abgefangen, wenn ein Dokument gespeichert werden soll, daß NICHT aus bestimmten Vorlagen entstanden ist.
Die Voralgen haben eine bestimmte Buchstabenkombination in 'Eigenschaften/Beschreibung/Titel'.

Mit dieser Vorlage ist ein Makro gekoppelt, daß mir, abhängigt vom Empfänger einen Speichernamen erzeugt, und das leere Dokument (bis auf den Inhalt, der aus der Vorlage kommt) speichert. Dieses Makro ist speziell auf mein Adreß-Programm abgestimmt, sodaß ich nicht sehr universell sein muß.

Aber dem Makro ist es wurscht, ob *.ott oder *.odt --- und genau dieses will ich ändern.

gruß
sven-my

Ok --- wer lesen kann, der lese

Jetzt habe ich die Verschachtelung verstanden : wenn "Tools" nicht geladen, dann lade, wenn geladen, laß es bleiben.
o.a. Frage hat sich also erübrigt.

gruß
sven-my

EDIT

Hallo Winfried,

hat hervorragend geklappt - herzlichen Dank für den Code UND die Schnelligkeit.

gruß
sven-my
win7 prof / AOO 4.1.2 & AOO 3.4.0 portable
Antworten