Fehlermeldung "Eigenschaft/Methode nicht gefunden" in Calc

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

Moderator: Moderatoren

ulko38
**
Beiträge: 29
Registriert: Do, 01.12.2016 10:56

Fehlermeldung "Eigenschaft/Methode nicht gefunden" in Calc

Beitrag von ulko38 »

Hi
zu diesem Thema habe ich seit letzter Woche auch ein Problem.
Nich regelmässig aber des öfteren kommt bei ": Fehlermeldung "Eigenschaft/Methode nicht gefunden" jetzt auch. Habe schon verschiedene Ansätze aus dem Forum probiert, aber komme nicht weiter.
Bevor ich alles kaputt mache (meine Gesammtkentnisse sind nicht so berauschend) stelle ich den Code mit einer Testdatei hier ein.

Code: Alles auswählen

REM  *****  BASIC  *****
REM -----------------------------------------------------------------------------------------

REM					Zeit einer *.gpx Datei anpassen             Vers. 002
REM 															ulkohls
REM -----------------------------------------------------------------------------------------

Option Explicit

Sub gpx_Zeit_aendern
'---------------------------------------------------------------------------------------------
' Variablen deklarieren

dim oCalcDokument	As Object, oDispatcher	As	Object

dim	oDoc			As Object, oTabBlatt	As Object, oRange	As Object, oZelle 	As Object
dim	oCellCursor	As Object, oView		As Object, oSheets	As	Object
dim oZielInput	As	Object
'---------------------------------------------------------------------------------------------
' Bearbeitungs- Variable
'---------------------------------------------------------------------------------------------
dim nZei	As	Integer							'Beginn der zu bearbeitenden Zeilen
dim nLetzteZ	As	Long, nTo	As	Long
							'letze zu bearbeitende Zeile
dim sAbfrage	As	String	'wichig für die letzte Zeile
'----------------------------------------------------------------------------------------------
dim c	As	Long, i As	Long					'Zähler
dim x	As	Integer, y	As	Integer				
'-----------------------------------------------------------------------------------------------
dim nSek	As	Integer, nMinu	As	Integer, nStun	As	Integer
dim nSekDif	As	Integer
dim nZwSek	As	Integer,nZwMinu	As	Integer, nZwStun 	As	Integer
dim nBildNull As	Variant				          'Als Startzeit kleinstmögliche Zeit --> 00:00:01
dim nBildTime As	Variant						  'Eingabe der Bildaufnahme-Zeit in Zeile Pild-Position
dim ZellName	As	String
'-----------------------------------------------------------------------------------------------

oCalcDokument   = ThisComponent.CurrentController.Frame

Dispatcher = createUnoService( "com.sun.star.frame.DispatchHelper" )

'-----------------------------------------------------------------------------------------------
'		Name anzeigen
'MsgBox oTabBlatt


'-----------------------------------------------------------------------------------------------
'		Variablen für Until-Schleife belegen
i = 0
nTo  = 1
nZei = 1
nBildNull = 0
nBildTime = 0 
x = 1
y = 1
'       ZellenVariablen belegen
nStun = 0
nMinu = 0
nSek  = 0

nZwStun = 0
nZwMinu = 0
nSekDif = 0
nLetzteZ = 0
'-----------------------------------------------------------------------------------------------
	oCalcDokument = ThisComponent.CurrentController.Frame
	oTabBlatt 		= oCalcDokument.Sheets(0)
'	oView			= oCalcDokument.CurrentController
	oView.setActiveSheet(oTabBlatt)


	oZelle = oTabBlatt.getCellByPosition(4,x)
	
	ZellName = oZelle.string
MsgBox "die Zelle ist: -" & ZellName & "-"
'	call  Auf_Zelle_Springen()
	nBildNull = oZelle.Value
'sAbfrage = InputBox("Letzte Zeilen-Nr. eingeben","    ")
'nLetzteZ = Val(sAbfrage)
nLetzteZ = 10
'MsgBox "die letzteZeile ist: -" &nLetzteZ & "-"

	oZelle = oTabBlatt.getCellByPosition(4,x)
	 
	nBildNull = oZelle.Value

	oZelle = oTabBlatt.getCellByPosition(6,x)
	nStun = oZelle.Value

	oZelle = oTabBlatt.getCellByPosition(7,x)
	nMinu = oZelle.Value

	oZelle = oTabBlatt.getCellByPosition(8,x)
	nSek = oZelle.Value


	do until x = nLetzteZ
		for y = 1 to nTo
				oZelle = oTabBlatt.getCellByPosition(4,(x +1))
				nBildTime = oZelle.Value

				oZelle = oTabBlatt.getCellByPosition(6,(x +1))
				nZwStun = oZelle.Value

msgBox  x &"  Zeile  "& nStun &"  hh  "& nMinu &"  min  "& nSek &" sek + Diff-Sek "& nSekDif
				
	
				oZelle  = oTabBlatt.getCellByPosition(9,(x+1))
				nSekDif = oZelle.Value

				oZelle = oTabBlatt.getCellByPosition(7,x)

msgBox  x &"  Zeile  "& nStun &"  hh  "& nMinu &"  min  "& nSek &" sek + Diff-Sek "& nSekDif
	
				if nSek + nSekDif >= 60 Then
					oZelle = oTabBlatt.getCellByPosition(7,x)
					nSek = nSek - 60
					nMinu = nMinu +1
					if nMinu >= 60 Then
						x = x +1
						oZelle = oTabBlatt.getCellByPosition(6,x)
						nStun = nStun +1
						oZelle.Value = nStun
						x = x -1
						nMinu = nMinu -60
					end if
				endif
				x = x +1
				if nBildTime > nBildNull Then
				 	oZelle = oTabBlatt.getCellByPosition(6,x)
					nStun = oZelle.Value

					oZelle = oTabBlatt.getCellByPosition(7,x)
					nMinu = oZelle.Value

					oZelle = oTabBlatt.getCellByPosition(7,x)
					nSek = oZelle.Value
				Endif
				nSek = nSek + nSekDif
				oZelle = oTabBlatt.getCellByPosition(6,x)
				oZelle.Value = nStun

				oZelle = oTabBlatt.getCellByPosition(7,x)
				oZelle.Value = nMinu

				oZelle = oTabBlatt.getCellByPosition(8,x)
				oZelle.Value = nSek
				nZei = nZei 
				y = y +1
				if nZei > nLetzteZ then exit sub
				next y
				loop
End Sub

Hoffe sehr auf Vorschläge wie ich das Ganze stabiler hinbekomme.

Arbeite seit Dez. 2016 sehr gut mit diesem Makro. Ab Januar 2018 lief mein Rechner nach Umstellung des Internetzugangs von Unity Media auf Telekom immer schlechter. Weiil das letzte win 10 Update immer wieder hängen blieb und nach einem Neustart rückgängig gemacht wurde, habe ich alles neu aufsetzen müssen. Eine Heidenarbei für mich als Laie.
Da ich den o.g. Ärger schnellsten beheben möchte brauche ich eure Hilfe.
Grüße Ulrich
2018-Test GPX_Zeit.ods
(11.99 KiB) 128-mal heruntergeladen
Stephan
********
Beiträge: 12369
Registriert: Mi, 30.06.2004 19:36
Wohnort: nahe Berlin

Re: Fehlermeldung "Eigenschaft/Methode nicht gefunden" in Calc

Beitrag von Stephan »

Arbeite seit Dez. 2016 sehr gut mit diesem Makro.
das halte ich für absolut ausgeschlossen, denn (zumindest) die zwei Zeilen:

Code: Alles auswählen

oCalcDokument = ThisComponent.CurrentController.Frame
	oTabBlatt 		= oCalcDokument.Sheets(0)
haben so garantiert noch nie funktioniert. Weiter geht es dann mit:

Code: Alles auswählen

oView.setActiveSheet(oTabBlatt)
was mangels vorheriger Objektzuweisung an oView auch nie funktioniert haben kann.

Ebenso gibt wegen:

Code: Alles auswählen

Option Explicit
auch:

Code: Alles auswählen

Dispatcher = createUnoService( "com.sun.star.frame.DispatchHelper" )
eine Fehlermeldung.


Wie wäre es also, wenn Du uns einfach den Code postest der seit Dezember 2016 tatsächlich funktioniert hat?


Gruß
Stephan
ulko38
**
Beiträge: 29
Registriert: Do, 01.12.2016 10:56

Re: Fehlermeldung "Eigenschaft/Methode nicht gefunden" in Calc

Beitrag von ulko38 »

Hi Stephan,
Würde ich am liebsten tun, aber der ist durch den von Win 10 update erzwungenen Neustart vorloren gegangen.
Mein vorliegender Versuch ist anfangs durchgelaufen, dann bei kleinen Änderungen ist es passiert. Je mehr ich verbessern wollte, je schlechter ist es geworden. Ich weiß im Moment nicht, was richtig oder falsch ist.
An dne Helfer im Nov. Dez. 2016 komme ich zZ. nicht ran. Das Aktivieren meines Konto beim OpenOffice Forum funktioniert nicht. Ich bekomme leider keine Rückmeldung auf die Mail "Passwort vergessen. Craig hat mir da bis zum lauffähigen Makro sehr geholfen.
Meine Radtouren (berichtigt pzw mit gefüllten Datenlücken sind bei Komoot.de und meinwomo.net einzusehen.
Tut mir leid mit besserem kann ich z.Z nicht dienen.
Grüße Ulrich
Stephan
********
Beiträge: 12369
Registriert: Mi, 30.06.2004 19:36
Wohnort: nahe Berlin

Re: Fehlermeldung "Eigenschaft/Methode nicht gefunden" in Calc

Beitrag von Stephan »

Ich verstehe zwar nicht was das Makro genau tun soll, aber so läuft der Code zumindest ohne Fehlermeldung durch:

Code: Alles auswählen

REM  *****  BASIC  *****
REM -----------------------------------------------------------------------------------------

REM					Zeit einer *.gpx Datei anpassen             Vers. 002
REM 															ulkohls
REM -----------------------------------------------------------------------------------------

Option Explicit


Sub gpx_Zeit_aendern
'---------------------------------------------------------------------------------------------
' Variablen deklarieren

dim oCalcDokument	As Object, oDispatcher	As	Object

dim	oDoc			As Object, oTabBlatt	As Object, oRange	As Object, oZelle 	As Object
dim	oCellCursor	As Object, oView		As Object, oSheets	As	Object
dim oZielInput	As	Object
'---------------------------------------------------------------------------------------------
' Bearbeitungs- Variable
'---------------------------------------------------------------------------------------------
dim nZei	As	Integer							'Beginn der zu bearbeitenden Zeilen
dim nLetzteZ	As	Long, nTo	As	Long
							'letze zu bearbeitende Zeile
dim sAbfrage	As	String	'wichig für die letzte Zeile
'----------------------------------------------------------------------------------------------
dim c	As	Long, i As	Long					'Zähler
dim x	As	Integer, y	As	Integer				
'-----------------------------------------------------------------------------------------------
dim nSek	As	Integer, nMinu	As	Integer, nStun	As	Integer
dim nSekDif	As	Integer
dim nZwSek	As	Integer,nZwMinu	As	Integer, nZwStun 	As	Integer
dim nBildNull As	Variant				          'Als Startzeit kleinstmögliche Zeit --> 00:00:01
dim nBildTime As	Variant						  'Eingabe der Bildaufnahme-Zeit in Zeile Pild-Position
dim ZellName	As	String
'-----------------------------------------------------------------------------------------------

Dim dispatcher As Object

oCalcDokument   = ThisComponent.CurrentController.Frame

Dispatcher = createUnoService( "com.sun.star.frame.DispatchHelper" )

'-----------------------------------------------------------------------------------------------
'		Name anzeigen
'MsgBox oTabBlatt


'-----------------------------------------------------------------------------------------------
'		Variablen für Until-Schleife belegen
i = 0
nTo  = 1
nZei = 1
nBildNull = 0
nBildTime = 0 
x = 1
y = 1
'       ZellenVariablen belegen
nStun = 0
nMinu = 0
nSek  = 0

nZwStun = 0
nZwMinu = 0
nSekDif = 0
nLetzteZ = 0
'-----------------------------------------------------------------------------------------------
	oCalcDokument = ThisComponent
	oTabBlatt 		= oCalcDokument.Sheets(0)
	oView			= oCalcDokument.CurrentController
	oView.setActiveSheet(oTabBlatt)


	oZelle = oTabBlatt.getCellByPosition(4,x)
	
	ZellName = oZelle.string
MsgBox "die Zelle ist: -" & ZellName & "-"
'	call  Auf_Zelle_Springen()
	nBildNull = oZelle.Value
'sAbfrage = InputBox("Letzte Zeilen-Nr. eingeben","    ")
'nLetzteZ = Val(sAbfrage)
nLetzteZ = 10
'MsgBox "die letzteZeile ist: -" &nLetzteZ & "-"

	oZelle = oTabBlatt.getCellByPosition(4,x)
	 
	nBildNull = oZelle.Value

	oZelle = oTabBlatt.getCellByPosition(6,x)
	nStun = oZelle.Value

	oZelle = oTabBlatt.getCellByPosition(7,x)
	nMinu = oZelle.Value

	oZelle = oTabBlatt.getCellByPosition(8,x)
	nSek = oZelle.Value


	do until x = nLetzteZ
		for y = 1 to nTo
				oZelle = oTabBlatt.getCellByPosition(4,(x +1))
				nBildTime = oZelle.Value

				oZelle = oTabBlatt.getCellByPosition(6,(x +1))
				nZwStun = oZelle.Value

msgBox  x &"  Zeile  "& nStun &"  hh  "& nMinu &"  min  "& nSek &" sek + Diff-Sek "& nSekDif
				
	
				oZelle  = oTabBlatt.getCellByPosition(9,(x+1))
				nSekDif = oZelle.Value

				oZelle = oTabBlatt.getCellByPosition(7,x)

msgBox  x &"  Zeile  "& nStun &"  hh  "& nMinu &"  min  "& nSek &" sek + Diff-Sek "& nSekDif
	
				if nSek + nSekDif >= 60 Then
					oZelle = oTabBlatt.getCellByPosition(7,x)
					nSek = nSek - 60
					nMinu = nMinu +1
					if nMinu >= 60 Then
						x = x +1
						oZelle = oTabBlatt.getCellByPosition(6,x)
						nStun = nStun +1
						oZelle.Value = nStun
						x = x -1
						nMinu = nMinu -60
					end if
				endif
				x = x +1
				if nBildTime > nBildNull Then
				 	oZelle = oTabBlatt.getCellByPosition(6,x)
					nStun = oZelle.Value

					oZelle = oTabBlatt.getCellByPosition(7,x)
					nMinu = oZelle.Value

					oZelle = oTabBlatt.getCellByPosition(7,x)
					nSek = oZelle.Value
				Endif
				nSek = nSek + nSekDif
				oZelle = oTabBlatt.getCellByPosition(6,x)
				oZelle.Value = nStun

				oZelle = oTabBlatt.getCellByPosition(7,x)
				oZelle.Value = nMinu

				oZelle = oTabBlatt.getCellByPosition(8,x)
				oZelle.Value = nSek
				nZei = nZei 
				y = y +1
				if nZei > nLetzteZ then exit sub
				next y
				loop
End Sub

Gruß
Stephan
ulko38
**
Beiträge: 29
Registriert: Do, 01.12.2016 10:56

Re: Fehlermeldung "Eigenschaft/Methode nicht gefunden" in Calc

Beitrag von ulko38 »

Hi Stephan
Erst mal vielen Dank für die Berichtigung.
Über den Zweck des Makro werde ich gleich was schreiben. Muss jetzt zum Doc.
Gruß Ulrich
ulko38
**
Beiträge: 29
Registriert: Do, 01.12.2016 10:56

Re: Fehlermeldung "Eigenschaft/Methode nicht gefunden" in Calc

Beitrag von ulko38 »

Hi Stephan
wie gehabt .
Fehlermeldung als Screen-Ausschnitt
Grüße Ulrich
Dateianhänge
2018-04-30  delklarierte Variable.PNG
2018-04-30 delklarierte Variable.PNG (74.76 KiB) 9728 mal betrachtet
Stephan
********
Beiträge: 12369
Registriert: Mi, 30.06.2004 19:36
Wohnort: nahe Berlin

Re: Fehlermeldung "Eigenschaft/Methode nicht gefunden" in Calc

Beitrag von Stephan »

wie gehabt .
Fehlermeldung als Screen-Ausschnitt
dann war wohl das Dokument nicht offen und im Vordergrund als das Makro gestartet wurde.


Gruß
Stephan
ulko38
**
Beiträge: 29
Registriert: Do, 01.12.2016 10:56

Re: Fehlermeldung "Eigenschaft/Methode nicht gefunden" in Calc

Beitrag von ulko38 »

Hi Stephan
dann war wohl das Dokument nicht offen und im Vordergrund als das Makro gestartet wurde.
Da muss ich wohl vor besagten Win 10 Problem immer Glück gehabt haben.
Meine bisherige Vorgehensweise:
zu bearbeitendes Cals-Dokument öffnen. Auf Tabelle 1 bleiben. Makro zum bearbeiten öffnen. nLetzteZ (Letze ausgefüllte Zeilen-Nr) eintragen. Makro mit "grünem" Pfeil starten. Das war es.
Und wie holt man jetzt das betreffende Dokument in den Vordergrund ??
Habe in Dannenhöfer und mit google gesucht, aber komme nicht weiter !!
Grüße Ulrich
Stephan
********
Beiträge: 12369
Registriert: Mi, 30.06.2004 19:36
Wohnort: nahe Berlin

Re: Fehlermeldung "Eigenschaft/Methode nicht gefunden" in Calc

Beitrag von Stephan »

Und wie holt man jetzt das betreffende Dokument in den Vordergrund ??
Indem man das Fenster des Dokuments als vorderstes Fenster auf dem Monitor anzeigen lässt, z.B. indem man mit der Maus auf das Fenster mit dem Dokument klickt.


Gruß
Stephan
ulko38
**
Beiträge: 29
Registriert: Do, 01.12.2016 10:56

Re: Fehlermeldung "Eigenschaft/Methode nicht gefunden" in Calc

Beitrag von ulko38 »

Hi Stephan
Ich glaube wir schreiben nutzlos hin und her.
Ich öffne ne ichdie Datei "neue GPX-Zeit. Als einzige. Setze den Cursor auf "A2". Danach öffne ich "ExtrAs - Makro - Verwalten - OO - Bearbeibeiten.
Wert für nLetzteZ eintrga, grünen Pfeil anklicken:
Entweder bleibt das Makro hier hängen
offene_Datei und Fehler.PNG
offene_Datei und Fehler.PNG (190.71 KiB) 9588 mal betrachtet
aber auch schon mal da.

Code: Alles auswählen

oTabBlatt 		= oCalcDokument.Sheets(0)
Warum das jetzt so ist, kann ich nicht erklären. Deswegen meine Frage hier im Forum.
Wie schon geschrieben war das nicht so vor dem neuen aufsetzen von win 10/64
Grüße Ulrich
ulko38
**
Beiträge: 29
Registriert: Do, 01.12.2016 10:56

Re: Fehlermeldung "Eigenschaft/Methode nicht gefunden" in Calc

Beitrag von ulko38 »

Hi zusammen
Problem konnte gelöst werden.
Makro läuft wieder.
Grüße Ulrich
Antworten