Seite 1 von 1

Makros von MS Excel zu Libre Calc konvertieren

Verfasst: Mi 13. Mär 2019, 07:01
von vogelfrei1
Hallo Leute ich habe 2 Makros die in Libre Calc nicht richtig funktionieren.
Kann jemand von euch sie zum richtigen laufen bringen?
Mein Dank würde euch Tag und Nacht verfolgen ;-)

Sub Makro1()
'
' Makro1 Makro
'

'
Range("B8:B37").Select
ActiveWorkbook.Worksheets("Station 3A").Sort.SortFields.Clear
ActiveWorkbook.Worksheets("Station 3A").Sort.SortFields.Add Key:=Range( _
"B8:B37"), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:= _
xlSortNormal
With ActiveWorkbook.Worksheets("Station 3A").Sort
.SetRange Range("B8:AB37")
.Header = xlGuess
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With
ActiveWindow.ScrollRow = 15
ActiveWindow.ScrollRow = 14
ActiveWindow.ScrollRow = 13
ActiveWindow.ScrollRow = 12
ActiveWindow.ScrollRow = 11
ActiveWindow.ScrollRow = 10
ActiveWindow.ScrollRow = 9
ActiveWindow.ScrollRow = 8
ActiveWindow.ScrollRow = 7
ActiveWindow.ScrollRow = 6
ActiveWindow.ScrollRow = 5
ActiveWindow.ScrollRow = 4
ActiveWindow.ScrollRow = 3
ActiveWindow.ScrollRow = 2
ActiveWindow.ScrollRow = 1
End Sub

Dieses Makro sollte einen definierten Zellbereich über einen Button alphabetisch sortieren.






Option Explicit ' Variablendefinition erforderlich
Public DaEt As Date ' nächste Starzeit des Makros
Public Const DaZeit As Date = "00:03:00" ' Zeitabstand prüfen

Sub Zeitmakro()

' Zeit in Zelle um 1 Sekunde runtersetzen
ThisWorkbook.Worksheets("Timer").Range("A1") = _
ThisWorkbook.Worksheets("Timer").Range("A1") - CDate("00:00:01")
' Falls Restzeit > 0 dann Makro wiederholen,
' ansonsten Datei schließen mit speichern
If ThisWorkbook.Worksheets("Timer").Range("A1") <> 0 Then
DaEt = Now + TimeValue("00:00:01")
Application.OnTime DaEt, "Zeitmakro"
Else
' Datei schließen mit speichern, Fals nicht speichern
ThisWorkbook.Close True 'speichern
End If
End Sub


Dieses Makro soll einen Timer runterzählen und nach Ablauf der Zeit die Arbeitsmappe schließen und speichern.

Wer kann helfen?

Vielen Dank im Voraus

Lothar

Re: Makros von MS Excel zu Libre Calc konvertieren

Verfasst: So 17. Mär 2019, 00:45
von balu
Hallo Lothar,

konvertieren tu ich nicht.
Da ich nicht weiss welche LO Version Du hast, und ich nicht die 6.x.x.xer installieren kann, habe ich jetzt einfach mal ein Sortiermakro aus OO.o 3.2.1 genommen. Das müsste eigentlich auch in LO 6.x.x.x funzen.
Dieses Makro sollte einen definierten Zellbereich über einen Button alphabetisch sortieren.
So ein Makro hatte ich in meiner Grabbelkiste.

Code: Alles auswählen

Sub NamenSortieren
	Dim oDok as Object
	Dim oSheetStation3A as Object
'
	Dim SortProps(2) As new com.sun.star.beans.PropertyValue
	Dim SortFeld(0) As new com.sun.star.table.TableSortField
	Dim A As Variant
'
	oDok = thisComponent
	oSheetStation3A = oDok.sheets.getByName("Station_3A")
'	
		oBereich = oSheetStation3A.getCellRangeByName("B8:B37")
		SortFeld(0).Field = 0
		SortFeld(0).IsAscending = True
		SortFeld(0).FieldType = com.sun.star.util.SortFieldType.ALPHANUMERIC
		SortProps(0).Name = "SortFields"
		SortProps(0).Value = SortFeld()
		SortProps(1).Name = "SortColumns"
		SortProps(1).Value = True
		SortProps(2).Name = "ContainsHeader"
		SortProps(2).Value = FALSE
		oBereich.Sort(SortProps())

End Sub
Das ist alles was man für das "Alfabetische Sortieren eines Zellbereichs" braucht. Siehe auch die angehängte Beispieldatei.

Was das hier

Code: Alles auswählen

ActiveWindow.ScrollRow = 15
ActiveWindow.ScrollRow = 14
ActiveWindow.ScrollRow = 13
ActiveWindow.ScrollRow = 12
ActiveWindow.ScrollRow = 11
ActiveWindow.ScrollRow = 10
ActiveWindow.ScrollRow = 9
ActiveWindow.ScrollRow = 8
ActiveWindow.ScrollRow = 7
ActiveWindow.ScrollRow = 6
ActiveWindow.ScrollRow = 5
ActiveWindow.ScrollRow = 4
ActiveWindow.ScrollRow = 3
ActiveWindow.ScrollRow = 2
ActiveWindow.ScrollRow = 1
in Excel bewirkt weiss ich nicht.

Da nicht nur ich, sondern auch andere Helfer hier kein Excel haben und deshalb auch kein VBA können, war es ja schon mal von dir nicht verkehrt wenigstens eine grobe Beschreibung der Makro Funktionen abzugeben.

Jedoch sehe ich zumindest bei deinem "Zeitmakro" ein Problem.
Ist denn während des laufs dieses Makro überhaupt noch ein vernünftiges arbeiten mit Calc gegeben? Mit solchen Zeitmakros habe ich nämlich überhaupt keine Erfahrung. Vielleicht kann da jemand anderer diesbezüglich helfen.



Gruß
balu