Office - Word, Excel und Co. 9.753 Themen, 41.597 Beiträge

Eingabe-Maske für eine Tabelle unter Libre-Office / Calc

minbari / 14 Antworten / Baumansicht Nickles

Moin zusammen,

ich habe in der Vergangenheit eine Excel-Liste erstellt, wo über eine Eingabe-Maske Daten in eine Tabelle eingefügt werden.
Nun hat mein Arbeitgeber beschlossen, ab Januar 25 auf Libre-Office umzustellen.
Natürlich funktioniert meine Liste unter Libre nicht mehr.

Nun bin ich als dabei, eine neue Liste zu erstellen.
Ich bin auch gut vorangekommen. Die Tabelle ist fertig, die Eingabe-Maske (DialogBox) steht und Daten sind eingepflegt.

Jetzt geht es darum, die Daten, die über PullDown-Menüs in der Maske ausgewählt werden, in die Tabelle zu übernehmen und nach Datum zu sortieren.
Meine Programmier-Kenntnisse sind leider nur rudimentär und unter Libre quasi gleich null. 
In der Vergangenheit habe ich immer im Netz recherchiert, Code kopiert, angepasst, ausprobiert oder hier um Hilfe gebeten. Hier komme ich jedoch nicht weiter.

Habt Ihr eine Idee?

Screens füge ich bei. Der erste übernommene Code funktioniert nicht wirklich.

Code bisher:

REM ***** BASIC *****

Dim odialog as object, oTab as object
Dim n as integer 'akutelle Zeile


Sub Main
'ZUgriff auf Dokument
oDoc=ThisComponent
'aktuelle Tabelle
oTab=oDoc.CurrentController.ActiveSheet
'Bestimme letzte beutzte Zelle
oCur=oTab.createCursor
oCur.gotoEndOfUsedArea(False)
n=oCur.rangeaddress.startrow+1
'Zugriff auf Dialog
DialogLibraries.loadLibrary( "Standard")
oLib = DialogLibraries.getByName("Standard")
oDialog = CreateUnoDialog(oLib.getByName("Dialog1"))
'Setze aktuelles Datum
octrdate=odialog.getcontrol("DateField1")
octrdate.date=cdatetounodate(now())
'Starte Dialog
x=oDialog.execute
End Sub

sub uebernehmen
octrdate=odialog.getcontrol("DateField1")
octrkat=odialog.getcontrol("ListBox1")
octrfehler=odialog.getcontrol("Listbox2")
oTab.getcellbyposition(1,n).value=CDateFromUnoDate(octrdate.date)
oTab.getcellbyposition(2,n).string=octrkat.text
oTab.getcellbyposition(3,n).string=octrfehler.text
'Zeilenzähler erhöhen
n=n+1
end sub

Danke für die Hilfe!

minbari

bei Antwort benachrichtigen
minbari Nachtrag zu: „Eingabe-Maske für eine Tabelle unter Libre-Office / Calc“
Optionen

Ich bin weiter gekommen.

Jetzt habe ich noch 3 Probleme / Fragen.

Ist es möglich, dass die eingefügten Eintragungen automatisch nach Datum sortiert werden?

Ich hätte gerne, dass sich die Eingabemaske nach Drücken der Taste "Eintragen" entweder automatisch schließt
oder, dass sich die Eingabefelder in der Maske leeren.

Es handelt sich um eine Jahresliste, daher hatte ich es bei Excel so, dass ich nicht schon 3000-4000 Zellen gerahmt hatte,
sondern, ich hatte es so gelöst, dass die neuen Eintragungen (Zeilen) erst mit der Eintragung gerahmt wurden.
Gibt es hier bei Libre auch eine Möglichkeit?

Vielen Dank für die Hilfe!!!!

minbari

bei Antwort benachrichtigen
mawe2 minbari „Ich bin weiter gekommen. Jetzt habe ich noch 3 Probleme / Fragen. Ist es möglich, dass die eingefügten Eintragungen ...“
Optionen
ich hatte es so gelöst, dass die neuen Eintragungen (Zeilen) erst mit der Eintragung gerahmt wurden

Ich weiß. :-)

Gibt es hier bei Libre auch eine Möglichkeit?

Leider habe ich keinerlei Erfahrungen in der Programmierung von LibreOffice-Routinen.

Ich weiß ja nicht, wieviele andere VBA-Projekte Du bisher für Deinen Arbeitgeber in Excel programmiert hast. Aber wenn im Unternehmen einige solche Verfahren im Einsatz sind, ist es schon ziemlich fahrlässig vom Arbeitgeber, "einfach so" auf LibreOffice migrieren zu wollen.

Es gibt so gut wie keine brauchbaren Quellen zu dieser Thematik (also zu LibreOffice-Basic). (Wenn überhaupt, dann nur auf englisch oder japanisch.)

Wie man auch bei diesem Thread sieht, scheint es hier bei nickles.de auch niemanden zu geben, der Dir wirklich helfen will / kann.

Das ist echt eine Herausforderung, solche Projekte AdHoc von MS Office auf LibreOffice zu migrieren!

bei Antwort benachrichtigen
hddiesel minbari „Ich bin weiter gekommen. Jetzt habe ich noch 3 Probleme / Fragen. Ist es möglich, dass die eingefügten Eintragungen ...“
Optionen

Hallo minbari,

hast du deine Rahmen in Excel, mit Hilfe der Bedingten Formatierung gesetzt und möchtest jetzt wissen, ob dieses auch in LibreOffice funktioniert?

Dass dein Arbeitgeber bis jetzt noch keine Veranlassung gesehen hatte, seinen Mitarbeitern Schulungen in LibreOffice anzubieten, das ist in vielen Betrieben normal.

Ist wie immer, ein Schubs ins kalte Wasser und dein Chef ist der Meinung, ohne Zusatzausgaben für Schulungen in LibreOffice, funktioniert das schon.

Dass du nur nach einer Lösung suchst und keine Belehrung Benötigst, welche dein Chef nicht die Bohne interessiert, das Verstehe ich schon.

Da ich nur mit MS Office arbeite, kann ich dir leider keine Schritt für Schritt Anleitung geben, noch Bestätigen, dass dies in LibreOffice ebenfalls möglich ist.

Diese Fragen können dir jedoch LibreOffice Anwender beantworten.

Vielleicht findet sich hier noch ein hilfsbereites Mitglied, welches dir bei deinem Problem weiter helfen kann.

Windows 10 Pro 64-Bit, 22H2: MS Office Pro Plus 2016 32-Bit: Mein Motto: Leben und leben lassen: Gruss Karl
bei Antwort benachrichtigen
minbari hddiesel „Hallo minbari, hast du deine Rahmen in Excel, mit Hilfe der Bedingten Formatierung gesetzt und möchtest jetzt wissen, ob ...“
Optionen

Nein, die Sortierfunktion wurde mit VBA im Makro integriert.

' nach Datum sortieren

Range("B6:F3300").Sort Key1:=Range("B7")

bei Antwort benachrichtigen
mawe2 minbari „Eingabe-Maske für eine Tabelle unter Libre-Office / Calc“
Optionen
Nun hat mein Arbeitgeber beschlossen, ab Januar 25 auf Libre-Office umzustellen.

Stellt Dein Arbeitgeber dafür auch die nötigen Ressourcen (Schulungen, Literatur, Support-Abos etc.) zur Verfügung?

bei Antwort benachrichtigen
minbari mawe2 „Stellt Dein Arbeitgeber dafür auch die nötigen Ressourcen Schulungen, Literatur, Support-Abos etc. zur Verfügung?“
Optionen

Jaein... Es gibt natürlich Einführungskurse, Videos, Handbücher etc... Allerdings Makroprogrammierung ist nicht dabei.

bei Antwort benachrichtigen
mawe2 minbari „Jaein... Es gibt natürlich Einführungskurse, Videos, Handbücher etc... Allerdings Makroprogrammierung ist nicht dabei.“
Optionen
Es gibt natürlich Einführungskurse, Videos, Handbücher etc...

Das ist ja schonmal sehr gut.

Makroprogrammierung ist nicht dabei.

Wahrscheinlich müssen ja auch nicht alle Mitarbeiter Makros programmieren. Das ist schon immer ein Thema, das nur wenige User betrifft.

bei Antwort benachrichtigen
hjb minbari „Eingabe-Maske für eine Tabelle unter Libre-Office / Calc“
Optionen

Ich habe zwar von dem ganzen Zeug absolut keine Ahnung, aber sollte das hier:

Dim n as integer 'akutelle Zeile

nicht vielleicht "aktuelle Zeile" heißen?

Man wird nicht rechts, wenn man Rechten zuhoert, man wird rechts, wenn man den Linken zuhoert. (Nicolas Gomez Davila)
bei Antwort benachrichtigen
mawe2 hjb „Ich habe zwar von dem ganzen Zeug absolut keine Ahnung, aber sollte das hier: Dim n as integer akutelle Zeile nicht ...“
Optionen

Das ist ein Kommentar, den könnte man auch komplett weglassen.

Was also genau hinter dem ' steht, ist für die Funktion des Makros egal.

bei Antwort benachrichtigen
hjb mawe2 „Das ist ein Kommentar, den könnte man auch komplett weglassen. Was also genau hinter dem steht, ist für die Funktion des ...“
Optionen

Alles klar, aber wie schon geschrieben: Ich habe von dem Zeug absolut keine Ahnung, mir ist nur aufgefallen, dass da was falsch geschrieben stand.....

Man wird nicht rechts, wenn man Rechten zuhoert, man wird rechts, wenn man den Linken zuhoert. (Nicolas Gomez Davila)
bei Antwort benachrichtigen
mawe2 hjb „Alles klar, aber wie schon geschrieben: Ich habe von dem Zeug absolut keine Ahnung, mir ist nur aufgefallen, dass da was ...“
Optionen

Bei relevantem Programmcode, zeigt der Code-Editor natürlich Syntax-Fehler an. Andere Fehler werden zur Laufzeit auffällig und sorgen dann für einen Abbruch der Routine.

Aber Kommentare sind nunmal nicht relevant für die Ausführung und werden folglich auch nicht auf Rechtschreibung etc. geprüft.

bei Antwort benachrichtigen
minbari Nachtrag zu: „Eingabe-Maske für eine Tabelle unter Libre-Office / Calc“
Optionen

Alles in allem bin ich sehr positiv überrascht. Ich denke man kann im Grunde alles, was man mit MS Office machen kann, auch mit Libre Office machen - nur eben anders...

Und wenn mann bedenkt, dass Libre gratis ist, das ist dann schon der Hammer.

Der aktuelle (funktionierende) Code sieht jetzt so aus:

REM  *****  BASIC  *****

Dim odialog as object, oTab as object
Dim n as integer 'aktuelle Zeile


Sub Main
    'Zugriff auf Dokument
    oDoc=ThisComponent    
    'aktuelle Tabelle
    oTab=oDoc.CurrentController.ActiveSheet
    'Bestimme letzte benutzte Zelle
    oCur=oTab.createCursor
    oCur.gotoEndOfUsedArea(False)
    n=oCur.rangeaddress.startrow+1
    'Zugriff auf Dialog
    DialogLibraries.loadLibrary( "Standard")
    oLib = DialogLibraries.getByName("Standard")
    oDialog = CreateUnoDialog(oLib.getByName("Dialog1"))
    'Setze aktuelles Datum
    octrdate=odialog.getcontrol("DateField1")
    octrdate.date=cdatetounodate(now())
    'Starte Dialog
    x=oDialog.execute
End Sub

sub uebernehmen
    octrdate=odialog.getcontrol("DateField1")
    octrzweck=odialog.getcontrol("ListBox4")
    octrfahrzeug=odialog.getcontrol("ListBox1")
    octrbegleit=odialog.getcontrol("ListBox2")
    octrbemerk=odialog.getcontrol("ListBox5")
    oTab.getcellbyposition(1,n).value=CDateFromUnoDate(octrdate.date)
    oTab.getcellbyposition(2,n).string=octrzweck.SelectedItem
    oTab.getcellbyposition(3,n).string=octrfahrzeug.SelectedItem
    oTab.getcellbyposition(4,n).string=octrbegleit.SelectedItem
    oTab.getcellbyposition(5,n).string=octrbemerk.SelectedItem
    'Zeilenzähler erhöhen
    n=n+1
end sub

Hier fehlen dann "nur" noch die 3 besagten Funktionen, die ich weiter oben erfragt habe.

bei Antwort benachrichtigen
mawe2 minbari „Alles in allem bin ich sehr positiv überrascht. Ich denke man kann im Grunde alles, was man mit MS Office machen kann, ...“
Optionen
Ich denke man kann im Grunde alles, was man mit MS Office machen kann, auch mit Libre Office machen - nur eben anders...

"Alles" ist absolut übertrieben.

In LibreOffice gibt es bestimmte Anwendungen überhaupt nicht, die es in MS Office (Outlook, OneNote, Skype/Teams) gibt. Das kann man alles mit LO schonmal nicht machen.

Ein Datenbankprogramm gibt es in LO zwar (Base), das ist aber dem MS-Pendant (Access) keineswegs ebenbürtig.

Vor allem aber gibt es für LO viel weniger Support (oder "KnowHow") und das ist langfristig das größte Problem.

bei Antwort benachrichtigen
minbari Nachtrag zu: „Eingabe-Maske für eine Tabelle unter Libre-Office / Calc“
Optionen

Es geht voran - mühsam ernährt sich das Eichhörnchen...

Jetzt fehlt mir "nur" noch das automatische Sortieren nach Datum und

optional

die automatische Erstellung der Rahmen bei neuen Eintragungen.

bei Antwort benachrichtigen