Guten Tag,
Ich bin neu hier bei Euch und könnte Eure Hilfe gebrauchen.
Hintergrund warum ich mich an Euch wende, ist das ich mich nicht mit OpenOffice auskenne. (Nur Excel)
Des Weiteren, weil wir auf unseren Anlagen PCs keine Excel haben.
Auf einem dieser PCs muss ich jetzt eine Excel Tabelle mit OpenOffice nutzen,
wo die Kollegen ihre Störzeiten eintragen.
Die installierte Version von OpenOffice ist 4.1.11
Die Excel Tabelle habe ich in das OpenOffice Format konvertiert.
Diese konvertierte Tabelle funktioniert in OpenOffice sehr gut.
In der Excel Tabelle gab es auch einen Button zum Speichern.
Der Button ist in der konvertierten Datei nicht vorhanden gewesen.
Ich habe die Schaltfläche nachgerüstet.
Den VBA Code habe ich mit diesem Konverter übersetzen lassen. Ob das eine gute Idee war, weiß ich nicht.
https://www.business-spreadsheets.com/vba2oo.asp
Den übersetzten Code habe ich dann dieser Schaltfläche zugeordnet.
Als ich dann die Schaltfläche gedrückt habe, kam es zu einem Syntaxfehler.
Ich drücke dann auf OK und das wars. Ich bekomme keine weiteren Informationen.
Der Excel VBA-Code:
Code: Alles auswählen
Sub CommandButton1_Click()
Dim vntPathAndFile As String
If Range("T5") = "" Then
MsgBox "Keine Datum ausgewählt!"
Exit Sub
End If
If Range("T6") = "" Then
MsgBox "Keine Schicht ausgewählt!"
Exit Sub
End If
If Range("T8") = "" Then
MsgBox "Kein Einleger 1 ausgewählt!"
Exit Sub
End If
If Range("V8") = "" Then
MsgBox "Kein Einleger 2 ausgewählt!"
Exit Sub
End If
If Range("T9") = "" Then
MsgBox "Kein Nacharbeiter 1 ausgewählt!"
Exit Sub
End If
If Range("V9") = "" Then
MsgBox "Kein Nacharbeiter 2 ausgewählt!"
Exit Sub
End If
If Range("T10") = "" Then
MsgBox "Kein Instandhalter ausgewählt!"
Exit Sub
End If
If Range("U11") = "" Then
MsgBox "Stückzahl links nicht eingetragen!"
Exit Sub
End If
If Range("W11") = "" Then
MsgBox "Stückzahl rechts nicht eingetragen!"
Exit Sub
End If
vntPathAndFile = "D:\Stoerauswertung\" & "G26_TH_" & Range("T6") & "_" & Format(Now, "yyyy.mm.dd-hh.mm") & ".xlsx"
Rem Wenn Dialog abgebrochen, dann Makro verlassen
If vntPathAndFile = "Falsch" Then Exit Sub
Rem Neue Arbeitsmappe erstellen
Workbooks.Add xlWBATWorksheet
Rem Bildschirmmeldungen auschalten
Application.DisplayAlerts = False
Application.ScreenUpdating = False
Rem Einfügen und speichern
ThisWorkbook.Sheets(1).Cells.Copy ActiveSheet.Cells(1)
With ActiveWorkbook
.SaveAs Filename:=vntPathAndFile, FileFormat:=xlOpenXMLWorkbook
.Close
End With
Range("T5:W6").ClearContents
Range("T8:W9").ClearContents
Range("T10:W10").ClearContents
Range("U11").ClearContents
Range("W11").ClearContents
Range("B12:W27").ClearContents
Rem Bildschirmmeldungen einschalten
Application.DisplayAlerts = True
Application.ScreenUpdating = True
End Sub
Code: Alles auswählen
Sub CommandButton1_Click()
Dim vntPathAndFile As String
If Dim oSheet as Object[n]oSheet = ThisComponent.CurrentController.ActiveSheet[n]oSheet.getCellRangeByName($1)("T5") = "" Then
MsgBox "Keine Datum ausgewählt!"
Exit Sub
End If
If Dim oSheet as Object[n]oSheet = ThisComponent.CurrentController.ActiveSheet[n]oSheet.getCellRangeByName($1)("T6") = "" Then
MsgBox "Keine Schicht ausgewählt!"
Exit Sub
End If
If Dim oSheet as Object[n]oSheet = ThisComponent.CurrentController.ActiveSheet[n]oSheet.getCellRangeByName($1)("T8") = "" Then
MsgBox "Kein Einleger 1 ausgewählt!"
Exit Sub
End If
If Dim oSheet as Object[n]oSheet = ThisComponent.CurrentController.ActiveSheet[n]oSheet.getCellRangeByName($1)("V8") = "" Then
MsgBox "Kein Einleger 2 ausgewählt!"
Exit Sub
End If
If Dim oSheet as Object[n]oSheet = ThisComponent.CurrentController.ActiveSheet[n]oSheet.getCellRangeByName($1)("T9") = "" Then
MsgBox "Kein Nacharbeiter 1 ausgewählt!"
Exit Sub
End If
If Dim oSheet as Object[n]oSheet = ThisComponent.CurrentController.ActiveSheet[n]oSheet.getCellRangeByName($1)("V9") = "" Then
MsgBox "Kein Nacharbeiter 2 ausgewählt!"
Exit Sub
End If
If Dim oSheet as Object[n]oSheet = ThisComponent.CurrentController.ActiveSheet[n]oSheet.getCellRangeByName($1)("T10") = "" Then
MsgBox "Kein Instandhalter ausgewählt!"
Exit Sub
End If
If Dim oSheet as Object[n]oSheet = ThisComponent.CurrentController.ActiveSheet[n]oSheet.getCellRangeByName($1)("U11") = "" Then
MsgBox "Stückzahl links nicht eingetragen!"
Exit Sub
End If
If Dim oSheet as Object[n]oSheet = ThisComponent.CurrentController.ActiveSheet[n]oSheet.getCellRangeByName($1)("W11") = "" Then
MsgBox "Stückzahl rechts nicht eingetragen!"
Exit Sub
End If
vntPathAndFile = "D:\Stoerauswertung\" & "G26_TH_" & Dim oSheet as Object[n]oSheet = ThisComponent.CurrentController.ActiveSheet[n]oSheet.getCellRangeByName($1)("T6") & "_" & Format(Now, "yyyy.mm.dd-hh.mm") & ".xlsx"
Rem Wenn Dialog abgebrochen, dann Makro verlassen
If vntPathAndFile = "Falsch" Then Exit Sub
Rem Neue Arbeitsmappe erstellen
Workbooks.Add xlWBATWorksheet
Rem Bildschirmmeldungen auschalten
Application.DisplayAlerts = False
ThisComponent.LockControllers
Rem Einfügen und speichern
ThisWorkbook.Sheets(1).Cells.Copy ThisComponent.CurrentController.ActiveSheet.Cells(1)
With ThisComponent
.SaveAs Filename:=vntPathAndFile, FileFormat:=xlOpenXMLWorkbook
$1.Close(False)
End With
getCellThisComponent.CurrentController.ThisComponent.CurrentController.ActiveSheet.getCellDim oSheet as Object[n]oSheet = ThisComponent.CurrentController.ActiveSheet[n]oSheet.getCellRangeByName($1)ByName(ByName(("T5:W6")).clearContents(com.sun.star.sheet.CellFlags.VALUE + com.sun.star.sheet.CellFlags.STRING + com.sun.star.sheet.CellFlags.DATETIME)(com.sun.star.sheet.CellFlags).Value + com.sun.star.sheet.CellFlags.STRING + com.sun.star.sheet.CellFlags.DATETIME + com.sun.star.sheet.CellFlags.ANNOTATION + com.sun.star.sheet.CellFlags.FORMULA + com.sun.star.sheet.CellFlags.HARDATTR + com.sun.star.sheet.CellFlags.STYLES + com.sun.star.sheet.CellFlags.OBJECTS + com.sun.star.sheet.CellFlags.EDITATTR)Contents
getCellThisComponent.CurrentController.ThisComponent.CurrentController.ActiveSheet.getCellDim oSheet as Object[n]oSheet = ThisComponent.CurrentController.ActiveSheet[n]oSheet.getCellRangeByName($1)ByName(ByName(("T8:W9")).clearContents(com.sun.star.sheet.CellFlags.VALUE + com.sun.star.sheet.CellFlags.STRING + com.sun.star.sheet.CellFlags.DATETIME)(com.sun.star.sheet.CellFlags).Value + com.sun.star.sheet.CellFlags.STRING + com.sun.star.sheet.CellFlags.DATETIME + com.sun.star.sheet.CellFlags.ANNOTATION + com.sun.star.sheet.CellFlags.FORMULA + com.sun.star.sheet.CellFlags.HARDATTR + com.sun.star.sheet.CellFlags.STYLES + com.sun.star.sheet.CellFlags.OBJECTS + com.sun.star.sheet.CellFlags.EDITATTR)Contents
getCellThisComponent.CurrentController.ThisComponent.CurrentController.ActiveSheet.getCellDim oSheet as Object[n]oSheet = ThisComponent.CurrentController.ActiveSheet[n]oSheet.getCellRangeByName($1)ByName(ByName(("T10:W10")).clearContents(com.sun.star.sheet.CellFlags.VALUE + com.sun.star.sheet.CellFlags.STRING + com.sun.star.sheet.CellFlags.DATETIME)(com.sun.star.sheet.CellFlags).Value + com.sun.star.sheet.CellFlags.STRING + com.sun.star.sheet.CellFlags.DATETIME + com.sun.star.sheet.CellFlags.ANNOTATION + com.sun.star.sheet.CellFlags.FORMULA + com.sun.star.sheet.CellFlags.HARDATTR + com.sun.star.sheet.CellFlags.STYLES + com.sun.star.sheet.CellFlags.OBJECTS + com.sun.star.sheet.CellFlags.EDITATTR)Contents
getCellThisComponent.CurrentController.ThisComponent.CurrentController.ActiveSheet.getCellDim oSheet as Object[n]oSheet = ThisComponent.CurrentController.ActiveSheet[n]oSheet.getCellRangeByName($1)ByName(ByName(("U11")).clearContents(com.sun.star.sheet.CellFlags.VALUE + com.sun.star.sheet.CellFlags.STRING + com.sun.star.sheet.CellFlags.DATETIME)(com.sun.star.sheet.CellFlags).Value + com.sun.star.sheet.CellFlags.STRING + com.sun.star.sheet.CellFlags.DATETIME + com.sun.star.sheet.CellFlags.ANNOTATION + com.sun.star.sheet.CellFlags.FORMULA + com.sun.star.sheet.CellFlags.HARDATTR + com.sun.star.sheet.CellFlags.STYLES + com.sun.star.sheet.CellFlags.OBJECTS + com.sun.star.sheet.CellFlags.EDITATTR)Contents
getCellThisComponent.CurrentController.ThisComponent.CurrentController.ActiveSheet.getCellDim oSheet as Object[n]oSheet = ThisComponent.CurrentController.ActiveSheet[n]oSheet.getCellRangeByName($1)ByName(ByName(("W11")).clearContents(com.sun.star.sheet.CellFlags.VALUE + com.sun.star.sheet.CellFlags.STRING + com.sun.star.sheet.CellFlags.DATETIME)(com.sun.star.sheet.CellFlags).Value + com.sun.star.sheet.CellFlags.STRING + com.sun.star.sheet.CellFlags.DATETIME + com.sun.star.sheet.CellFlags.ANNOTATION + com.sun.star.sheet.CellFlags.FORMULA + com.sun.star.sheet.CellFlags.HARDATTR + com.sun.star.sheet.CellFlags.STYLES + com.sun.star.sheet.CellFlags.OBJECTS + com.sun.star.sheet.CellFlags.EDITATTR)Contents
getCellThisComponent.CurrentController.ThisComponent.CurrentController.ActiveSheet.getCellDim oSheet as Object[n]oSheet = ThisComponent.CurrentController.ActiveSheet[n]oSheet.getCellRangeByName($1)ByName(ByName(("B12:W27")).clearContents(com.sun.star.sheet.CellFlags.VALUE + com.sun.star.sheet.CellFlags.STRING + com.sun.star.sheet.CellFlags.DATETIME)(com.sun.star.sheet.CellFlags).Value + com.sun.star.sheet.CellFlags.STRING + com.sun.star.sheet.CellFlags.DATETIME + com.sun.star.sheet.CellFlags.ANNOTATION + com.sun.star.sheet.CellFlags.FORMULA + com.sun.star.sheet.CellFlags.HARDATTR + com.sun.star.sheet.CellFlags.STYLES + com.sun.star.sheet.CellFlags.OBJECTS + com.sun.star.sheet.CellFlags.EDITATTR)Contents
Rem Bildschirmmeldungen einschalten
Application.DisplayAlerts = True
ThisComponent.UnlockControllers
End Sub
Auf folgender Seite gab es ein wenig Hilfe.
https://www.openoffice.org/de/doc/oooau ... makros.pdf
Wer kann mir sagen was ich tun muss das der Code in Calc läuft?
Ich sage schon mal vielen Dank.
Grüße MagnaUser