Re: Formeln sollen nur unter Bedingungen in einem Feld sein.
Verfasst: Di, 06.10.2015 14:39
... und dann vieleicht noch 3 Wörter wie man eine Internetseite reinstellt.
deutsches Forum rund um Apache OpenOffice und LibreOffice
http://www.oooforum.de/
Oh, ich sehe grad, dass ich das PRINT überlesen habe. PRINT kann offenbar keinen Zeilenumbruch, das gibt jede Zeile separat in einer Message Box aus. Mit MsgBox funktioniert das genau so, wie du das beschrieben hast:vierviervier hat geschrieben:zum Zeilenumbruch: auf Chr$(13) bin ich auch schon in meinem Tutorial gestoßem, da bin ich mir nicht sicher, wie ich das zwischen die beiden zu printenden Absätze setze. (zwischen zwei Zeilen mit PRINT, einfach in den Text rein an die Stelle wo umgebrochen werden soll, in den Text, aber vorher Anführungszeichen zu und dann wieder auf...
Code: Alles auswählen
MsgBox("Ihre Datensätze wurden als CSV-Datei gepeichert." & Chr(13) & "Ihr Computer wünscht Ihnen noch einen schönen Tag.")
Nur wenn du eine Kompatibilität mit Visual Basic sicherstellen musst. In dem Kontext bezieht sich das auf die in der Tabelle aufgeführten Konstanten. Da du aber mit den ASCII-Werten (Chr(13)) arbeitest, brauchst du das nicht.Dann gabs noch diese Anmerkung mit "Option Compatible", muss die auch noch integriert werden?
(Hoffe das erscheint jetzt als Link).
zum DIM: _eigentlich_wird DIM für lokale Variablen in StarBasic überhaupt nicht benötigt, die würden bei der ersten Benutzung automatisch deklariert werden. Aber eine explizite Deklaration am Anfang ist einfach besserer Stil, man hat eine Übersicht, welche Variablen man verwendet.zur Zusatznull bei Monat (und auch Tag): setz ich deinen Code so am Stück ein, an welcher Stelle, oder müssen die DIM an den Anfang zu den anderen und der Rest an die Stelle, wo der Name gebildet wird?
Code: Alles auswählen
Sub Externe_CSV_speichern
Dim sPfad as String
Dim sCSVname as String
Dim sCSVzusatz as String
Dim sSpeicherString as String
Dim DatumZeit as Date
sPfad = "file:///T:/DOW_Arbeit/Listen_sonstige/Listen_CSV/" REM Den Speicherpfad vorgeben
sCSVname = "EXPORT_IBAN_" REM Das ist der Vorname der CSV-Datei. Der Nachname wird bei sCSVzusatz erstellt.
DatumZeit = Now()
sCSVzusatz = Format(DatumZeit, "yyyymmdd" & "-" & "hhmmss")
'--------------------------------------------------------------------------------
myProps(0).Name = "FilterName"
myProps(0).Value ="Text - txt - csv (StarCalc)"
myProps(1).Name="FilterOptions"
myProps(1).Value = "59,34,ANSI,1,,0,false,true,true,false"
'~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
sSpeicherString = sPfad & sCSVname & sCSVzusatz REM Nun wird der Vor- und Nachname der CSV zusammen geschrieben.
'~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
' CSV-Datei speichern und schließen.
oExterneCSV.storeAsURL(sSpeicherString, myProps()) REM Die CSV wird gespeichert
oExterneCSV.close(True) REM Die CSV wird geschlossen.
End Sub
Code: Alles auswählen
sCSVzusatz = Format(Now(), "yyyymmdd" & "-" & "hhmmss")
Du darfst keinen Zeilenumbruch vor dem schließenden Tag habenvierviervier hat geschrieben:... und dann vieleicht noch 3 Wörter wie man eine Internetseite reinstellt.
Code: Alles auswählen
sCSVzusatz = Format(DatumZeit, "yyyy_mm_dd" & "-" & "hh_mm_ss")
Code: Alles auswählen
REM Variablen deklaration.
Dim oDok as Object
Dim oExport as Object, oExternExportCSV as Object, oExterneCSV as Object
Dim aExtDatArray()
Dim sErmittlungsBlatt as String, sDatenBereich as String
Dim myFPq(0) as New com.sun.star.beans.PropertyValue
Dim myProps(1) as New com.sun.star.beans.PropertyValue
'
'##############################################################################################################
'
Sub ErzeugeExportDaten
REM Tabellenblatt Variablennamen definition.
oDok = ThisComponent
oExport = oDok.getSheets().getByName("Export")
'~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
REM Neue und leere Datei versteckt erstellen, die dann als CSV gespeichert wird.
'
myFPq(0).name = "Hidden"
myFPq(0).Value = True ' REM wenn man diese versteckte Datei sehen will, einfach True durch False ersetzen.
oExterneCSV = starDesktop.loadComponentfromURL("private:factory/scalc", "_blank", 0, myFPq())
oExternExportCSV = oExterneCSV.sheets(0)
'--------------------------------------------------------------------------------
' Die Daten vom Blatt *Export* in die neue, leere und versteckte Datei kopieren.
'
sErmittlungsBlatt = oExport.name
Benutzter_Datenbereich REM Aufruf der Sub.
aExtDatArray = oExport.getCellRangeByName( sDatenBereich ).getDataArray REM Datenbereich einlesen (kopieren).
oExternExportCSV.getCellRangeByName( sDatenBereich ).setDataArray(aExtDatArray) REM Datenbereich einfügen.
'--------------------------------------------------------------------------------
Externe_CSV_speichern REM Aufruf der Sub.
'--------------------------------------------------------------------------------
MsgBox("Ihre Datensätze wurden als CSV-Datei gepeichert." & Chr(13) & "Ihr Computer wünscht Ihnen noch einen schönen Tag.")
End Sub
'
'##############################################################################################################
'
Sub Externe_CSV_speichern
Dim sPfad as String
Dim sCSVname as String
Dim sCSVzusatz as String
Dim sSpeicherString as String
Dim DatumZeit as Date
sPfad = "file:///T:/DOW_Arbeit/Listen_sonstige/Listen_CSV/" REM Den Speicherpfad vorgeben
sCSVname = "EXPORT_IBAN_" REM Das ist der Vorname der CSV-Datei. Der Nachname wird bei sCSVzusatz erstellt.
DatumZeit = Now()
sCSVzusatz = Format(DatumZeit, "yyyymmdd" & "-" & "hhmmss")
'--------------------------------------------------------------------------------
myProps(0).Name = "FilterName"
myProps(0).Value ="Text - txt - csv (StarCalc)"
myProps(1).Name="FilterOptions"
myProps(1).Value = "59,34,ANSI,1,,0,false,true,true,false"
'~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
sSpeicherString = sPfad & sCSVname & sCSVzusatz REM Nun wird der Vor- und Nachname der CSV zusammen geschrieben.
'~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
' CSV-Datei speichern und schließen.
oExterneCSV.storeAsURL(sSpeicherString, myProps()) REM Die CSV wird gespeichert
oExterneCSV.close(True) REM Die CSV wird geschlossen.
End Sub
'
'##############################################################################################################
'
Sub Benutzter_Datenbereich
Rem Hier wird der benutzte Datenbereich eines Blattes ermittelt, und in der Stringvariable sDatenBereich zurückgegeben.
oSheet = ThisComponent.getSheets().getByName( sErmittlungsBlatt )
oCellCursor = oSheet.createCursor()
oCellCursor.GotoEndOfUsedArea(True)
sDatenBereich = REPLACE(oCellCursor.AbsoluteName, "$" & oSheet.Name & ".", "")
End Sub
Ausprobierenvierviervier hat geschrieben:Gleich noch kleine Frage am Rand: kann man die Zeile
auch so schreiben mit den Strichen unten, zur besseren Lesbarkeit?Code: Alles auswählen
sCSVzusatz = Format(DatumZeit, "yyyy_mm_dd" & "-" & "hh_mm_ss")
Code: Alles auswählen
Stempel = Year(Now()) & "-" & Month(Now()) & "-" & Day(Now()) & "_" & Hour(Now()) & "-" & Minute(Now()) & "-" & Second(Now())
Code: Alles auswählen
[...]Format(Day(Now())-10, "dd")[...]
Reicht das, um die Erweiterung festzulegen? Ich hab den Pfad gefunden und den aus den 3 Teilen zusammengesetzten Dateinamen, aber nichts zur Erweiterung.vierviervier hat geschrieben: Aber wenn ich den Speicherort aufsuche: tauchen die beiden Versionen (IBAN und KTO) aber nicht als CSV-Datei, sonder ohne Kürzel (Typ: Datei) auf und lassen sich auch nicht öffnen.
Code: Alles auswählen
[...] '-------------------------------------------------------------------------------- myProps(0).Name = "FilterName" myProps(0).Value ="Text - txt - csv (StarCalc)" myProps(1).Name="FilterOptions" myProps(1).Value = "59,34,ANSI,1,,0,false,true,true,false" '~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ [...]
Da mach ich mir ausnahmsweise mal die Mühe und setze ein paar Kommentare in den Makro-Code, und was kommt dann dabei raus!?Aber wenn ich den Speicherort aufsuche: tauchen die beiden Versionen (IBAN und KTO) aber nicht als CSV-Datei, sonder ohne Kürzel (Typ: Datei) auf und lassen sich auch nicht öffnen.
Code: Alles auswählen
REM Der sCSVzusatz besteht aus dem Datum, der Zeit und des Dateityps.
REM Datum: Tag, Monat und Jahr
Rem Zeit: Stunden, Minuten und Sekunden
Rem Dateityp: .csv
Code: Alles auswählen
sCSVzusatz = Day( Now ) & "_" & Month(Now) & "_" & Year( Now ) & " " & Hour( Now ) & "-" & sMinu & "-" & Second( Now ) & ".csv"
und hab das in Vier's Code eingebaut, ohne zu bemerken, dass vorher dort schon die Datei-Erweitungen mit drin war. Asche auf mein Haupt.Meine Variable "Stempel" entspricht deiner Variable "sCSVzusatz"
Code: Alles auswählen
Sub Externe_CSV_speichern
Dim sPfad as String
Dim sCSVname as String
Dim sCSVzusatz as String
Dim sSpeicherString as String
Dim DatumZeit as Date
sPfad = "file:///T:/DOW_Arbeit/Listen_sonstige/Listen_CSV/" REM Den Speicherpfad vorgeben
sCSVname = "EXPORT_IBAN_" REM Das ist der Vorname der CSV-Datei. Der Nachname wird bei sCSVzusatz erstellt.
DatumZeit = Now()
sCSVzusatz = Format(Year(Now()), "yyyy") & "-" & Format(Month(Now()), "mm") & "-" & Format(Day(Now()), "dd") & "_" & Format(Hour(Now()), "hh") & "-" & Format(Minute(Now()), "mm") & "-" & Format(Second(Now()), "ss") & ".csv"
'--------------------------------------------------------------------------------
myProps(0).Name = "FilterName"
myProps(0).Value ="Text - txt - csv (StarCalc)"
myProps(1).Name="FilterOptions"
myProps(1).Value = "59,34,ANSI,1,,0,false,true,true,false"
'~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
sSpeicherString = sPfad & sCSVname & sCSVzusatz REM Nun wird der Vor- und Nachname der CSV zusammen geschrieben.
:vierviervier hat geschrieben:bisheriges Ergebnis: ist eine CSV-Datei mit folgendem interessanten Aussehehn: EXPORT_IBAN_1905-01-18_00-01-00.csv
Mein Versuch deine Vorgaben umzusetzten ist folgender
Das finde ich witzig, hatte ich gestern gar nicht wahrgenommen. Mit folgendem Test-CodeTrueColor hat geschrieben::vierviervier hat geschrieben:bisheriges Ergebnis: ist eine CSV-Datei mit folgendem interessanten Aussehehn: EXPORT_IBAN_1905-01-18_00-01-00.csv
Mein Versuch deine Vorgaben umzusetzten ist folgender
Sieht doch gut aus. Hast du getestet, was rauskommt?
Code: Alles auswählen
Sub Externe_CSV_speichern
Dim sPfad as String
Dim sCSVname as String
Dim sCSVzusatz as String
Dim sSpeicherString as String
Dim DatumZeit as Date
Dim sYear as String
Dim sMonth as String
Dim sDay as String
Dim sHour as String
Dim sMinute as String
Dim sSecond as String
sPfad = ConvertToUrl("X:\45_BETRIEBSDATEN_RHS\01_BEARBEITER_DATEN\Go\") REM Den Speicherpfad vorgeben
'sPfad = "file:///X:/45_BETRIEBSDATEN_RHS/01_BEARBEITER_DATEN/Go/" REM Den Speicherpfad vorgeben
sCSVname = "EXPORT_IBAN_" REM Das ist der Vorname der CSV-Datei. Der Nachname wird bei sCSVzusatz erstellt.
DatumZeit = Now()
sYear = Format(Year(Now()), "yyyy")
sMonth = Format(Month(Now()), "mm")
sDay = Format(Day(Now()), "dd")
sHour = Format(Hour(Now()), "hh")
sMinute = Format(Minute(Now()), "mm")
sSecond = Format(Second(Now()), "ss")
sCSVzusatz = Format(Year(Now()), "yyyy") & "-" & Format(Month(Now()), "mm") & "-" & Format(Day(Now()), "dd") & "_" & Format(Hour(Now()), "hh") & "-" & Format(Minute(Now()), "mm") & "-" & Format(Second(Now()), "ss") & ".csv"
sSpeicherString = sPfad & sCSVname & sCSVzusatz REM Nun wird der Vor- und Nachname der CSV zusammen geschrieben.
MsgBox (sSpeicherString)
End Sub
Dann lass den ganzen Krampf weg, und mach's, wie oben schon mal beschriebenvierviervier hat geschrieben:@truecolor: naja, auf die Striche würde ich jetzt nicht bestehen. Wichtig ist die Reihenfolge Jahr Monat ... und das die fehlenden Nullen ergänzt werden, damit man die Datensätze dann zeitlich mit einem Klick ordnen kann.
Deine Fußnote fehltKarolus hat geschrieben:Mal ganz nebebei gefragt - wie grausam muss der Basic-code eigentlich aussehen, damit ihr eventuell mal darüber nachdenkt diese triviale Geschichte vernünftig*** zu programmieren?