Versionsabhängiges Einfrieren von LibreOffice nach Makrodurchlauf

Bezug: https://listarchives.libreoffice.org/de/users/msg21444.html

Hallo Oliver,

ich habe mal bissel was zusammengestellt. Die Makros habe ich so klein wie nur möglich gehalten (SourceCodes siehe ganz unten):

[1] FolderPicker (Dateiauswahl via OperatingSystem)

[1.1] Sub TEST_FolderPicker (Makro)
[1.2] TEST_FolderPicker.cmd (externer Makro-Aufruf via WinBatch)
[1.3] TEST_FolderPicker.pl (externer Makro-Aufruf via Perl)

[2] FolderPickerOffice (Dateiauswahl via LibreOffice)

[2.1] Sub TEST_FolderPickerOffice (Makro)
[2.2] TEST_FolderPicker.cmd (externer Makro-Aufruf via WinBatch)
[2.3] TEST_FolderPicker.pl (externer Makro-Aufruf via Perl)

[A] Wenn man [1.1] und [2.1] in der BASIC-IDE (in einem geöffneten CALC-Dokument) startet, funktionieren beide Makros fehlerfrei.

[B] Wenn man [1.1] extern startet via [1.2] oder [1.3], bleibt das Makro vor dem ERSTEN MsgBox-Aufruf hängen. Öffnet man während des Hängenbleibens ein neues CALC-Dokument, wird das Makro weiter ausgeführt.

[C] Wenn man [2.1] extern startet via [2.2] oder [2.3], wird das Makro fehlerfrei ausgeführt.

[D] Seit wann dieses Problem genau auftritt kann ich leider nicht sagen, aber mit "LO 6.2.2.2 (x64) @ Windows 7 Home Premium 64-bit" tritt es sicher auf.

[E] Du kannst die SourceCodes für Deinen BugReport benutzen. Wenn ich es in Englisch erklärte, wäre es wohl mehr verwirrend als erklärend ...

[F] Es könnte schon sein, dass diese FolderPicker-Problematik auch ein Hinweis auf die FilePicker-Problematik dieses Threads sein könnte, zumindest aber, dass die Picker-Software nicht mehr sauber funktioniert, an was auch immer es liegen mag.

Gruß
Hans-Werner

SourceCodes:

[1.1] Sub TEST_FolderPicker (Makro)

Sub TEST_FolderPicker
Const FolderPicker = "com.sun.star.ui.dialogs.FolderPicker"
Dim DialogFolderPicker as Object
Dim FolderPickerService as String
Dim SelectedFolder as String
Dim PropertyValue(0) as New com.sun.star.beans.PropertyValue
DialogFolderPicker = CreateUnoService(FolderPicker)
DialogFolderPicker.execute()
SelectedFolder = DialogFolderPicker.getDirectory()
MsgBox("SelectedFolder = " & SelectedFolder)
PropertyValue(0).name = "Hidden"
PropertyValue(0).value = False
StarDesktop.loadComponentFromURL("private:factory/scalc","_blank",0,PropertyValue())
MsgBox ("new CALC opened")
End Sub

[1.2] TEST_FolderPicker.cmd (externer Makro-Aufruf via WinBatch)

SET L="C:/Program Files/LibreOffice/program/soffice.exe"
SET M="macro:///Standard.Test.TEST_FolderPicker()"
%L% --nologo %M%

[1.3] TEST_FolderPicker.pl (externer Makro-Aufruf via Perl)

$L = "C:/Program Files/LibreOffice/program/soffice.exe";
$M = "macro:///Standard.Test.TEST_FolderPicker()";
`"$L" --nologo "$M"`;

[2.1] Sub TEST_FolderPickerOffice (Makro)

Sub TEST_FolderPickerOffice
Const FolderPicker = "com.sun.star.ui.dialogs.OfficeFolderPicker"
Dim DialogFolderPicker as Object
Dim FolderPickerService as String
Dim SelectedFolder as String
Dim PropertyValue(0) as New com.sun.star.beans.PropertyValue
DialogFolderPicker = CreateUnoService(FolderPicker)
DialogFolderPicker.execute()
SelectedFolder = DialogFolderPicker.getDirectory()
MsgBox("SelectedFolder = " & SelectedFolder)
PropertyValue(0).name = "Hidden"
PropertyValue(0).value = False
StarDesktop.loadComponentFromURL("private:factory/scalc","_blank",0,PropertyValue())
MsgBox ("new CALC opened")
End Sub

[2.2] TEST_FolderPicker.cmd (externer Makro-Aufruf via WinBatch)

SET L="C:/Program Files/LibreOffice/program/soffice.exe"
SET M="macro:///Standard.Test.TEST_FolderPickerOffice()"
%L% --nologo %M%

[2.3] TEST_FolderPicker.pl (externer Makro-Aufruf via Perl)

$L = "C:/Program Files/LibreOffice/program/soffice.exe";
$M = "macro:///Standard.Test.TEST_FolderPickerOffice()";
`"$L" --nologo "$M"`;

Hallo Hans-Werner,

ich hab's grad mit LO 6.1.5.2 versucht:

> [B] Wenn man [1.1] extern startet via [1.2] ,
> bleibt das Makro vor dem ERSTEN MsgBox-Aufruf hängen.
> Öffnet man während des Hängenbleibens ein neues CALC-Dokument,
> wird das Makro weiter ausgeführt.

Ich kann das so nicht bestätigen, das Makro läuft bei mir durch.

Gruß
Oliver

Hallo Oliver,

nur zu Sicherheit:

Du hast das Makro extern gestartet mit einer Aufruf-Variante der Art

via Windows-Batch

SET L="C:/Program Files/LibreOffice/program/soffice.exe"
SET M="macro:///Standard.Test.TEST_FolderPicker()"
%L% --nologo %M%

oder

via Perl

$L = "C:/Program Files/LibreOffice/program/soffice.exe";
$M = "macro:///Standard.Test.TEST_FolderPicker()";
`"$L" --nologo "$M"`;

oder

einem entsprechenden Aufruf in einer Linux-Umgebung ?

Wie ich in meiner Mail erwähnte:

[D] Seit wann dieses Problem genau auftritt kann ich leider nicht sagen, aber mit "LO 6.2.2.2 (x64) @ Windows 7 Home Premium 64-bit" tritt es sicher auf.

Ich habe [D] jetzt nochmals getestet und [B] trifft weiterhin zu.

Es kann schon sein, dass der Fehler mit 6.1. noch nicht auftrat, ich weiß es aber nicht mehr(mit Sicherheit). Aber ich werde mal 6.1.5.2 parallel installieren und testen, es wird nur bis morgen dauern, aber ich melde mich diesbezüglich auf jeden Fall wieder.

Viele Grüße
Hans-Werner

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