schon wieder habe ich ein kleines problem. ein von mir entworfener dialog hat eine schaltfläche zum öffnen einer datei mit der bindung an das entsprechende makro.
das problem ist, dass entweder der dialog stehen bleibt und kein import stattfindet oder bei oDlg.dispose() der ladevorgang gestartet wird, das makro aber dann mit haut und haaren abschmiert (also mit openoffice).
wird das makro alleine über extras>>makros>>makro ausführen gestartet klappt alles.
der mit der schaltfläche verknüpfte code lautet wie folgt:
Code: Alles auswählen
Sub SuErImpDBF
freue mich auf eine antwort
beste grüße
klaus
call [mdlImport].ImpDbfInAktivesDokument
' oDlg.dispose()
End sub
Code: Alles auswählen
Sub ImpDbfInAktivesDokument
Dim vDateiDialog
Dim vDateiZugang
dim i as integer
dim sPfad as string 'Startverezichnis der Dialoge
Dim sDatei as String 'nimmt den Pfad und den Dateinamen auf
Dim sFrame as String
vDateiDialog = CreateUnoService("com.sun.star.ui.dialogs.FilePicker")'Datei Öffnen-Dialog wird erstellt
vDateiZugang = CreateUnoService("com.sun.star.ucb.SimpleFileAccess")'Dateizugang wird erstellt
' sFrame = "lbp_"
'hier wird der Standardpfad festgelegt und in die URL-Schreibweise umgewandelt
sPfad = ConvertToUrl("x:\446\GIS\pfa21\gauss\lbp_mass")
'prüft ob der angegebene Pfad vorhanden ist.
if vDateiZugang.Exists(sPfad) Then
vDateiDialog.SetDisplayDirectory(sPfad)
else
msgbox ("Der gewählte Pfadname existiert nicht!" + Chr(13)+"Die Routine wird beendet.",0+64,"dBase-Import Fehler")
exit sub
End if
'Titel des Öffnen-Dialogs wird festgelegt
vDateiDialog.setTitle("B+P :::dBase-Import:::")
'Öffnen Dialog wird auf dBase gestellt
vDateiDialog.appendfilter("dBase","*.dbf")
'der Variablen i wird der Dateidialog zugewiesen und die if-Abfrage vorbereitet
i = vDateiDialog.Execute()
'der Variablen sDatei wird der kpl. Dateipfad übergeben
If i = 1 then
sDatei = vDateiDialog.Files(0)
end if
vDateiDialog.dispose()
'Hier findet der eigentliche Import statt
'arg (1)=Array mit 2 Argumenten definieren für den Filter und die Filteroptionen
Dim oFrame as Object
Dim arg(1) as new com.sun.star.beans.PropertyValue
arg(0).name = "FilterName"
arg(0).value = "dBase"
arg(1).name = "FilterOptions"
arg(1).value = "0" 'System Character Set Umlaute werden richtig wiedergegeben
oFrame = StarDesktop.CurrentComponent.CurrentController.Frame
'if-Abfrage prüft, ob ein Dateiname übergeben worden ist.
if vDateiZugang.Exists(sDatei) Then
oFrame.loadComponentFromURL(sDatei, "_self", 0, arg())
else
msgbox ("Es wurde keine dbf-Datei ausgewählt!"+ Chr(13)+"Die Routine wird beendet.",0+64,"dBase-Import Fehler")
exit sub
end if
End Sub