BITTE helfen Sie uns HEUTE mit einer SPENDE
Helfen Sie das LibreOffice Forum zu erhalten!

❤️ DANKE >><< DANKE ❤️

> KEINE WERBUNG FÜR REGISTRIERTE BENUTZER!<
Ihre Spende wird für die Deckung der laufenden Kosten sowie den Erhalt und Ausbau 🌱 des LibreOffice Forums verwendet.
🤗 Als Dankeschön werden Sie im Forum als LO-SUPPORTER gekennzeichnet. 🤗

Makros von MS Excel zu Libre Calc konvertieren

Alles zur Programmierung im LibreOffice.
Antworten
vogelfrei1
Beiträge: 1
Registriert: Mi 13. Mär 2019, 06:59

Makros von MS Excel zu Libre Calc konvertieren

Beitrag von vogelfrei1 » Mi 13. Mär 2019, 07:01

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

balu
Beiträge: 370
Registriert: Mi 1. Jun 2011, 16:21

Re: Makros von MS Excel zu Libre Calc konvertieren

Beitrag von balu » So 17. Mär 2019, 00:45

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
Dateianhänge
Sortiermakro.ods
(16.17 KiB) 163-mal heruntergeladen

An alle, die das LibreOffice-Forum nutzen:


Bitte beteiligen Sie sich mit 7 Euro pro Monat und helfen uns bei unserem Budget für das Jahr 2024.
Einfach per Kreditkarte oder PayPal.
Als Dankeschön werden Sie im Forum als LO-SUPPORTER gekennzeichnet.

❤️ Vielen lieben Dank für Ihre Unterstützung ❤️

Antworten