Hallo ihr beiden,
ich konnte längere Zeit nicht mitmachen.
Da ich aber sehe, das ihr doch schon sehr weit gekommen seid, wollt ich noch ein par winzige kleinigkeiten los werden.
Wo hast Du, mikele, die 1023 her?
Hab keine Ahnung ob sich LibreBasic sich in dieser hinsicht von StarBasic weiter entfernt (entwickelt) hat. Aber in StarBasic ist der maximale Wert 255, damit wird dann alles gelöscht.
Ferner weiss ich auch nicht ob das eventuell unter gewissen Umständen zu Problemen führen kann.
Ein Hinweis: Achte auf den Umgang mit den Variablen.
Korrekt.
Aber das fängt schon bei der Deklaration an. Und das vermisse ich ein wenig. Die Defenition ist ja so weit vorhanden. Um Probleme zu vermeiden würde ich noch zumindest die wichtigsten Elemente deklarieren.
Code: Alles auswählen
Sub cvs_imp()
Dim oKontoDoc as Object, oImportDoc as Object
'Kontodatei.ods als Objekt in Variable schreiben
oKontoDoc = ThisComponent
'Dateiauswahl-Dialog erzeugen
Gleich noch mehr dazu.
Nimm für verschiedene Tabellen verschiedene Variablen.
Nicht nur für die, sondern auch für Dateien. Was mikele jetzt ja schon gemacht hat.
An dieser Stelle würde ich persönlich das Konsequent weiter durchziehen, und diesem Blatt einen anderen, sprechenderen Namen vergeben.
Wie wäre es denn beispielsweise hiermit?
eigentlich einfach zu merken.
Ext = Abkürzung für Externe
CSV = spricht ja für sich selbst.
Blatt = auch selbstredend
Daraus folgt dann im nächsten Schritt.
Und folglich sieht das dann im weiteren Verlauf, Auszugsweise, wie folgt aus.
Code: Alles auswählen
oExtCSVSpalte.getByName("E").ClearContents(255)
oExtCSVSpalte.getByName("I").ClearContents(255)
Hier habe ich jetzt mal den Wert für das löschen schon auf 255 gesetzt.
Nun kann man auch besser nachvollziehen welche Code-Zeile in einem längeren Makro sich auf was bezieht.
Jetzt noch mal zurück zu der Deklaration.
Ich finde das das Externe Blatt eine wichtige Rolle spielt, und deshalb sollte dies auch dementsprechend deklariert werden. Wodurch sich der vorherige Vorschlag auf das hier ändert.
Code: Alles auswählen
Sub cvs_imp()
Dim oKontoDoc as Object, oImportDoc as Object, oExtCSVBlatt as Object
'Kontodatei.ods als Objekt in Variable schreiben
oKontoDoc = ThisComponent
'Dateiauswahl-Dialog erzeugen
Nun noch eine kleinigkeit.
Das hier (noch mit dem alten Variablennamen)
Code: Alles auswählen
oSheet.Columns(0).OptimalWidth = True
oSheet.Columns(1).OptimalWidth = True
oSheet.Columns(2).OptimalWidth = True
oSheet.Columns(3).OptimalWidth = True
oSheet.Columns(4).OptimalWidth = True
oSheet.Columns(5).OptimalWidth = True
oSheet.Columns(6).OptimalWidth = True
oSheet.Columns(7).OptimalWidth = True
würde ich auf das hier ändern, jetzt mit meinem Ändrungsvorschlag für das Externe Blatt.
Code: Alles auswählen
For iSl = 0 to 7
oExtCSVBlatt.Columns(iSl).OptimalWidth = True
next iSl
Anstatt 7 Zeilen jetzt nur noch 3.
iSl = freie Variablenbezeichnung für den Zähler, bedeutet: integerSpalteLöschen.
Damit keine Missverständnisse entstehen.
Ich will auf keinen Fall Eure bisherige geleistete Arbeit schmälern, oder runter machen. Sondern lediglich noch ein paar Tipps geben, die besonders für 'Ich Bins', von nutzen sind. Zumal ich ja selber aus leidvoller Erfahrung weiss wie die Hitze der vergangen Tage einem zu schaffen machte. Und deshalb geht mein voller RESPEKT an mikele für die geleistete Arbeit. *Hut-ab*
Denn beispielsweise die Variablen deklaration ist, so weit ich mich recht erinnere, in LibreBasic (StarBasic) anders als in VBA.
Wenn in LibreBasic mehrere Variablen in ein und der gleichen Zeile geschrieben werden, dann MÜSSEN alle dortigen Variablen mit ihrem Typ zugeordnet werden, wie mein Vorschlag es ja zeigt.
Das heißt aber auch, man kann auf diese Art und Weise verschiedene Variablentypen in der gleichen Zeile unterbringen.
Ein kleines Beispiel.
Code: Alles auswählen
Dim oHaus as Object, iZahlen as Integer, sSchrifttext as String.
oHaus, iZahlen und sSchrifttext sind jetzt nur fantasienamen, der Rest aber entspricht realen Variablentypen.
@Ich Bins
Schade, habe deinen letzten Beitrag zu spät gesehen (bin im Texte schreiben nicht der schnellst
). Ich muss gleich wech. Aber Du bist ja bei mikele sehr gut aufgehoben
.
Viel Spaß noch
Gruß
balu