Versionsabhängiges Einfrieren von LibreOffice nach Makrodurchlauf

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

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

Hallo *,

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"

Ist nicht seit den Versionen LO 6.0 der interne Dialog ganz
verschwunden? Oder hat das nichts mit der GUI zu tun. Wählbar ist da
jedenfalls nicht mehr in der grafischen benutzeroberfläche. Es wird
immer der Dialog des Betriebssystems genommen.

Gruß

Robert

Hallo Robert,

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

Ist nicht seit den Versionen LO 6.0 der interne Dialog ganz
verschwunden? Oder hat das nichts mit der GUI zu tun. Wählbar ist da
jedenfalls nicht mehr in der grafischen benutzeroberfläche. Es wird
immer der Dialog des Betriebssystems genommen.

Du kannst ihn über die API direkt instanzieren, bzw. in in den Experteneinstellungen auch generell
freischalten:

Menü Extras/Optionen.../LibreOffice/Erweitert
-> [Experteneinstellungen]

Suche nach: UseSystemFileDialog

Gruß
Oliver

Hallo Robert,

ich habe es eben nochmals (schnell) getestet (LO 6.2.2.2 (x64) @ Windows 7 Home Premium 64-bit)

[1] com.sun.star.ui.dialogs.FolderPicker

MAKRO bleibt hängen vor/am folgenden MsgBox-Aufruf.

ABER: Wenn ich während dieses Hängenbleibens eine neue CALC-Datei öffne, läuft das MAKRO fehlerfrei weiter.

[2] com.sun.star.ui.dialogs.OfficeFolderPicker => MAKRO läuft fehlerfrei.

Gruß
Hans-Werner

------ Originalnachricht ------