Speichern unter... mit Makros!?
Moderator: Moderatoren
Speichern unter... mit Makros!?
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
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
- komma4
- ********
- Beiträge: 5332
- Registriert: Mi, 03.05.2006 23:29
- Wohnort: Chon Buri Thailand Asia
- Kontaktdaten:
Re: Speichern unter... mit Makros!?
[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:
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.
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() )
* 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)
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)
Re: Speichern unter... mit Makros!?
\\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
Soll ich euch die Datei mal hochladen?
Greetz
Re: Speichern unter... mit Makros!?
Hier im Anhang habe ich die Datei hochgeladen
- Dateianhänge
-
- anamnese.zip
- Die Datei
- (11.87 KiB) 152-mal heruntergeladen
Re: Speichern unter... mit Makros!?
Hi Xboxkill,
hier mal ein "Grundgerüst" welches bei mir funktioniert:
Den Rest kannst Du ja selber wieder einbauen.
Mir ist es jetzt zu spät dafür .
Viel Erfolg.
Jürgen
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

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
Win 7 SP1/ LibreOffice 3.4.2 OOO340m1 (Build:203) / Firefox 15.0.1 / Notebook ASUS K70IO 64 Bit-Betriebssytem
Re: Speichern unter... mit Makros!?
Jawoll!!!
Eine riesiges DANKESCHÖN an euch beide!!!
Greetz
Eine riesiges DANKESCHÖN an euch beide!!!
Greetz
Re: Speichern unter... mit Makros!?
Hallo Xboxkill,
wie sieht denn Dein fertiger Code jetzt aus?
Ich möchte gerne auch noch was lernen.
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.
Der gespeicherte Dateiname sieht dann folgendermaßen aus:
wie sieht denn Dein fertiger Code jetzt aus?
Ich möchte gerne auch noch was lernen.

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
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
Win 7 SP1/ LibreOffice 3.4.2 OOO340m1 (Build:203) / Firefox 15.0.1 / Notebook ASUS K70IO 64 Bit-Betriebssytem
Re: Speichern unter... mit Makros!?
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
Im moment ist es 'noch' nicht nötig, die Geburtsdaten einzufügen [mein Glück^^]
Greetz