Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

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

Anleitung Microsoft Microsoft Office

Mitglied: Angtagapagligt

Angtagapagligt (Level 1) - Jetzt verbinden

30.09.2011, aktualisiert 06.10.2011, 9960 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 ..
Neuester Wissensbeitrag
CPU, RAM, Mainboards

Angetestet: PC Engines APU 3a2 im Rack-Gehäuse

Erfahrungsbericht von ashnod zum Thema CPU, RAM, Mainboards ...

Ähnliche Inhalte
Windows 7
gelöst Strg + Alt + Entf komplett blockieren (10)

Frage von Kaladial zum Thema Windows 7 ...

Microsoft Office
gelöst Wie kann man die Standard-Schriftart bei einfügen von Text in Word 2013 festlegen? (3)

Frage von Rene1976 zum Thema Microsoft Office ...

Microsoft Office
gelöst Excel Pdf Datei als Icon Symbol in Word einfügen per Drag and drop? (4)

Frage von Geforce zum Thema Microsoft Office ...

Heiß diskutierte Inhalte
Windows Server
DHCP Server switchen (25)

Frage von M.Marz zum Thema Windows Server ...

Grafikkarten & Monitore
Win 10 Grafikkarte Crash von Software? (13)

Frage von Marabunta zum Thema Grafikkarten & Monitore ...

Router & Routing
gelöst Empfehlung günstiges ADSL2+ nur Modem (10)

Frage von TimMayer zum Thema Router & Routing ...

Server-Hardware
Lenovo Server System X 3650 M5 Festplatten (9)

Frage von Hendrik2586 zum Thema Server-Hardware ...