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+unsubscr...@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