[gelöst] nach Update auf Version 7.3.1 Makro extrem langsam!

Programmierung unter AOO/LO (StarBasic, Python, Java, ...)

Moderator: Moderatoren

little fingers
***
Beiträge: 74
Registriert: Fr, 12.05.2017 15:31

[gelöst] nach Update auf Version 7.3.1 Makro extrem langsam!

Beitrag von little fingers »

Hallo!
Ich habe die Libreofficeversion auf 7.3.1 upgedatet und musste feststellen, dass mein Makro, was die ganze Zeit einwandfrei lief auf einmal
grotten langsam lief.
Nachdem ich unter Daten-->Berechnung-->autamisch abgeschaltet hatte, ging es dann von der Geschwindigkeit wieder!
Nur leider funktionierten dann die bedingten Formatierungen nicht mehr.
Erst als ich wieder auf die Version 7.2.5 down gegradet hatte, lief alles wie gewohnt!
Kann hier ein Fehler in der Programmierung der Version 7.3.1 vorliegen?

Gruß Ingo
Zuletzt geändert von little fingers am Mi, 16.03.2022 14:12, insgesamt 1-mal geändert.
mikeleb
*******
Beiträge: 1315
Registriert: Fr, 09.12.2011 16:50

Re: nach Update auf Version 7.3.1 Makro extrem langsam!

Beitrag von mikeleb »

Hallo,
ja klar, kann es sein.
Ohne Infos zum Makro wird es schwierig etwas sinnvolles zu sagen. Wenn es mit der automatischen Berechnung etwas zu tun hat, dann müsste es sich beim Makro um eine benutzerdefinierte Funktion handeln. Kannst du uns das Makro mal posten?
Gruß,
mikeleb
little fingers
***
Beiträge: 74
Registriert: Fr, 12.05.2017 15:31

Re: nach Update auf Version 7.3.1 Makro extrem langsam!

Beitrag von little fingers »

Na Klar!

Ist ein bisschen länger, weil mehrere Makros hintereinander ausgeführt!
Aber schon beim Textimport bemerkt man schon eine heftige Verzögerung!
Gruß Ingo

Code: Alles auswählen

REM  *****  BASIC  *****

Sub AlleMakros
all_Loeschen()
import()
ROT()
ROT2()
SpaltenOptimiern()
KundenUebertrag()
GewichtsUebertrag()
UmsatzUebertrag()
ddloeschen()
FarbAenderung()
end Sub

Sub CSVImport
all_Loeschen()
import()
ROT()
ROT2()
SpaltenOptimiern()
FarbAenderung()
end Sub

sub all_Loeschen
  oCalc = thisComponent
     oSheet = oCalc.sheets(0)
     oCellRange = osheet.getCellRangeByName("A1:Q200")
	' ocellRange.clearContents(5)
end Sub

sub import
 Wait 3000 '1000 Millisekunden warten
	odoc=thiscomponent
	REM odoc.Sheets.insertNewByName("neue Tabelle",odoc.Sheets.count)
	otab=odoc.sheets.getByName("LStatistik")
	sUrl=converttourl("V:\TXT\L-Statistik-Touren.csv")
	otab.link(sUrl,"","Text - txt - csv (StarCalc)","59,34,0,1",com.sun.star.sheet.SheetLinkMode.NORMAL)
	oTab.linkmode=com.sun.star.sheet.SheetLinkMode.NONE
End Sub

Sub KundenUebertrag()
 Wait 1000 '1000 Millisekunden warten
 	With ThisComponent.Sheets.getByName("Uebertrag")
		ThisComponent.Sheets.getByName("LStatistik").getCellrangeByName("F2:F200").setDataArray(.getCellrangeByName("H2:H200").getDataArray)
	End With
	End Sub
	
	Sub GewichtsUebertrag()
 Wait 1000 '1000 Millisekunden warten
 	With ThisComponent.Sheets.getByName("Uebertrag")
		ThisComponent.Sheets.getByName("LStatistik").getCellrangeByName("N2:N200").setDataArray(.getCellrangeByName("B2:B200").getDataArray)
	End With
	End Sub
	
	Sub UmsatzUebertrag()
	Wait 1000 '1000 Millisekunden warten
 	With ThisComponent.Sheets.getByName("Uebertrag")
		ThisComponent.Sheets.getByName("LStatistik").getCellrangeByName("O2:O200").setDataArray(.getCellrangeByName("E2:E200").getDataArray)
	End With
		End Sub
		
	Sub ddloeschen
	Wait 1000 '1000 Millisekunden warten
	ozeile=ThisComponent.CurrentController.ActiveSheet.Columns(5) 'F
	oleer=ozeile.queryemptycells
	oletzter=oleer(oleer.count-1)
	erg = oletzter.rangeaddress.startrow-1
	
	With ThisComponent.CurrentController.ActiveSheet
		For i = 0 To erg
			k = .getCellByPosition(5, i).String
			For j = i+1 To erg
				If .getCellByPosition(5, j).String = k Then
					For jj = 0 To 5
						.getCellByPosition(jj, j).String = ""
					Next jj
				End If
			Next j
		Next i
			
msgbox ("doppelte Einträge wurden gelöscht")
	End With
End Sub
sub ROT
  
    Tabelle = ThisComponent.Sheets(0)
    CellRange = Tabelle.getCellRangeByName("C1:Q200")
    CellRange.CharFontName="Tahoma"
    CellRange.CharHeight="11"
    CellRange.CellBackColor=RGB(251,131, 90)
    ' CellRange.CharWeight=com.sun.star.awt.FontWeight.BOLD
    'Überschriften positionieren
    'horijustify=1 <- links
    'horijustify=2 <- mitte
    'horijustify=3 <- rechts
    'horijustify=4 <- nicht nur umbrochen -->Blocksatz
    CellRange.horijustify = com.sun.star.table.CellHoriJustify.CENTER'Mittig
    CellRange.IsTextWrapped = false'Umbruch
    ' CellRange.IsTextWrapped = true'Umbruch

End Sub
sub ROT2
  
    Tabelle = ThisComponent.Sheets(0)
    CellRange = Tabelle.getCellRangeByName("A1:A200")
    CellRange.CharFontName="Tahoma"
    CellRange.CharHeight="11"
    CellRange.CellBackColor=RGB(251,131, 90)
    ' CellRange.CharWeight=com.sun.star.awt.FontWeight.BOLD
    'Überschriften positionieren
    'horijustify=1 <- links
    'horijustify=2 <- mitte
    'horijustify=3 <- rechts
    'horijustify=4 <- nicht nur umbrochen -->Blocksatz
    CellRange.horijustify = com.sun.star.table.CellHoriJustify.CENTER'Mittig
    CellRange.IsTextWrapped = false'Umbruch
    ' CellRange.IsTextWrapped = true'Umbruch

End Sub
Sub SpaltenOptimiern
	oDoc = thisComponent
	oSheet = oDoc.sheets(0)
	oSp = oSheet.getColumns()
	oSp.optimalWidth = true
End Sub

Sub FarbAenderung()
oDoc = thisComponent      'das Dokument 
oSheet = oDoc.sheets(0)   'erstes Tabellenblatt 
For ze = 0 to 200          'Zeilenzähler
   For sp = 1 to 1          'Spaltenzähler
    oCell = oSheet.getCellByPosition(sp,ze) 
    Select Case oCell.String
      Case ""
        oCell.CellBackColor = -1
        ' 1er Touren
      Case "110"
        oCell.CellBackColor = RGB(180,199, 220)
      Case "120"
        oCell.CellBackColor = RGB(0,102, 204)
      Case "131"
        oCell.CellBackColor = RGB(250,255, 102)
      Case "140"
        oCell.CellBackColor = RGB(0,174, 0)
      Case "125"
        oCell.CellBackColor = RGB(255,153, 102)
      Case "135"
        oCell.CellBackColor = RGB(255,51, 51)
        Case "155"
        oCell.CellBackColor = RGB(15,252, 204)
      Case "175"
        oCell.CellBackColor = RGB(167,132, 244)
      Case "185"
        oCell.CellBackColor = RGB(250,215, 122)
      Case "195"
        oCell.CellBackColor = RGB(0,134, 7)
        
       ' 2er Touren
      Case "220"
        oCell.CellBackColor = RGB(180,199, 220)
      Case "240"
        oCell.CellBackColor = RGB(0,102, 204)
      Case "290"
        oCell.CellBackColor = RGB(250,255, 102)
      Case "205"
        oCell.CellBackColor = RGB(0,174, 0)
      Case "295"
       oCell.CellBackColor = RGB(255,153, 102)
       
         ' 3er Touren
      Case "320"
        oCell.CellBackColor = RGB(180,199, 220)
      Case "341"
        oCell.CellBackColor = RGB(0,102, 204)
      Case "340"
        oCell.CellBackColor = RGB(250,255, 102)
      Case "331"
        oCell.CellBackColor = RGB(0,174, 0)
      Case "315"
        oCell.CellBackColor = RGB(255,153, 102)
      Case "335"
        oCell.CellBackColor = RGB(255,51, 51)
        Case "355"
        oCell.CellBackColor = RGB(15,252, 204)
      Case "375"
        oCell.CellBackColor = RGB(167,132, 244)
      Case "385"
        oCell.CellBackColor = RGB(250,215, 122)
      Case "395"
        oCell.CellBackColor = RGB(0,134, 7)
        
                ' 4er Touren
      Case "440"
        oCell.CellBackColor = RGB(180,199, 220)
      Case "420"
        oCell.CellBackColor = RGB(0,102, 204)
      Case "470"
        oCell.CellBackColor = RGB(250,255, 102)
      Case "405"
        oCell.CellBackColor = RGB(0,174, 0)
      Case "415"
        oCell.CellBackColor = RGB(255,153, 102)
        
             ' 5er Touren
      Case "510"
        oCell.CellBackColor = RGB(180,199, 220)
      Case "520"
        oCell.CellBackColor = RGB(0,102, 204)
      Case "541"
        oCell.CellBackColor = RGB(250,255, 102)
      Case "540"
        oCell.CellBackColor = RGB(0,174, 0)
      Case "525"
        oCell.CellBackColor = RGB(255,153, 102)
      Case "535"
        oCell.CellBackColor = RGB(255,51, 51)
        Case "555"
        oCell.CellBackColor = RGB(15,252, 204)
      Case "575"
        oCell.CellBackColor = RGB(167,132, 244)
      Case "585"
        oCell.CellBackColor = RGB(250,215, 122)
      Case "595"
        oCell.CellBackColor = RGB(0,134, 7)
        
                ' 6er Touren
      Case "695"
        oCell.CellBackColor = RGB(180,199, 220)
      Case "690"
        oCell.CellBackColor = RGB(0,102, 204)
    End Select
  next 
next 
End Sub
Toxitom
********
Beiträge: 3768
Registriert: Di, 12.08.2003 18:07
Wohnort: Wiesbaden
Kontaktdaten:

Re: nach Update auf Version 7.3.1 Makro extrem langsam!

Beitrag von Toxitom »

hey Little Fingers,

was ist eigentlich für Dich eine "heftige Verzögerung"? Bei den vielen wait-Anweisungen im Makro (zwischen 1000 und 3000 - also 1 bzw. 3 sek) hast Du immer eine spürbare Verzögerung. Also, ich zähle alleine bei einmaligen Durchlauf rund 7 Sek nur durch die Wait-Anweisungen??

Brauchst Du wirklich eine soooo lange Wartezeit? In der Regel reichen doch auch Wait(100) oder so - falls die Verzögerung tatsächlich benötigt wird.

Ansonsten kann ich wenig kritisches in den Makros feststellen.

Ich würde empfehlen: Teste die Einzelmakros und identifiziere den "Bremser". Du hast passende Datendateien (aber arbeite mit Kopien - zerstöre Dir nicht eventuell die Orginaldatei;))

VG
Tom
Unterstützer LibreOffice, zertifizierter Trainer und Berater
Bücher: LibreOffice 6- Einstieg und Umstieg
Makros Grundlagen - LibreOffice / OpenOffice Basic
little fingers
***
Beiträge: 74
Registriert: Fr, 12.05.2017 15:31

Re: nach Update auf Version 7.3.1 Makro extrem langsam!

Beitrag von little fingers »

Jupp...Danke, mache ich!
in der 7.3.1 braucht es nicht Sekunden, die mir auch nix ausmachen, sondern Minuten!
Daher meine Anfrage!

Gruß Ingo
little fingers
***
Beiträge: 74
Registriert: Fr, 12.05.2017 15:31

Re: nach Update auf Version 7.3.1 Makro extrem langsam!

Beitrag von little fingers »

Vielen Dank für die Hilfe!

Die Makros liefen wohl deswegen so langsam, weil die Installation wohl fehlerhaft war.
Nachdem ich wieder deinstalliert und danach wieder installiert habe, lief alles, wie gewohnt!

Gruß Ingo
Antworten