Top-Themen

Aktuelle Themen (A bis Z)

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit

In LibreOffice Calc den Hotkey strg-H einfügen, der genauso wie strg-. in Excel das heutige Datum einfügt

Mitglied: Angtagapagligt

Angtagapagligt (Level 1) - Jetzt verbinden

30.09.2011, aktualisiert 06.10.2011, 10356 Aufrufe, 6 Kommentare

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 ..."

5751011f06d7830462bfc490de766150 - Klicke auf das Bild, um es zu vergrößern

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".

a8d81d271e58305b76a0262491181638 - Klicke auf das Bild, um es zu vergrößern

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.

0e69c732e0d925a8e6d482e06691fba3 - Klicke auf das Bild, um es zu vergrößern

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.

57dab9b03dbda18c4266f204d305ed35 - Klicke auf das Bild, um es zu vergrößern

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
Mitglied: bastla
05.10.2011 um 08:17 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
Bitte warten ..
Mitglied: Angtagapagligt
05.10.2011 um 18:51 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
Bitte warten ..
Mitglied: bastla
05.10.2011 um 19:07 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
Bitte warten ..
Mitglied: Angtagapagligt
06.10.2011 um 12:01 Uhr
Dann werde ich das mal anpassen

Vielen Dank für den Beitrag!

Sehr schön ... *fängt an zu hacken*

Gruß
Angtagapagligt
Bitte warten ..
Mitglied: Angtagapagligt
06.10.2011 um 12:26 Uhr
Jetzt kann man in LibreOffice nicht mal strg. auswählen -.- :P
Aber habe es ein bisschen umgedichtet.
Bitte warten ..
Mitglied: stoppel70
20.04.2012 um 10:27 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.
Bitte warten ..
Neue Wissensbeiträge
Firewall
PfSense 2.5.0 benötigt doch kein AES-NI
Tipp von ChriBo vor 21 StundenFirewall

Hallo, Wie sich einige hier erinnern werden hat Jim Thompson in diesem Aritkel beschrieben, daß ab Version 2.5.0 ein ...

Internet
Copyright-Reform: Upload-Filter
Information von Frank vor 2 TagenInternet1 Kommentar

Hallo, viele Menschen reden aktuell von Upload-Filtern. Sie reden darüber, als wären es eine Selbstverständlichkeit, das Upload-Filter den Seitenbetreibern ...

Google Android

Blokada: Tracking und Werbung unter Android unterbinden

Information von AnkhMorpork vor 2 TagenGoogle Android1 Kommentar

In Ergänzung zu meinem vorherigen Beitrag: Blokada efficiently blocks ads, tracking and malware. It saves your data plan, makes ...

Google Android
Facebooks unsichtbare Datensammlung
Information von AnkhMorpork vor 2 TagenGoogle Android2 Kommentare

Rund 30 Prozent aller Apps im Play-Store nehmen Kontakt zu Facebook auf, sobald man sie startet. So erfährt der ...

Heiß diskutierte Inhalte
Linux Userverwaltung
LogIn Versuche beschränken auf EINEN Versuch
gelöst Frage von GarroshLinux Userverwaltung23 Kommentare

Folgendes Problem Ich habe einen dezidierten Server beim Hoster gemietet, installiert ist Ubuntu 18.04.2 LTS‬ und als Webinterface Plesk. ...

Backup
Wo installiert man Veeam bei SoHo?
Frage von EDVMan27Backup14 Kommentare

Hallo, nachdem ich die neue Veeam CE bei mir getestet habe, wollte ich es einmal bei einem Kunden testen. ...

Ubuntu
Exchange Alternative auf Ubuntu
Frage von TELLOUbuntu11 Kommentare

Hi NG, wir müssen für unsere Kleine Firma (5 User) das Email / Kalendersystem neu einrichten. Ich könnte jetzt ...

Batch & Shell
Tasklist überprüfen
Frage von IleiesBatch & Shell10 Kommentare

Hallo zusammen, Wie kann ich in Batch überprüfen, ob gerade der Prozess "Skype.exe" ausgeführt wird? Also nicht so dass ...