Makro Fehlermeldung Warum ???

Programmierung unter AOO/LO (StarBasic, Python, Java, ...)

Moderator: Moderatoren

Hansi
***
Beiträge: 56
Registriert: Mo, 04.04.2011 09:50

Makro Fehlermeldung Warum ???

Beitrag von Hansi »

Hallo ,

ich habe untenstehendes Makro,welches schon sehr gut funktioniert,nur an der Stelle die mit "Fehler" markiert ist bringt der mir den Fehler " BASIC-Laufzeitfehler.Eigenschaft oder Methode nicht gefunden:CurrentController"

Wo liegt hier der Hund begraben ?????



Code: Alles auswählen

Sub OeffnenEinfuegen 
 dim dummy()
    odoc = thiscomponent
       myString= "Öffnen"      
       mystring1 = (mystring+"_"+Datumsortiert)    
       beep
       Dateiname = InputBox ("Geben Sie bitte den Dateinamen ein:",mystring,"")
       iF Dateiname = "" then EXit SUB     
          Speicherort = InputBox ("Geben Sie bitte ein Verzeichnis ein:", mystring, "file:///C:/Dokumente und Einstellungen/Rene/Eigene Dateien/Winddaten/")
       iF Speicherort = "" then EXit SUB
       myUrl = Speicherort + Dateiname +".ods"
       oUCB = createUnoService("com.sun.star.ucb.SimpleFileAccess")
       If oUCB.exists(myURL) then
          oDoc = StarDesktop.loadComponentFromURL(myURL,"_blank",0,array())
       ELSe
          MSgbox ("Die Datei """& convertFromURL(myURL) &""" existiert nicht !",16,"Fehler !!!")
          exit sub
       endif
ocalc=thiscomponent
mysheet=ocalc.sheets(0)     
mysheet.name="Daten1"

document   = ThisComponent.CurrentController.Frame                          <------------- FEHLER
dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")

rem ----------------------------------------------------------------------
dim args2(2) as new com.sun.star.beans.PropertyValue
args2(0).Name = "DocName"
args2(0).Value = "Berechnungsvorlage"
args2(1).Name = "Index"
args2(1).Value = 32767
args2(2).Name = "Copy"
args2(2).Value = true
dispatcher.executeDispatch(document, ".uno:Move", "", 0, args2())
odoc.close(true)

rem ----------------------------------------------------------------------
rem define variables
dim document1   as object
dim dispatcher1 as object
rem ----------------------------------------------------------------------
rem get access to the document
document1   = ThisComponent.CurrentController.Frame
dispatcher1 = createUnoService("com.sun.star.frame.DispatchHelper")

rem ----------------------------------------------------------------------

dim args1(0) as new com.sun.star.beans.PropertyValue
args1(0).Name = "Nr"
args1(0).Value = 18

dispatcher1.executeDispatch(document1, ".uno:JumpToTable", "", 0, args1())

rem ----------------------------------------------------------------------
dim args3(0) as new com.sun.star.beans.PropertyValue
args2(0).Name = "ToPoint"
args2(0).Value = "$a$1:$BJ$3537"

dispatcher1.executeDispatch(document1, ".uno:GoToCell", "", 0, args3())

rem ----------------------------------------------------------------------
dispatcher1.executeDispatch(document1, ".uno:Copy", "", 0, Array())

rem ----------------------------------------------------------------------
dim args4(0) as new com.sun.star.beans.PropertyValue
args4(0).Name = "Nr"
args4(0).Value = 2

dispatcher1.executeDispatch(document1, ".uno:JumpToTable", "", 0, args4())

rem ----------------------------------------------------------------------
dim args5(0) as new com.sun.star.beans.PropertyValue
args5(0).Name = "ToPoint"
args5(0).Value = "$a$1:$BJ$3537"

dispatcher1.executeDispatch(document1, ".uno:GoToCell", "", 0, args5())

rem ----------------------------------------------------------------------
dispatcher1.executeDispatch(document1, ".uno:Paste", "", 0, Array())


end sub
Benutzeravatar
komma4
********
Beiträge: 5332
Registriert: Mi, 03.05.2006 23:29
Wohnort: Chon Buri Thailand Asia
Kontaktdaten:

Re: Makro Fehlermeldung Warum ???

Beitrag von komma4 »

An der Stelle gibt es keinen erkennbaren Fehler...: hast Du nicht sichtbare Steuerzeichen in der Zeile?


Für die Dateiauswahl stelle ich Dir hier mal ein Code-Schnipsel aus meiner Mottenkiste vor, welches die Prüfung (vorhanden) erleichtern sollte:

Code: Alles auswählen

Sub OeffnenEinfuegen 
' de48625 2011-05-28

' Create a FilePicker dialog.
oFileDialog = CreateUnoService( "com.sun.star.ui.dialogs.FilePicker" )
' object for file services
oUcb = createUnoService("com.sun.star.ucb.SimpleFileAccess")

' set titel
oFileDialog.setTitle( "Öffnen zum Einfügen" )

' set up filter 
oFileDialog.appendFilter( "OpenDocument Kalkulation (*.ods)", "*.ods")

' pre-set your source path HERE
InitPath = ConvertToURL( "file:///C:/Dokumente und Einstellungen/Rene/Eigene Dateien/Winddaten/" ) 

' pre-set source path
If oUcb.Exists( InitPath ) Then
	oFileDialog.SetDisplayDirectory( InitPath )
End If

' get ID of button pushed
iAccept = oFileDialog.Execute()

If iAccept = 1 Then
   mDatei = oFileDialog.getFiles()
   oDoc = StarDesktop.loadComponentFromURL( mDatei(0),"_blank",0,array() )

Bei iAccept = 1 wurde die "Öffnen" - Schaltfläche ausgelöst.


Viel Erfolg bei der Fehlersuche!
Cheers
Winfried
aktuell: LO 5.3.5.2 30m0(Build:2) SUSE rpm, unter Linux openSuSE Leap 42.3 x86_64/KDE5
DateTime2 Einfügen von Datum/Zeit/Zeitstempel (als OOo Extension)
Hansi
***
Beiträge: 56
Registriert: Mo, 04.04.2011 09:50

Re: Makro Fehlermeldung Warum ???

Beitrag von Hansi »

Hallo komma4,

danke erst mal für den Code,mal schauen was man daraus machen kann. Zu dem Fehler.

Punkt1. Er ist nicht an der Stelle wo ich diesen bei dem ersten Code eingezeichnet habe,(sorry mein Fehler).Unten im Code ist es jetzt richtig eingezeichent.

Punkt2. Wenn ich zwei Makro´s daraus mache funktioniert es

Punkt3.Kann es sein das es mit er markierten Stelle (??????) zusammenhängt,weil dort doch das Dokument geschlossen wird.

Punkt4.Versteckte Steuerzeichen sind nicht drin

Gruß Hansi

Code: Alles auswählen

Sub OeffnenEinfuegen
dim dummy()
    odoc = thiscomponent
       myString= "Öffnen"     
       mystring1 = (mystring+"_"+Datumsortiert)   
       beep
       Dateiname = InputBox ("Geben Sie bitte den Dateinamen ein:",mystring,"")
       iF Dateiname = "" then EXit SUB     
          Speicherort = InputBox ("Geben Sie bitte ein Verzeichnis ein:", mystring, "file:///C:/Dokumente und Einstellungen/Rene/Eigene Dateien/Winddaten/")
       iF Speicherort = "" then EXit SUB
       myUrl = Speicherort + Dateiname +".ods"
       oUCB = createUnoService("com.sun.star.ucb.SimpleFileAccess")
       If oUCB.exists(myURL) then
          oDoc = StarDesktop.loadComponentFromURL(myURL,"_blank",0,array())
       ELSe
          MSgbox ("Die Datei """& convertFromURL(myURL) &""" existiert nicht !",16,"Fehler !!!")
          exit sub
       endif
ocalc=thiscomponent
mysheet=ocalc.sheets(0)     
mysheet.name="Daten1"

document   = ThisComponent.CurrentController.Frame                         
dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")

rem ----------------------------------------------------------------------
dim args2(2) as new com.sun.star.beans.PropertyValue
args2(0).Name = "DocName"
args2(0).Value = "Berechnungsvorlage"
args2(1).Name = "Index"
args2(1).Value = 32767
args2(2).Name = "Copy"
args2(2).Value = true                                        <-------------- ???????
dispatcher.executeDispatch(document, ".uno:Move", "", 0, args2())
odoc.close(true)
                                                                       <------ END SUb / SUB weiter
rem ----------------------------------------------------------------------
rem define variables
dim document1   as object
dim dispatcher1 as object
rem ----------------------------------------------------------------------
rem get access to the document
document1   = ThisComponent.CurrentController.Frame                         <------------- FEHLER
dispatcher1 = createUnoService("com.sun.star.frame.DispatchHelper")

rem ----------------------------------------------------------------------

dim args1(0) as new com.sun.star.beans.PropertyValue
args1(0).Name = "Nr"
args1(0).Value = 18

dispatcher1.executeDispatch(document1, ".uno:JumpToTable", "", 0, args1())

rem ----------------------------------------------------------------------
dim args3(0) as new com.sun.star.beans.PropertyValue
args2(0).Name = "ToPoint"
args2(0).Value = "$a$1:$BJ$3537"

dispatcher1.executeDispatch(document1, ".uno:GoToCell", "", 0, args3())

rem ----------------------------------------------------------------------
dispatcher1.executeDispatch(document1, ".uno:Copy", "", 0, Array())

rem ----------------------------------------------------------------------
dim args4(0) as new com.sun.star.beans.PropertyValue
args4(0).Name = "Nr"
args4(0).Value = 2

dispatcher1.executeDispatch(document1, ".uno:JumpToTable", "", 0, args4())

rem ----------------------------------------------------------------------
dim args5(0) as new com.sun.star.beans.PropertyValue
args5(0).Name = "ToPoint"
args5(0).Value = "$a$1:$BJ$3537"

dispatcher1.executeDispatch(document1, ".uno:GoToCell", "", 0, args5())

rem ----------------------------------------------------------------------
dispatcher1.executeDispatch(document1, ".uno:Paste", "", 0, Array())


end sub
DPunch
*******
Beiträge: 1112
Registriert: Mo, 02.11.2009 16:16
Wohnort: Marburg

Re: Makro Fehlermeldung Warum ???

Beitrag von DPunch »

Aloha
Hansi hat geschrieben:Punkt3.Kann es sein das es mit er markierten Stelle (??????) zusammenhängt,weil dort doch das Dokument geschlossen wird.
Davon würde ich stark ausgehen, die mehrmalige Verwendung von thisComponent mit zwischendurch geöffneter und dann wieder geschlossener Datei scheint mir eine mögliche und aus Erfahrungswerten auch logische Erklärung.
Stell mal die Zeile

Code: Alles auswählen

document1   = ThisComponent.CurrentController.Frame
ganz an den Anfang des Codes und lösch die Zeile, in der Du die Fehlermeldung markiert hast, aus dem Code raus.
Hansi
***
Beiträge: 56
Registriert: Mo, 04.04.2011 09:50

Re: Makro Fehlermeldung Warum ???

Beitrag von Hansi »

Hi,

jo,das war die Ursache.Danke
Antworten