Speichern unter... mit Makros!?

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

Moderator: Moderatoren

xboxkill
Beiträge: 5
Registriert: Do, 02.08.2007 11:07

Speichern unter... mit Makros!?

Beitrag von xboxkill »

Guten Tag alle zusammen,
ich habe ein Problem. Und zwar weiß ich nicht, wie ich ein Makro anlegen kann, welches die Datei in einem bestimmten Ordner mit Buchstaben speichert.

So soll das in etwa aussehen:

Bsp1:
Name: Mustermann
Vorname: Max
Buchstabe: M
Dateiname: Mustermann_max.ods
Ordner: M

Bsp2:
Name: Gandorf
Vorname: Irene
Buchstabe: G
Dateiname: Gandorf_irene.ods
Ordner: G

Ich hoffe ihr könnt mir weiterhelfen!!!

Danke schonmal im voraus.

Greetz
xboxkill
Benutzeravatar
komma4
********
Beiträge: 5332
Registriert: Mi, 03.05.2006 23:29
Wohnort: Chon Buri Thailand Asia
Kontaktdaten:

Re: Speichern unter... mit Makros!?

Beitrag von komma4 »

[Nörgelmodus on]
Verwende die (undokumentierte) Funktion GetPathSeparator() zum Ermitteln des Pfad-Trennzeichens: es gibt auch andere Systeme ausser Win/Dos

Nutze die Funktion ConvertToURL um einen Namen für eine Dateioperation zu generieren (OOo verwendet und erwartet die URL-Schreibweise); und ...
nach meinen Versuchen erkennt OOo automatisch den Dateityp; ein Setzen des MediaType ist nicht erforderlich. Code sollte/könnte hier dann lauten:

Code: Alles auswählen

BasicLibraries.LoadLibrary("Tools")
ThisComponent.storeToURL( ConvertToURL( Filename ) , Array() )
Dein Zähler Nr ist als Integer deklariert, aber nicht initialisiert:
* die erste Variante heisst dann "C:\Name_Vorname-0.ods"
* nach 32767 Varianten ist Schluss (Überlaufsfehler) - wahrscheinlich braucht ein Anwender nicht so viele Kopien (Schreibversuche).
[Nörgelmodus off]
Ich danke Dir Rainer auf jeden Fall aber für die Antwort: mir war die Frage zu schwammig formuliert um zu antworten... Dein Beispiel ist ausbaufähig. Mal sehen, ob der XBox-Killer damit etwas anfangen kann.
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)
xboxkill
Beiträge: 5
Registriert: Do, 02.08.2007 11:07

Re: Speichern unter... mit Makros!?

Beitrag von xboxkill »

\\EDIT: Bin jetzt soweit, dass keine Fehler mehr in Basic sind. Nur, wenn ich das Makro teste, dann funktioniert es trotzdem nicht.

Soll ich euch die Datei mal hochladen?

Greetz
xboxkill
Beiträge: 5
Registriert: Do, 02.08.2007 11:07

Re: Speichern unter... mit Makros!?

Beitrag von xboxkill »

Hier im Anhang habe ich die Datei hochgeladen
Dateianhänge
anamnese.zip
Die Datei
(11.87 KiB) 152-mal heruntergeladen
turtle47
*******
Beiträge: 1849
Registriert: Mi, 04.01.2006 20:10
Wohnort: Rheinbach

Re: Speichern unter... mit Makros!?

Beitrag von turtle47 »

Hi Xboxkill,

hier mal ein "Grundgerüst" welches bei mir funktioniert:

Code: Alles auswählen

Sub Speichern_Anamnese
   Dim oDoc As Object
   Dim oSheet As Object
   Dim oSheets As Object
   Dim oCell As Object
   Dim sName As String
   Dim sVorname As String
   Dim TempName As String
   Dim Dirname As String
   Dim sLaufwerk As String
   Dim Nr As Integer
   dim dummy()
   oDoc = ThisComponent
   oSheet = oDoc.Sheets.getByName("Anamnese")
   'Falls der Name in einer Zelle abgelegt wurde:
   oCell = oSheet.getCellByPosition(1, 0) 'Tabellenfeld, in dem der Name steht
   sName = oCell.String
   oCell = oSheet.getCellByPosition(1, 1) 'Tabellenfeld, in dem der Vorname steht
   sVorname = oCell.String
   sLaufwerk = "C:/"
   Filename = sName & "_" & sVorname
   Dirname =  Left(sName,1)
   neuerpfad = sLaufwerk + Dirname + "/" + Filename + ".ods"
   dateiurl=converttourl(neuerpfad)
   odoc.storetourl(dateiurl,dummy())
End Sub
Den Rest kannst Du ja selber wieder einbauen. :shock:
Mir ist es jetzt zu spät dafür . :(

Viel Erfolg.

Jürgen
Software hat keinen Verstand - benutze deinen eigenen...!

Win 7 SP1/ LibreOffice 3.4.2 OOO340m1 (Build:203) / Firefox 15.0.1 / Notebook ASUS K70IO 64 Bit-Betriebssytem
xboxkill
Beiträge: 5
Registriert: Do, 02.08.2007 11:07

Re: Speichern unter... mit Makros!?

Beitrag von xboxkill »

Jawoll!!!

Eine riesiges DANKESCHÖN an euch beide!!!

Greetz
turtle47
*******
Beiträge: 1849
Registriert: Mi, 04.01.2006 20:10
Wohnort: Rheinbach

Re: Speichern unter... mit Makros!?

Beitrag von turtle47 »

Hallo Xboxkill,

wie sieht denn Dein fertiger Code jetzt aus?

Ich möchte gerne auch noch was lernen. 8)

Schöne Grüße.

Jürgen

Edit: Es kann ja auch schon mal Namensgleichheit bei verschieden Personen auftreten.
Peter Schmitz zum Beispiel gibt es in Kölle (Köln) wie Sand am Meer.
Es würde vielleicht helfen das Geburtsdatum in den Dateinamen mit einzubinden was ich in dem folgenden Code gemacht habe.
Voraussetzung ist, dass in in Zelle B5 das Geburtsdatum im Format "TT.MM.JJJJ" steht.
Ist nur so ne Idee.

Code: Alles auswählen

Sub Speichern_Anamnese_1
   Dim oDoc As Object
   Dim oSheet As Object
   Dim oSheets As Object
   Dim oCell As Object
   Dim sName As String
   Dim sVorname As String
   Dim TempName As String
   Dim Dirname As String
   Dim sLaufwerk As String
   Dim Nr As Integer
   dim dummy()
   oDoc = ThisComponent
   oSheet = oDoc.Sheets.getByName("Anamnese")
   'Falls der Name in einer Zelle abgelegt wurde:
   oCell = oSheet.getCellByPosition(1, 0) 'Tabellenfeld, in dem der Name steht
   sName = oCell.String
   oCell = oSheet.getCellByPosition(1, 1) 'Tabellenfeld, in dem der Vorname steht
   sVorname = oCell.String
   oCell = oSheet.getCellByPosition(1, 4) 'Tabellenfeld, in dem das Geburtsdatum steht (Format TT.MM.JJJJ)
   sGebdatum= oCell.String
   sGebdatTag=left(sGebdatum,2)
   sGebdatMonat1=left(sGebdatum,5)
   sGebdatMonat=right(sGebdatMonat1,2)
   sGebdatJahr=right(sGebdatum,4)
   sGebdat= sGebdatTag & "_"& sGebdatMonat & "_" & sGebdatJahr
   sLaufwerk = "C:/"
   Filename = sName & "_" & sVorname
   Dirname =  Left(sName,1)
   neuerpfad = sLaufwerk + Dirname + "/" + Filename +"_" + sGebdat + ".ods"
   dateiurl=converttourl(neuerpfad)
   odoc.storetourl(dateiurl,dummy())
End Sub
Der gespeicherte Dateiname sieht dann folgendermaßen aus:

Code: Alles auswählen

Schmitz_Peter_21_01_1958.ods
Software hat keinen Verstand - benutze deinen eigenen...!

Win 7 SP1/ LibreOffice 3.4.2 OOO340m1 (Build:203) / Firefox 15.0.1 / Notebook ASUS K70IO 64 Bit-Betriebssytem
xboxkill
Beiträge: 5
Registriert: Do, 02.08.2007 11:07

Re: Speichern unter... mit Makros!?

Beitrag von xboxkill »

Also ich habe jetzt den Code von turtle47 genommen. Er funktioniert einwandfrei perfekt^^
Im moment ist es 'noch' nicht nötig, die Geburtsdaten einzufügen [mein Glück^^]

Greetz
Antworten