Calc Datei mit Uhrzeit Speichern und Schließen

Antwort erstellen


Um automatische Eingaben zu unterbinden, musst du die nachfolgende Aufgabe lösen.

BBCode ist eingeschaltet
[img] ist ausgeschaltet
[flash] ist ausgeschaltet
[url] ist eingeschaltet
Smilies sind ausgeschaltet

Die letzten Beiträge des Themas
   

Ansicht erweitern Die letzten Beiträge des Themas: Calc Datei mit Uhrzeit Speichern und Schließen

Re: Calc Datei mit Uhrzeit Speichern und Schließen

von Gast » Mo, 16.04.2018 18:18

Hallo,
die Zeilen ' sind nur Infozeilen und sollte ich bestimmt rauslöschen oder kann ich diese stehen lassen?
Diese Zeilen sind für gewöhnlich Informationen, bzw. Kommentare und dienen dazu,
sich auch noch nach Jahren nachlesen zu können was in diesem Code vorgeht.
Somit besser nicht löschen.
INFO:
Hochkomma und das Wort REM bezeichnen Kommentare.
Diese werden dann bei Ausführung des Makros von der Basic-IDE ignoriert.

Gruß
Faol

Re: Calc Datei mit Uhrzeit Speichern und Schließen

von Zyreon » Mo, 16.04.2018 11:12

Hallo Faol,

Vielen Dank ich habe erst heute gemerkt das bereits die zweite Seite angefangen wurde :P.

Ich teste das Makro heute noch.

die Zeilen ' sind nur Infozeilen und sollte ich bestimmt rauslöschen oder kann ich diese stehen lassen?


MfG Zy

Re: Calc Datei mit Uhrzeit Speichern und Schließen

von Faol » Di, 10.04.2018 15:23

Hallo,

Um Basic-Makros auszuführen brauchst Du keine Erweiterungen.

Ich habe mir vor längerer Zeit mal ein Makro geschrieben, mit dem ich
bequem verschiedene Versionen eines Dokuments speichern kann.
Bei mir habe ich dem Makro die Tastenkombination STRG + , zu gewiesen.
Damit wird mir die Datei in meinem Sicherungsordner gespeichert.
Damit dies funktioniert, muss der Dateiname einmalig ohne Extension im
Menü Datei\ Eigenschaften
Register: Beschreibung
Titel:
Test
Bitte nicht Test.ods

Nach Ausführung des Makros setzt sich der neue Name der Backup-Datei wie folgt zusammen:
Dateiname = Suffix & Datum mit Zeit & Präfix & Extension
z.B.
Dateiname = Zyreon__2018-04-10_135046_Backup.ods
sSuffix = der Titel aus den Dokumenteigenschaften
Datum = _2018-04-10
Uhrzeit _135046 (13:50:46)
Präfix = _Backup
Extension = .ods
Die Extension wird mittels Makro vergeben, in dem geprüft wird,
welches Programm (Writer, Calc, oder ...) gerade aktiv ist.

Code: Alles auswählen

REM  *****  BASIC  *****
REM Habe folgenden Shortcut zum Ausführen des Makros zugewiesen --> STRG+,
Sub xBackup
Dim oDoc as Object
Dim xDoc as Variant
Dim sFName as String
Dim sSuffix as String
Dim dummy()
	oDoc=ThisComponent
' Namen bzw. Suffix für den Dateinamen vergeben

' Es muss unter Menü Datei\Eigenschaften
' Register: Beschreibung 
' der Dateiname (ohne Extension) im Feld Titel eingegeben werden.
sSuffix = oDoc.DocumentProperties.Title

'mri oDoc

' geöffneten Dokumententyp ermitteln und Dateiname zusammensetzen:
' Dateiname = Suffix & Datum mit Zeit & Präfix & Extension
' WRITER
If oDoc.SupportsService("com.sun.star.text.TextDocument") THEN
  xDoc = array(sSuffix, format(now,"YYYY-MM-DD"), format(now, "hhmmss"), "Backup.odt")
' CALC
ElseIf oDoc.SupportsService("com.sun.star.sheet.SpreadsheetDocument") THEN
  xDoc = array(sSuffix, format(now,"YYYY-MM-DD"), format(now, "hhmmss"), "Backup.ods")
' IMPRESS
ElseIf oDoc.SupportsService("com.sun.star.presentation.PresentationDocument") THEN
  xDoc = array(sSuffix, format(now,"YYYY-MM-DD"), format(now, "hhmmss"), "Backup.odp")
' DRAW
ElseIf oDoc.SupportsService("com.sun.star.drawing.DrawingDocument") THEN
    xDoc = array(sSuffix, format(now,"YYYY-MM-DD"), format(now, "hhmmss"), "Backup.odg")
' MATH
ElseIf oDoc.SupportsService("com.sun.star.formula.FormulaProperties") THEN
  xDoc = array(sSuffix, format(now,"YYYY-MM-DD"), format(now, "hhmmss"), "Backup.odf")

Else
	' Fehler abfangen, wenn kein passendes Programm geöffnet ist.
	Msgbox "Es ist ein Fehler aufgetreten" & chr(10) & "Das Programm wird beendet",15
		Exit Sub
END IF

''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
' Dateiname (sFName) aus xDoc zusammensetzen.
' z.B. 
' Zyreon__2018-04-10_135046_Backup.odt
'
' sSuffix = entspricht dem Titel aus den Dokumenteigenschaften
' Datum = _2018-04-10
' Uhrzeit _135046	(13:50:46)
' Präfix = _Backup
' Extension = .odt		(Wird gemäß obige Abfrage [Dokumentyp] ermittelt.
sFName=join(xDoc, "_")
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
' Speicherung in hier angegebenen Pfad und mti Dateiname (sFName)
sFName ="c:\Sicherungskopien\" & sFName
   datei=sFName
   dateiurl=converttourl(datei)
   odoc=thisComponent
' Speicherung
   odoc.storeasurl(dateiurl,dummy())
End Sub
Nach dem Du das Makro in die Basic-IDE kopiert hast, am besten in die Bibliothek "Standard", hast Du
die Wahl welches Event (Ereignis) Du dem Makro zu weist. D.h. ausführen mittels Symbol,
über einen neuen Menüeintrag, Button, Tastenkombination oder ...
Es geht auch wenn Du das Dokument schließt oder öffnest, usw.

Lese auch die Kommentare im Code.

Noch Fragen?

Gruß
Faol

Re: Calc Datei mit Uhrzeit Speichern und Schließen

von Zyreon » Di, 10.04.2018 13:15

Hallo,

Also ich habe openoffice 4.1.5 installiert aber nur mit Calc. Benötige ich dafür zusatz utility´s

ich bin um jede Hilfe dankbar, ich will hier nur keinen Streit :)

Re: Calc Datei mit Uhrzeit Speichern und Schließen

von Jörg » Mo, 09.04.2018 15:25

Hallo Toxitom,
hast sicher recht.
Aber bei mir (AOO 4.1.5) läuft er. Auch mit dem 2x End sub.
Hängt möglicherweise mit anderen Codes zusammen.
Würd Euch bitten, den Fragesteller weiter zu unterstützen.

Danke.

Re: Calc Datei mit Uhrzeit Speichern und Schließen

von Toxitom » Mo, 09.04.2018 14:44

Hey,

der Code ist sehr schlecht geschrieben und sollte dringed überarbeitet ud bereinigt werden. Was direkt auffällt:

Code: Alles auswählen

... oDoc = ThisComponent
    checkclose=odoc.ismodified()
    if checkclose=false then
               odoc.close(true)         

End sub  
End sub 
Doppeltes "end sub" am Ende - Syntaxfehler! Führt bei LibreOffice zu der Fehlermeldung "Sub erwartet".

Code: Alles auswählen

Sub makeDayCopy()
sMakroName = "makeDayCopy "
sMakroVersion = "2006-08-12 " 
sMakroVersion = "2010-08-05"
...
Doppelte Zuweisung eines Wertes zu einer (nicht definierten) Variablen:--> Unsinnig (die erste Zuweisung wird ja direkt wieder überschrieben), schlechter Stil, führt aber nicht zu einem Programmfehler. Verwirrt aber beim Lesen des Codes.

Dazu kommt: Wirres Einrücken und wenig Struktur.

Ich empfehle wirklich, den Code erst mal zu überarbeiten - vielleicht lösen sich dann ja die Probleme "wie von selbst";))

Viele Grüeß
Tom

Re: Calc Datei mit Uhrzeit Speichern und Schließen

von Jörg » Mo, 09.04.2018 14:15

Danke Stephan !!

Re: Calc Datei mit Uhrzeit Speichern und Schließen

von Stephan » Mo, 09.04.2018 14:09

@Moderator
Vielleicht könnte das Thema ins Unterforum Makros verschoben werden?
OK, getan.


Gruß
Stephan

Re: Calc Datei mit Uhrzeit Speichern und Schließen

von Jörg » Mo, 09.04.2018 14:00

hallo,
kann ich jetzt nicht nachvollziehen.
Wie weit läuft das Makro durch?
Stell mal Deinen kompletten Code noch mal rein.


@Moderator
Vielleicht könnte das Thema ins Unterforum Makros verschoben werden?

Re: Calc Datei mit Uhrzeit Speichern und Schließen

von Zyreon » Mo, 09.04.2018 13:32

Hallo Jörg,

ich habe die Zeile gelöscht und Verzeichnisse erstellt im Ordner Vorlage liegt meine Vorlage.ods, Makro gestartet.

leider habe ich jetzt wieder einen Fehler "Basic-Syntaxfehler. Erwartet: Sub."

Bild: https://picload.org/view/dawdwcgr/oo-makro.jpg.html

Re: Calc Datei mit Uhrzeit Speichern und Schließen

von Jörg » Mo, 09.04.2018 12:09

Hallo,

Kann ich das Makro automatisieren? sobald Vorlage.ods öffnet? (Sorry ich bin nicht so der Code-Crack :O)

Eventuell unter EXtras-> Anpassen-> Dokument geöffnet.

Zyreon hat geschrieben:
Mo, 09.04.2018 10:27
C:\Sicherungskopie\ <- hier erstellt er dann meine Dateien "YYYY-MM-DD-hh'mm'ss"
Ja, wenn DU einen entsprechenden Ordner in C: hast

Lösch mal noch diese Zeile.

Code: Alles auswählen

oDialog2.endexecute()

Re: Calc Datei mit Uhrzeit Speichern und Schließen

von Zyreon » Mo, 09.04.2018 10:27

Hallo Jörg,

Also ich erstelle heute Mittag mal den Datei-Pfad sorry dachte er erstellt den selber.

C:\Vorlage\Vorlage.ods <- Grunddatei

C:\Sicherungskopie\ <- hier erstellt er dann meine Dateien "YYYY-MM-DD-hh'mm'ss"

Kann ich das Makro automatisieren? sobald Vorlage.ods öffnet? (Sorry ich bin nicht so der Code-Crack :O)

Code: Alles auswählen

Sub makeDayCopy()
sMakroName = "makeDayCopy "
sMakroVersion = "2006-08-12 " 
sMakroVersion = "2010-08-05"


oComp = StarDesktop.CurrentComponent

' macro run from blank Desktop
If oComp.supportsService(_
	"com.sun.star.frame.StartModule" ) Then	
' exit without action
Exit Sub
End If
' macro run from Basic IDE
If oComp.supportsService(_
	"com.sun.star.script.BasicIDE" ) Then	
' exit without action
Exit Sub
End If

oDok = ThisComponent

antwort = MsgBox ("Sicherungskopie erstellen?" , 52 , "Sicherung")
if antwort = 7 then
		Exit sub
end if		
dim dummy()
   datei="C:\Vorlage\Vorlage.ods"
   dateiurl=converttourl(datei)
   odoc=thisComponent
   odoc.storeasurl(dateiurl,dummy())
If oDok.hasLocation() then
	
	' check if HELP window is in foreground
	If Instr( oDok.getLocation() , "vnd.sun.star.help:" ) then
		'		msgbox "HELP window in foreground"
	' exit without action
	Exit Sub
	End if

	If NOT GlobalScope.BasicLibraries.isLibraryLoaded( "Tools" ) Then
	   GlobalScope.BasicLibraries.loadLibrary( "Tools" ) 
	End If
	    xFile = "C:\Sicherungskopien\" & GetFileNameWithoutExtension(oDok.title,) & format(now(),"YYYY-MM-DD-hh'mm'ss") & ".ods"
    sFileURL=converttourl( xFile )

	Dialoglibraries.Loadlibrary("Standard")
	MyDlg= CreateUnoDialog(Dialoglibraries.Standard.Dialog1)
	MyDlg.setvisible (True)
	myctrl = myDlg.getControl("ProgressBar1")
	myctrl.model.backgroundcolor = RGB (255, 159, 70)
	myctrl.ForegroundColor = RGB (255, 0, 0)
	myctrl.model.ProgressValueMax=100
	for i= 0 to 100
	myDlg.getControl("Label1").Text = "In Arbeit... " & i & " %"
	if i > 75 then
	myctrl.ForegroundColor = RGB (2, 159, 70)
	myDlg.getControl("Label1").Text = "Bin gleich fertig! " & i & " %"
	MyCtrl1=MyDlg.getControl("Label1")
	myctrl1.model.textcolor = RGB (2, 159, 70)
	end if
	myctrl. value = i
	wait 80
	next i
	mydlg.setvisible (false) 	
 

if FileExists( sFileURL ) then
		
		msgbox cDokGefunden & chr(13) &_
			sFileURL & chr(13) & _
			cNoCopyMade ,_
	64 ,sMakroName & sMakroVersion
else
	
		oDok.StoreToURL( sFileURL , Array() )
end if

Else
	' no filename by now - cannot do a thing
	msgbox cNoLoc & chr(13) &_
		cSaveAndRerun , 64 , sMakroName & sMakroVersion

End If

	oDialog2.endexecute()
antwort = MsgBox ("Sicherungskopie erfolgreich erstellt" & Chr(13) & "Dokument schließen?", 52 , "Sicherung")
if antwort = 7 then
		Exit sub
end if
oDoc = ThisComponent
    checkclose=odoc.ismodified()
    if checkclose=false then
               odoc.close(true)         

End sub  
End sub 

Re: Calc Datei mit Uhrzeit Speichern und Schließen

von Jörg » Mo, 09.04.2018 08:56

Hallo,

Code: Alles auswählen

datei="C:\"Deine Calc-Datei".ods"
Wie heißt Dein Calc-Dokument?

Code: Alles auswählen

xFile = "C:\Sicherungskopien\" & GetFileNameWithoutExtension(oDok.title,) & format(now(),"YYYY-MM-DD-hh'mm'ss") & ".ods
Existiert bei Dir der Ordner Sicherungskopien?

Diese Makro entweder manuell über Schaltfläche ausführen oder über

Extras->Anpassen-> Dokument wird geschlossen

Re: Calc Datei mit Uhrzeit Speichern und Schließen

von Zyreon » So, 08.04.2018 13:42

Hallo Rocko,

Super Danke kann mein Konto jetzt nutzen :D

Re: Calc Datei mit Uhrzeit Speichern und Schließen

von Rocko » So, 08.04.2018 12:01

Zyreon1 hat geschrieben:
So, 08.04.2018 11:14
leide habe ich noch immer keinen Zugriff auf mein hier Erstelltes Benutzerkonto...
Probiers noch einma!
Zyreon - Dein Passwort

Rocko, Moderator

Nach oben