In LibreOffice Calc den Hotkey strg-H einfügen, der genauso wie strg-. in Excel das heutige Datum einfügt
30.09.2011
12:28:04 Uhr4558 Aufrufe
6 Antworten
12:28:04 Uhr
6 Antworten
Noch nicht bewertet
Bei uns findet eine Umstellung auf LibreOffice statt (zumindest in einigen Bereichen). Eine wichtige Funktion von Excel war für einige Mitarbeiter der Hotkey "strg+.". Dieser hat das heutige Datum statisch eingefügt. Mit LiberOffice Calc ist das nicht mehr ohne weiteres möglich. Deshalb habe ich mal etwas gebastelt.
Hallo miteinander,
diese Anleitung soll helfen, ein wichtiges Feature von Excel in LibreOffice zu implementieren.
Zuerst möchte ich darauf hinweisen, dass mein verwendeter Code auf DateTime2 (http://www.re-solutions.de/ooo/makros/) basiert. Vielen Dank für dieses Makro.
Zuerst öffnet man "Calc" von LibreOffice (einfach ein neues Dokument). Dort wählt man dann "Extras-> Makros-> Makros verwalten-> LibreOffice Basic ..."
Nun geht man in der Dropdown-Auswahl bis zum Eintrag Module1. Das heißt "Meine Makros -> Standard -> Module1". Wenn man Module1 markiert hat, wählt man rechts "Bearbeiten".
Im Bearbeitungsfenster ersetzt man den gesamten Code mit diesem:
Nun müsste der Code automatisch gespeichert werden. Zur Sicherheit aber noch strg+s durchführen und anschließend das Bearbeitungsfenster schließen.
Danach auf eine freie Fläche auf einer Symbolleiste "rechtsklicken". Es öffnet sich ein kleines Context-Menü in dem wir "Symbolleiste anpassen" wählen.
Es öffnet sich ein Fenster in dem wir in den Reiter "Tastatur" gehen. Im oberen Bereich klicken wir auf "LibreOffice" statt auf "Calc", damit die Tastenkombination z. B. auch in "Writer" vorhanden ist, anschließend suchen wir dann die Tastenkombination "strg+H" und markieren diese. Achtung, hier kann man natürlich die Tastenkombination wählen möchte - der Excelstandardhotkey "strg+." ist hier leider nicht verfügbar. In den unteren Fenstern expandieren wir zuerst im ganz linken Fenster folgenden "Pfad": LibreOffice Makros-> user-> Standard-> Module1. Im nächsten Fenster rechts wählen wir dann "Datum_Feld" aus. Anschließend klicken wir oben noch auf "Ändern" und der Tastenkombination "strg+H" wird das Makro "Datum_Feld" hinzugefügt.
Dann noch zum Test in eine Zelle gehen und strg+H drücken. Nun müsste sich das heutige Datum voll automatisch einfügen.
Jetzt sind wir "schon" fertig.
Fragen, Wünsche und Anregungen wie immer erwünscht. ;)
Viele Grüße
Angtagapagligt
diese Anleitung soll helfen, ein wichtiges Feature von Excel in LibreOffice zu implementieren.
Zuerst möchte ich darauf hinweisen, dass mein verwendeter Code auf DateTime2 (http://www.re-solutions.de/ooo/makros/) basiert. Vielen Dank für dieses Makro.
Zuerst öffnet man "Calc" von LibreOffice (einfach ein neues Dokument). Dort wählt man dann "Extras-> Makros-> Makros verwalten-> LibreOffice Basic ..."
Nun geht man in der Dropdown-Auswahl bis zum Eintrag Module1. Das heißt "Meine Makros -> Standard -> Module1". Wenn man Module1 markiert hat, wählt man rechts "Bearbeiten".
Im Bearbeitungsfenster ersetzt man den gesamten Code mit diesem:
01.
02.
REM*****BASIC***** 03.
' ! ! ! 04.
' anpassen: 05.
' Die zwei folgenden Konstanten bestimmen Datum- und Zeit-Formatcodes 06.
' Siehe in der F1 Hilfe; sie müssen im Gebietsschema gültig sein. 07.
08.
' adjust: 09.
' following constants define data and time formats to be used; 10.
' for codes to use see in F1 Help. 11.
' Codes have to be set according to your locale settings 12.
13.
Const MYDATEFORMAT = "TT.MM.JJJJ" 14.
' Const MYDATEFORMAT = "YYYY-MM-DD" 15.
Const MYTIMEFORMAT = "HH:MM" 16.
17.
' V2 18.
' Format eines Zeitstempels 19.
' Const MYTIMESTAMPFORMAT = "YYYY-MM-DD HH:MM" 20.
Const MYTIMESTAMPFORMAT = "TT.MM.YYYY HH:MM" 21.
22.
' this one is used as separator in 23.
' an ISO-formatted date: 2007-06-24 24.
Const cDateTime_TRENNER = "." 25.
26.
27.
' V2 28.
' neue Schalter für Calc: 29.
' "Überschreiben- oder Einfügen-" Schalter, 30.
' bei Einfügen: Positionsbestimmung (vor oder hinter vorhandenem Inhalt) 31.
' bei Einfügen: Trennzeichen (nur beim Einfügen als Text ! ) 32.
33.
' new switches to define Calc override / insert behaviour 34.
' (only with text insertions) 35.
36.
Const cDateTime_Calc_Add2Text_Switch = TRUE 37.
' TRUE: add insert to any existing text or value 38.
' FALSE: replace text or value (if any) 39.
40.
Const cDateTime_Calc_Add2Text_Position = "POST" 41.
' PRE: set insert ahead of an existing text 42.
' POST: set insert after text 43.
44.
Const cDateTime_Calc_Add2Text_Separator = ": " 45.
' definition of part between text and insert 46.
47.
48.
' used for displaying messages 49.
Const cMODULNAME = "DateTime " 50.
Const cMODULDATUM = "15.08.2007 " 51.
Const cMODULVERSION = "2.0.1 " 52.
' Variablen ------------------------------------------------------------- 53.
Private oDesktop 54.
Private oController 55.
Private oDokument 56.
Private oTextCursor 57.
Private oViewCursor 58.
59.
Private oSelection 60.
Private oBereich 61.
Private oZelle 62.
Private oDateTimeField 63.
Private nDateTime_Format_DATE 64.
Private nDateTime_Format_TIME 65.
Private nDateTime_Format_DATETIME 66.
Private oZellEinf as Any 67.
Private oZumEinfuegen 68.
Private nDateTime_SetFormat 69.
Private sDatum 70.
71.
Private sDateTime_setAs ' val txt 72.
Private sDateTime_setWhat ' DAT TIM 73.
Private sDateTime_DocType ' kind of doc 74.
Private sDateTime_DATE as String 'iso 75.
Private sDateTime_FISO as String ' form. iso 76.
Private sDateTime_DATETIME as String ' iso w/ time 77.
Private sDateTime_TIME as String 78.
Private lDateTime_DATE as Long 79.
80.
Private dblDateTime_TIME as Double 81.
82.
Private oText 83.
84.
85.
CONST cEinzelZelle = "com.sun.star.sheet.SheetCell" 86.
CONST cVieleBereiche = "com.sun.star.sheet.SheetCellRanges" 87.
CONST cEinzelBereich = "com.sun.star.sheet.SheetCellRange" 88.
89.
90.
' Schalter fuer Cursorposition in Textdokumenten 91.
Private CursorIstHier as Integer 92.
CONST CURPOS_InText = 1 93.
CONST CURPOS_InTabelle = 2 94.
CONST CURPOS_InRahmen = 3 95.
CONST CURPOS_InHeaderFooter = 4 96.
97.
CONST CURPOS_INVALID = 9 98.
99.
100.
' =========================================================================== 101.
' 102.
' M A I N 103.
' 104.
' =========================================================================== 105.
106.
' Eine dieser SUBs aufrufen, einer Symbolschaltfläche oder einer 107.
' Tastenkombination zuordnen. Das Makro erkennt selbst den Dokumententyp. 108.
' (Momentan nur Calc und Writer) 109.
' 110.
' call one of these SUBs, assign to toolbar button or to keyboard combination 111.
' The macro detects document type (calc and writer) 112.
' =========================================================================== 113.
114.
' << Datum als FELD oder WERT 115.
' Sub insert_Date_asField() 116.
117.
Sub Datum_Feld 118.
sDateTime_setAs = "val" 119.
sDateTime_setWhat = "DAT" 120.
DateTime_Init 121.
DateTime_action 122.
End Sub 123.
124.
125.
' << Datum als Text 126.
' Sub insert_Date_asText() 127.
128.
Sub Datum_Text 129.
sDateTime_setAs = "txt" 130.
sDateTime_setWhat = "DAT" 131.
DateTime_Init 132.
DateTime_action 133.
End Sub 134.
135.
136.
137.
' << Zeit als FELD oder WERT 138.
' Sub insert_Time_asField() 139.
140.
Sub Zeit_Feld 141.
sDateTime_setAs = "val" 142.
sDateTime_setWhat = "TIM" 143.
DateTime_Init 144.
DateTime_action 145.
End Sub 146.
147.
' << Zeit als Text 148.
' Sub insert_Time_asText() 149.
150.
Sub Zeit_Text 151.
sDateTime_setAs = "txt" 152.
sDateTime_setWhat = "TIM" 153.
DateTime_Init 154.
DateTime_action 155.
End Sub 156.
157.
158.
' 159.
' << Zeitstempel als Text 160.
161.
Sub Zeitstempel_Feld 162.
sDateTime_setAs = "val" 163.
sDateTime_setWhat = "T_S" 164.
DateTime_Init 165.
DateTime_action 166.
End Sub 167.
168.
' << Zeitstempel als Text 169.
170.
Sub Zeitstempel_Text 171.
sDateTime_setAs = "txt" 172.
sDateTime_setWhat = "T_S" 173.
DateTime_Init 174.
DateTime_action 175.
End Sub 176.
177.
178.
' =========================================================================== 179.
' Allgemeiner Codeteil 180.
' 181.
' =========================================================================== 182.
183.
' Aktuelles Dokument 184.
' 185.
Sub DateTime_Init 186.
oDesktop = _ 187.
createUnoService( "com.sun.star.frame.Desktop" ) 188.
oController = _ 189.
oDesktop.getCurrentFrame().getController() 190.
oDokument = _ 191.
oController.Model 192.
If NOT DateTime_isDocTypeOK( oDokument ) then 193.
' Dokumententyp nicht unterstützt 194.
Msgbox _ 195.
"Dokumententyp wird nicht unterstützt" _ 196.
,64, _ 197.
cMODULNAME & "V " & cMODULVERSION 198.
199.
' print "Dokument not supported" 200.
STOP 201.
End If 202.
203.
' diese Zeit nehmen/speichern 204.
DateTime_secureNow 205.
206.
If sDateTime_setAs = "val" Then 207.
' Aufbereiten der gewünschten Formatierung 208.
DateTime_setNumFormat 209.
End If 210.
211.
End Sub 212.
213.
214.
215.
216.
' Bestimmen des Dokumententyps 217.
' aktuell: Writer, Calc, HTML 218.
Function DateTime_isDocTypeOK( oDok ) as Boolean 219.
DateTime_isDocTypeOK = FALSE 220.
221.
If oDok.supportsService(_ 222.
"com.sun.star.text.TextDocument" ) Then 223.
sDateTime_DocType = "WRITER" 224.
DateTime_isDocTypeOK = TRUE 225.
Exit Function 226.
ElseIf oDok.supportsService(_ 227.
"com.sun.star.text.WebDocument" ) THEN 228.
sDateTime_DocType = "WRITERWEB" 229.
DateTime_isDocTypeOK = TRUE 230.
Exit Function 231.
ElseIf oDok.supportsService(_ 232.
"com.sun.star.sheet.SpreadsheetDocument" ) Then 233.
sDateTime_DocType = "CALC" 234.
DateTime_isDocTypeOK = TRUE 235.
Exit Function 236.
Else 237.
sDateTime_DocType = "-n/a-" 238.
DateTime_isDocTypeOK = FALSE 239.
End If 240.
241.
End Function 242.
243.
' =========================================================================== 244.
' Codeteil fuer Datum 245.
' 246.
' 247.
' =========================================================================== 248.
Sub DateTime_secureNow 249.
' lokales speichern der Systemzeit 250.
' nummerische Werte 251.
lDateTime_DATE = DateValue( NOW ) ' 252.
dblDateTime_TIME = CDbl( NOW ) 253.
' Zeichenfolgen 254.
' Das Rueckgabeformat der Funktion "Date" ist von dem Gebietsschema 255.
' abhaengig, deshalb gewuenschtes Format durch Textmanipulation 256.
' zusammensetzen 257.
' msgbox Date zeigt: 21.11.2005 258.
' Right(Date,4) & "-" & Mid(Date,4,2) & "-" & left(Date,2) 259.
' soll: JJJJ-MM-TT 2005-11-21 260.
sDateTime_DATE = CDateToISO( Now ) 261.
' now: jjjjmmtt 20051121' 262.
' use this variable if needed 263.
' 264.
265.
' compose a ISO formatted date 266.
sDateTime_FISO = _ 267.
Left( sDateTime_DATE, 4 ) & _ 268.
cDateTime_TRENNER & _ 269.
Mid( sDateTime_DATE, 5 , 2 ) & _ 270.
cDateTime_TRENNER & _ 271.
Right( sDateTime_DATE, 2 ) 272.
' durch Apostroph erzwungenes Textformatnumber 273.
' forced text format 274.
275.
276.
' die Funktion TIME gibt 12:34:56 277.
' im Format hh:mm:ss zurück 278.
' Textteil ausschneiden 279.
sDateTime_TIME = _ 280.
Mid( TIME, 1, 5 ) 281.
282.
' Zeitstempel zusammen setzen 283.
sDateTime_DATETIME = _ 284.
sDateTime_FISO & _ 285.
" " & _ 286.
sDateTime_TIME 287.
288.
289.
End Sub 290.
291.
Sub DateTime_setNumFormat 292.
' Abfragen ob gewuenschtes Format schon definiert 293.
' hier: benutzerdefiniertes Datumsformat 294.
' query if user-defined date format already in locale settings 295.
Dim aLocale As New com.sun.star.lang.Locale 296.
297.
oFormats = _ 298.
oDokument.NumberFormats 299.
300.
nDateTime_Format_DATE = _ 301.
oFormats.queryKey( MYDATEFORMAT, aLocale, True ) 302.
' Schluesselwert nicht gefunden: hinzufuegen Format 303.
' format not found - key not returned: add format 304.
If nDateTime_Format_DATE < 0 Then 305.
nDateTime_Format_DATE = _ 306.
oFormats.addNew( MYDATEFORMAT, aLocale ) 307.
End If 308.
309.
nDateTime_Format_TIME = _ 310.
oFormats.queryKey( MYTIMEFORMAT, aLocale, True ) 311.
312.
' Schluesselwert nicht gefunden: hinzufuegen Format 313.
' format not found - key not returned: add format 314.
If nDateTime_Format_TIME < 0 Then 315.
nDateTime_Format_TIME = _ 316.
oFormats.addNew( MYTIMEFORMAT, aLocale ) 317.
End If 318.
319.
320.
321.
322.
nDateTime_Format_DATETIME = _ 323.
oFormats.queryKey( MYTIMESTAMPFORMAT, aLocale, True ) 324.
325.
' Schluesselwert nicht gefunden: hinzufuegen Format 326.
' format not found - key not returned: add format 327.
If nDateTime_Format_DATETIME < 0 Then 328.
nDateTime_Format_DATETIME = _ 329.
oFormats.addNew( MYTIMESTAMPFORMAT, aLocale ) 330.
End If 331.
332.
333.
End Sub 334.
335.
336.
337.
338.
339.
340.
341.
342.
' Hauptroutine zur Arbeitssteuerung 343.
' 344.
Sub DateTime_action() 345.
346.
' on what document do we work 347.
Select Case sDateTime_DocType 348.
349.
Case "CALC" ' Calc Dokument 350.
' die Auswahl (Zelle/n, Bilder, andere Objekte) 351.
oSelection = oController.getSelection() 352.
353.
If IsNull( oSelection ) Then 354.
Exit Sub 355.
End If 356.
357.
' Fehlerbehandlung: keine Zelle(n) 358.
' error handling: no cell(s) selected 359.
If Not oSelection.supportsService(_ 360.
"com.sun.star.table.CellProperties" ) Then 361.
exit sub 362.
End If 363.
364.
365.
Select Case sDateTime_setWhat & sDateTime_setAs 366.
Case = "DATval" 367.
oZellEinf = lDateTime_DATE 368.
nDateTime_SetFormat = nDateTime_Format_DATE 369.
Case = "DATtxt" 370.
oZellEinf = sDateTime_FISO 371.
Case = "TIMval" 372.
oZellEinf = dblDateTime_TIME 373.
nDateTime_SetFormat = nDateTime_Format_TIME 374.
Case = "TIMtxt" 375.
oZellEinf = sDateTime_TIME 376.
Case = "T_Sval" 377.
oZellEinf = dblDateTime_TIME 378.
nDateTime_SetFormat = nDateTime_Format_DATETIME 379.
Case = "T_Stxt" 380.
oZellEinf = sDateTime_DATETIME 381.
Case Else 382.
Exit Sub 383.
End Select 384.
385.
DateTime_setCalc( oSelection , oEinf ) 386.
387.
388.
Case "WRITER" , "WRITERWEB" ' Writer Dokument 389.
' als Wert 390.
if sDateTime_setAs= "val" then 391.
392.
' Textfeld erzeugen 393.
oDateTimeField = oDokument.createInstance( _ 394.
"com.sun.star.text.TextField.DateTime" ) 395.
' einstellen: 396.
' Schalter "fest" = wird zur Ausfuehrung gesetzt und nicht geaendert 397.
' Schalter "ist ein Datum" einstellen 398.
' ermitteltes Datumsformat (ist Nummernformat) anwenden 399.
' apply date (number) format 400.
Select Case sDateTime_setWhat 401.
Case = "DAT" 402.
nDateTime_SetFormat = nDateTime_Format_DATE 403.
Case = "TIM" 404.
nDateTime_SetFormat = nDateTime_Format_TIME 405.
Case = "T_S" 406.
nDateTime_SetFormat = nDateTime_Format_DATETIME 407.
Case Else 408.
Exit Sub 409.
End Select 410.
411.
With oDateTimeField 412.
.IsFixed = True 413.
.IsDate = True 414.
.NumberFormat = nDateTime_SetFormat 415.
End With 416.
' in das Dokument eintragen 417.
oZumEinfuegen = oDateTimeField 418.
DateTime_setWriter( oZumEinfuegen ) 419.
420.
421.
' als Text 422.
Else 423.
' in das Dokument eintragen 424.
Select Case sDateTime_setWhat 425.
Case = "DAT" 426.
oZumEinfuegen = sDateTime_FISO 427.
Case = "TIM" 428.
oZumEinfuegen = sDateTime_TIME 429.
Case = "T_S" 430.
oZumEinfuegen = sDateTime_DATETIME 431.
Case Else 432.
Exit Sub 433.
End Select 434.
435.
436.
DateTime_setWriter( oZumEinfuegen ) 437.
438.
End If 439.
440.
Case Else 441.
print "forgotten doc type" 442.
443.
End Select 444.
445.
End Sub 446.
' =========================================================================== 447.
448.
449.
450.
451.
452.
' =========================================================================== 453.
454.
455.
456.
' =========================================================================== 457.
' Routine zum Eintragen Writer 458.
Sub DateTime_setWriter( sFeldZumEinfuegen ) 459.
460.
' Objekt des sichtbaren Cursors 461.
oViewCursor = oController.ViewCursor 462.
463.
' Routine aufrufen 464.
' Cursorstandort bestimmen 465.
' determine where the cursor is 466.
DateTime_suchTxtCursor( oViewCursor ) 467.
468.
469.
' je nach Position des Cursors unterschiedlicher Zugriff 470.
' different access depending on cursor position 471.
Select Case CursorIstHier 472.
473.
'---------------------------------------------------------------------------- 474.
' cursor in text 475.
Case CURPOS_InText 476.
if sDateTime_setAs= "val" then 477.
oDokument.getText().insertTextContent( _ 478.
oViewCursor, oZumEinfuegen , False ) 479.
else 480.
oTextCursor = _ 481.
oDokument.getText().createTextCursorByRange( oViewCursor ) 482.
oTextCursor.String = oZumEinfuegen 483.
end if 484.
'---------------------------------------------------------------------------- 485.
'cursor in texttable 486.
Case CURPOS_InTabelle 487.
oZelle = oViewCursor.Cell 488.
if sDateTime_setAs= "val" then 489.
oZelle.getText().insertTextContent( _ 490.
oViewCursor, oZumEinfuegen, False ) 491.
else 492.
oTextCursor = oZelle.getText().createTextCursorByRange( oViewCursor ) 493.
oZelle.insertString( oTextCursor, oZumEinfuegen, FALSE ) 494.
end if 495.
'--------------------------------------------------------------------------- 496.
' cursor in frame 497.
Case CURPOS_InRahmen 498.
if sDateTime_setAs= "val" then 499.
oRahmen = oViewCursor.TextFrame() 500.
oRahmen.getText().insertTextContent( _ 501.
oViewCursor, oZumEinfuegen, False ) 502.
else 503.
oRahmen = oViewCursor.TextFrame() 504.
oRahmen.getText().insertText( _ 505.
oViewCursor, oZumEinfuegen, False ) 506.
end if 507.
'--------------------------------------------------------------------------- 508.
' in Kopf- oder Fusszeile 509.
' cursor in header or footer 510.
Case CURPOS_InHeaderFooter 511.
if sDateTime_setAs= "val" then 512.
513.
' Feld einfügen 514.
' insert field 515.
oText.insertTextContent( _ 516.
oViewCursor, oZumEinfuegen, False ) 517.
else 518.
oTextCursor = oText.createTextCursorByRange( oViewCursor ) 519.
oText.insertString( oTextCursor, oZumEinfuegen, FALSE ) 520.
end if 521.
'--------------------------------------------------------------------------- 522.
Case Else 523.
' not yet programmed 524.
End Select 525.
526.
End Sub 527.
528.
529.
' =========================================================================== 530.
' Diese Routine bestimmt die Position des sichtbaren Cursors im Text eines 531.
' Writer Dokuments 532.
' momentan wird die Position erkannt in: 533.
' Tabellen, Textrahmen, Kopf- und Fusszeilen 534.
535.
' This routine determines position of viewable cursor within a writer doc 536.
' detects: cursor in texttable, textframe, header and footer 537.
Sub DateTime_suchTxtCursor( oViewCursor ) 538.
539.
' init Zeiger fuer Position 540.
CursorIstHier = 0 541.
542.
543.
' Sonderfall: Cursor im Bereich Kopf-/Fusszeile 544.
if oViewCursor.getText().ImplementationName = "SwXHeadFootText" then 545.
oText = oViewCursor.getText() 546.
CursorIstHier = CURPOS_InHeaderFooter 547.
exit sub 548.
end if 549.
550.
if Not IsEmpty( oViewCursor.TextTable ) then 551.
CursorIstHier = CURPOS_InTabelle 552.
exit sub 553.
end if 554.
555.
if Not IsEmpty( oViewCursor.TextFrame ) then 556.
CursorIstHier = CURPOS_InRahmen 557.
exit sub 558.
end if 559.
560.
561.
' Cursor ist immer "im Text", deshalb diesen Schalter zuletzt setzen 562.
' cursor always "in" text, so set this trigger last 563.
if Not IsEmpty( oViewCursor.Text ) then 564.
CursorIstHier = CURPOS_InText 565.
end if 566.
567.
End Sub 568.
569.
570.
571.
572.
573.
' =========================================================================== 574.
' Calc Dokumente 575.
576.
Sub DateTime_setCalc( oSelection , oEinf ) 577.
Dim oEinBereich 578.
579.
' Zelle / Bereich / mehrere Bereiche ? 580.
581.
If oSelection.supportsService( cEinzelZelle ) Then 582.
' single cell 583.
DateTime_setZelle( oSelection ) 584.
ElseIf _ 585.
oSelection.supportsService( cVieleBereiche ) Then 586.
' mehrere Bereiche 587.
For i = 0 To oSelection.getCount() - 1 588.
oEinBereich = oSelection.getByIndex(i) 589.
DateTime_setCalc( oEinBereich ) 590.
Next 591.
ElseIf _ 592.
oSelection.supportsService( cEinzelBereich ) Then 593.
' ein Bereich von Zellen 594.
DateTime_set1Bereich( oSelection ) 595.
End If 596.
597.
End Sub 598.
599.
600.
' Calc 601.
' einzelne Zelle 602.
Sub DateTime_setZelle( oSel ) 603.
604.
If sDateTime_setAs= "val" Then 605.
' Wert geht über Formatierung 606.
With oSel 607.
.FormulaLocal = oZellEinf 608.
.NumberFormat = nDateTime_SetFormat 609.
End With 610.
Else 611.
' sDateTime_setAs= "txt" 612.
' V2 613.
If cDateTime_Calc_Add2Text_Switch = TRUE Then 614.
Dim sTempText 615.
sTempText = oSel.getString() 616.
If ( Len( sTempText ) > 0 ) Then 617.
Select Case cDateTime_Calc_Add2Text_Position 618.
Case = "PRE" 619.
sTempText = _ 620.
oZellEinf & _ 621.
cDateTime_Calc_Add2Text_Separator & _ 622.
oSel.getString() 623.
oSel.setString( sTempText ) 624.
625.
Case = "POST" 626.
sTempText = _ 627.
oSel.getString() & _ 628.
cDateTime_Calc_Add2Text_Separator & _ 629.
oZellEinf 630.
oSel.setString( sTempText ) 631.
Case Else 632.
Exit Sub 633.
End Select 634.
Else 635.
oSel.setString( oZellEinf ) 636.
End IF 637.
638.
Else 639.
oSel.setString( oZellEinf ) 640.
End IF 641.
End If 642.
End Sub 643.
644.
645.
' Calc 646.
' einen Bereich von Zellen setzen 647.
Sub DateTime_set1Bereich( oSelection ) 648.
649.
' Daten des Bereichs 650.
oDaten() = oSelection.getDataArray() 651.
' die Zeilen des Bereichs 652.
' zz: ZählerZeilen 653.
for zz = _ 654.
LBound( oDaten() ) to _ 655.
UBound( oDaten() ) 656.
657.
oDatenZeile() = oDaten( zz ) 658.
' zz: ZählerZeilen 659.
660.
' pro Zeile die cells/Zellen 661.
' zc: ZählerCells 662.
for zc = _ 663.
LBound( oDatenZeile() ) to _ 664.
UBound( oDatenZeile() ) 665.
666.
oDatenZeile( zc ) = oZellEinf 667.
next ' Zellen 668.
next ' nächste Datenzeile 669.
670.
671.
' Daten auf diesen Bereich 672.
oSelection.setDataArray( oDaten() ) 673.
If sDateTime_setAs= "val" Then 674.
' Datumformat (ist ein Nummernformat) anwenden 675.
' apply date (number) format 676.
oSelection.NumberFormat = nDateTime_SetFormat 677.
End If 678.
679.
End Sub 680.
681.
' -------------------------------------------------------Nun müsste der Code automatisch gespeichert werden. Zur Sicherheit aber noch strg+s durchführen und anschließend das Bearbeitungsfenster schließen.
Danach auf eine freie Fläche auf einer Symbolleiste "rechtsklicken". Es öffnet sich ein kleines Context-Menü in dem wir "Symbolleiste anpassen" wählen.

Es öffnet sich ein Fenster in dem wir in den Reiter "Tastatur" gehen. Im oberen Bereich klicken wir auf "LibreOffice" statt auf "Calc", damit die Tastenkombination z. B. auch in "Writer" vorhanden ist, anschließend suchen wir dann die Tastenkombination "strg+H" und markieren diese. Achtung, hier kann man natürlich die Tastenkombination wählen möchte - der Excelstandardhotkey "strg+." ist hier leider nicht verfügbar. In den unteren Fenstern expandieren wir zuerst im ganz linken Fenster folgenden "Pfad": LibreOffice Makros-> user-> Standard-> Module1. Im nächsten Fenster rechts wählen wir dann "Datum_Feld" aus. Anschließend klicken wir oben noch auf "Ändern" und der Tastenkombination "strg+H" wird das Makro "Datum_Feld" hinzugefügt.
Dann noch zum Test in eine Zelle gehen und strg+H drücken. Nun müsste sich das heutige Datum voll automatisch einfügen.
Jetzt sind wir "schon" fertig.
Fragen, Wünsche und Anregungen wie immer erwünscht. ;)
Viele Grüße
Angtagapagligt
bastla schreibt am 05.10.2011 um 08:17:47 Uhr
Hallo Angtagapagligt!
Danke für die geleistete Arbeit
Eine Frage drängt sich mir allerdings auf: Warum habt Ihr Euer Excel dazu überredet, anstelle der Standard-Funktion von Strg+H (oder eher Strg+h) , nämlich "Suchen / Ersetzen", das Einfügen des Datums (für das Durchschnittsuser/innen eher Strg+. verwenden würden) vorzunehmen?
Grüße
bastla
Danke für die geleistete Arbeit
Eine Frage drängt sich mir allerdings auf: Warum habt Ihr Euer Excel dazu überredet, anstelle der Standard-Funktion von Strg+H (oder eher Strg+h) , nämlich "Suchen / Ersetzen", das Einfügen des Datums (für das Durchschnittsuser/innen eher Strg+. verwenden würden) vorzunehmen?
Grüße
bastla
Angtagapagligt schreibt am 05.10.2011 um 18:51:48 Uhr
Ähm... also die Information, dass das mit strg+H geht, habe ich von dem User. Ich habe jetzt aber schon mehrmals gehört, dass der eigentlich Hotkey strg+alt+, oder so ähnlich ist
Ich war mir nicht 100% sicher, deshalb hab' ich mal die User-Variante genommen. Wenn mir jemand den exakten Hotkey nennen kann ändere ich das natürlich umgehend ab.
Vielen Dank!
Gruß
Angtagapagligt
Ich war mir nicht 100% sicher, deshalb hab' ich mal die User-Variante genommen. Wenn mir jemand den exakten Hotkey nennen kann ändere ich das natürlich umgehend ab.
Vielen Dank!
Gruß
Angtagapagligt
bastla schreibt am 05.10.2011 um 19:07:28 Uhr
Hallo Angtagapagligt!
Soferne immer noch das Einfügen des aktuellen Datums als Konstante das Thema wäre, bliebe es bei der oben erwähnten Tastenkombination "Strg" + "Punkt" - ein "Alt" kommt noch nicht mal bei der analogen Vorgangsweise für die Uhrzeit ("Strg" + "Doppelpunkt" = "Strg" + "Umsch" + "Punkt") vor ...
Grüße
bastla
Soferne immer noch das Einfügen des aktuellen Datums als Konstante das Thema wäre, bliebe es bei der oben erwähnten Tastenkombination "Strg" + "Punkt" - ein "Alt" kommt noch nicht mal bei der analogen Vorgangsweise für die Uhrzeit ("Strg" + "Doppelpunkt" = "Strg" + "Umsch" + "Punkt") vor ...
Grüße
bastla
Angtagapagligt schreibt am 06.10.2011 um 12:01:46 Uhr
Dann werde ich das mal anpassen
Vielen Dank für den Beitrag!
Sehr schön ... *fängt an zu hacken*
Gruß
Angtagapagligt
Vielen Dank für den Beitrag!
Sehr schön ... *fängt an zu hacken*
Gruß
Angtagapagligt
Angtagapagligt schreibt am 06.10.2011 um 12:26:02 Uhr
Jetzt kann man in LibreOffice nicht mal strg. auswählen -.- :P
Aber habe es ein bisschen umgedichtet.
Aber habe es ein bisschen umgedichtet.
stoppel70 schreibt am 20.04.2012 um 10:27:39 Uhr
Hallo zusammen,
das ganze habe ich mit einem Autohotkey-Skript erledigt:
!q:: ; Alt+q
{ FormatTime,eigdat,,dd.MM.yyyy
Send, %eigdat%
; Send, {Enter}
Return
}
Alt+q fügt damit das Datum ein.
Wer das ganze mit einem Return abschließen möchte, muß die Zeile mit dem "; Send..." am Anfang das ";" löschen.
Mit IfWinActive könnte das Skript auf eine Anwendung begrenzt werden.
das ganze habe ich mit einem Autohotkey-Skript erledigt:
!q:: ; Alt+q
{ FormatTime,eigdat,,dd.MM.yyyy
Send, %eigdat%
; Send, {Enter}
Return
}
Alt+q fügt damit das Datum ein.
Wer das ganze mit einem Return abschließen möchte, muß die Zeile mit dem "; Send..." am Anfang das ";" löschen.
Mit IfWinActive könnte das Skript auf eine Anwendung begrenzt werden.









