[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [de-users] Versionsabhängiges Einfrieren von LibreOffice nach Makrodurchlauf


Hallo,

> ANMERKUNG:
> Ich selbst habe bei einem MAKRO im Kontext mit dem Öffnen einer CALC-Datei das Problem, wenn ich
> den "Folder Picker Betriebs System" auswähle, dass das MAKRO einfriert, nicht aber, wenn ich den
> "Folder Picker Open Office" auswähle. Nicht aber bei früheren LO-Versionen. Vielleicht besteht ja
> ein Zusammenhang zu obigem Problem, dass die BASIC-MAKRO-Picker nicht mehr 100%ig funktionieren, ist
> aber nur eine vage Vermutung:
> ' Folder Picker Betriebs System:
> Const FPBS = "com.sun.star.ui.dialogs.FolderPicker"
> ' Folder Picker Open Office:
> Const FPOO = "com.sun.star.ui.dialogs.OfficeFolderPicker"

Das Problem habe ich auch, es tritt seit Version 6.1 auf, vgl.:
Bug 123502 - crash: use of "com.sun.star.ui.dialogs.FolderPicker" service from java seems to cause
crashes since LO 6.1
https://bugs.documentfoundation.org/show_bug.cgi?id=123502

Irgendetwas stimmt mit dem System-Folder Picker nicht mehr..

Wenn Du ein ein einfaches Basic Makro Demo hast, füge es bitte dem issue bei.

Gruß
Oliver


Am 31.03.2019 um 12:15 schrieb OoOHWHOoO:
Hallo,

ich habe diesbezüglich auch mal ein wenig getestet:

[1] Mit "Hidden" und "False" friert LO bei "MsgBox ("FileOperation: NACH
StarDesktop.loadComponentFromURL")" ein (s.u.).
[2] Mit "Hidden" und "True" friert LO bei "MsgBox ("NACH FileOperation")" ein (s.u.).

In beiden Fällen hat "soffice.bin" eine CPU-Auslastung von zirka 25%.

Bei diesen Zeilen ( >>>>> ) habe ich das Makro modifiziert (s.u.).

Testumgebung:  LO 6.2.2.2 (x64) @ Windows 7 Home Premium 64-bit.

Eine Erklärung für das oben geschilderte Verhalten habe ich leider nicht.

ANMERKUNG:

Ich selbst habe bei einem MAKRO im Kontext mit dem Öffnen einer CALC-Datei das Problem, wenn ich
den  "Folder Picker Betriebs System" auswähle, dass das MAKRO einfriert, nicht aber, wenn ich den
"Folder Picker Open Office" auswähle. Nicht aber bei früheren LO-Versionen. Vielleicht besteht ja
ein Zusammenhang zu obigem Problem, dass die BASIC-MAKRO-Picker nicht mehr 100%ig funktionieren, ist
aber nur eine vage Vermutung:

' Folder Picker Betriebs System:
Const FPBS = "com.sun.star.ui.dialogs.FolderPicker"
' Folder Picker Open Office:
Const FPOO = "com.sun.star.ui.dialogs.OfficeFolderPicker"


Grüße
Hans-Werner :-))


[3] Makro-Modifikationen

Option Explicit

>>>>>   Private oDlgM as Object         ' das Modell des Dialogs
>>>>>   Private oDlg as Object         ' Dialogfenster
>>>>>   Private oMod as Object         ' nimmt jeweils das Modell der Objekte auf    (Textfeld)
>>>>>   Private oMod1 as Object         ' nimmt jeweils das Modell der Objekte auf    (Button)
>>>>>   Private oMod2 as Object         ' nimmt jeweils das Modell der Objekte auf    (Button)
>>>>>   Private oMod3 as Object         ' nimmt jeweils das Modell der Objekte auf    (Button)
>>>>>   Private oWin as Object

>>>>>   Private oListener1 as Object
>>>>>   Private oListener2 as Object
>>>>>   Private oListener3 as Object
>>>>>   Private oControl1 as Object
>>>>>   Private oControl2 as Object
>>>>>   Private oControl3 as Object

REM Deklaration der Variablen

>>>>>   Private oDocW as Object            ' Writer-Dokument
>>>>>   Private oDocC as Object            ' Calc-Dokument (wird versteckt geöffnet)

:
:

Sub Dateidialog
On Error GoTo ErrorHandler

        MsgBox "Der nachfolgende Dateidialog fordert sie zum Öffnen dieser Datei auf:" & chr(10) & _
                    ">>> Kopfzeilen_Texte.ods <<<" & chr(10) & _
                    "Wählen Sie zunächst den korrekten Pfad zu dieser Datei aus." ,64,"Hinweis"
    ' Filepicker (Datei-Dialog)
    sUrl = FileOpenDialog ("Bitte wählen Sie eine Calc-Datei aus!")
            if sURL = "" then
                Msgbox "Sie haben den Dateidialog abgebrochen!" & chr(10) & _
                    "Starten Sie das Programm erneut und wählen eine Calc-Datei aus!", 48, "Fehler:
Anwender hat Dateiauswahl abgebrochen!"

                    exit sub
            end if
        sExt=getFileNameExtension(sURL)
            ' Fehlermeldung für den Fall, dass kein Calc-Dokument ausgewählt wurde
            if sExt <> "ods" then
                MsgBox("Bitte wählen Sie ein Calc-Dokument aus!" & chr(10) & _
                            "Das Programm wird beendet!"  & chr(10)   & chr(10) & _
                                "Starten Sie das Programm erneut.", 48, "Fehler: Dateiauswahl")

                    exit sub
            end if
REM Calc-Datei im Hintergrund öffnen

>>>>>   MsgBox ("VOR FileOperation")

FileOperation

>>>>>   MsgBox ("NACH FileOperation")

' MsgBox "Error " & Err & ": " & Error$ & " (line : " & Erl & ")"
'oCC.getFrame().getContainerWindow().setVisible(True)

Exit Sub

REM ErrorHandler für den Fall, dass im Dateidialog auf "ABRUCH" geklickt wurde
ErrorHandler:
'MsgBox "Error " & Err & ": " & Error$ & " (line : " & Erl & ")"
Msgbox "Sie haben den Dateidialog abgebrochen!" & chr(10) & _
            "Starten Sie das Programm erneut und wählen eine Calc-Datei aus!", 48, "Fehler:
Anwender hat Dateiauswahl abgebrochen!"
End Sub

REM
════════════════════════════════════════════════════════════════════════════════════════════════════════

REM Calc-Datei im Hintergrund öffnen
REM Dateioperation: Datei öffnen und auslesen
Sub FileOperation
'oCC.getFrame().getContainerWindow().setVisible(False)
    ' Eigenschaften
>>>>>   Dim myFileProperties(0) As New com.sun.star.beans.PropertyValue

    ' Dokument im Hintergrund öffnen
>>>>>    myFileProperties(0).Name = "Hidden"
>>>>>    myFileProperties(0).Value = False

REM
-------------------------------------------------------------------------------------------------------
        ' Datei im Hintergrund öffnen

>>>>>   MsgBox ("FileOperation: VOR StarDesktop.loadComponentFromURL")

>>>>>   sURL = ConvertToURL(sURL)

>>>>>   oDocC = StarDesktop.loadComponentFromURL(sURL, "_blank", 0, myFileProperties())

>>>>>   MsgBox ("FileOperation: NACH StarDesktop.loadComponentFromURL")

'mri oDocC
            ' Daten aus Tabelle einlesen und in die Arrays verteilen
            ' mArray1() = Daten für die linke Seite (gerade Seitenzahl)
mArray1()=oDocC.Sheets().getByName("KopfZeilenTexte").getCellRangeByName("A1:B10").getDataArray()

            ' mArray2() = Daten für die rechte Seite (ugerade Seitenzahl)
mArray2()=oDocC.Sheets().getByName("KopfZeilenTexte").getCellRangeByName("A11:B20").getDataArray()

REM
-------------------------------------------------------------------------------------------------------
    ' Calc-Datei korrekt schließen
    CALL CloseDocC
End Sub


--
Liste abmelden mit E-Mail an: users+unsubscribe@de.libreoffice.org
Probleme? https://de.libreoffice.org/hilfe-kontakt/mailing-listen/abmeldung-liste/
Tipps zu Listenmails: https://wiki.documentfoundation.org/Netiquette/de
Listenarchiv: https://listarchives.libreoffice.org/de/users/
Datenschutzerklärung: https://www.documentfoundation.org/privacy

Privacy Policy | Impressum (Legal Info) | Copyright information: Unless otherwise specified, all text and images on this website are licensed under the Creative Commons Attribution-Share Alike 3.0 License. This does not include the source code of LibreOffice, which is licensed under the Mozilla Public License (MPLv2). "LibreOffice" and "The Document Foundation" are registered trademarks of their corresponding registered owners or are in actual use as trademarks in one or more countries. Their respective logos and icons are also subject to international copyright laws. Use thereof is explained in our trademark policy.