Macro funktioniert nicht. Was ist da falsch? Brauche Eure Hi
Moderator: Moderatoren
Macro funktioniert nicht. Was ist da falsch? Brauche Eure Hi
Hallo liebes Forum,
ich habe eine Datenbank mit mit mehreren Tabellen. In einer Calc-Datei habe ich zwei Auswahlfelder mit Haltestellen. Die holt er sich auch korrekt aus der Datenbank.
Ebenfalls sind zwei Felder mit Uhrzeiten der einzelnen Haltestellen.
Ich möchte jetzt mit dem Suchen-Button die richtige Uhrzeit herausfinden, wann der Bus an der Haltestelle A Abfährt und an der Haltestelle B ankommt. in eimem Writer-Document
funktioniert das Makro tadellos. In einem Calc-Dokument funktioniert es nicht. Er schreibt dann imer "Basic-Laufzeitfehler. Eigenschaft oder Methode nicht gefunden: drawpage
Was muß ich an diesem Makro ändern, damit es funktioniert. Die Datenbank und die Calc-Testtabelle habe ich mit hochgeladen.
Ich hoffe, Ihr könnt mir helfen.
Vielen Dank im Vorraus.
Franky
ich habe eine Datenbank mit mit mehreren Tabellen. In einer Calc-Datei habe ich zwei Auswahlfelder mit Haltestellen. Die holt er sich auch korrekt aus der Datenbank.
Ebenfalls sind zwei Felder mit Uhrzeiten der einzelnen Haltestellen.
Ich möchte jetzt mit dem Suchen-Button die richtige Uhrzeit herausfinden, wann der Bus an der Haltestelle A Abfährt und an der Haltestelle B ankommt. in eimem Writer-Document
funktioniert das Makro tadellos. In einem Calc-Dokument funktioniert es nicht. Er schreibt dann imer "Basic-Laufzeitfehler. Eigenschaft oder Methode nicht gefunden: drawpage
Was muß ich an diesem Makro ändern, damit es funktioniert. Die Datenbank und die Calc-Testtabelle habe ich mit hochgeladen.
Ich hoffe, Ihr könnt mir helfen.
Vielen Dank im Vorraus.
Franky
- Dateianhänge
-
- Testentfernungen.ods
- (21.59 KiB) 76-mal heruntergeladen
-
- Ruftaxi-2010.odb
- (57.95 KiB) 64-mal heruntergeladen
Re: Macro funktioniert nicht. Was ist da falsch? Brauche Eure Hi
Aloha
Daher heisst die Methode nicht "getDrawpage" sondern "getDrawpages" (bzw. thisComponent.Drawpages statt thisComponent.Drawpage).
Um die gewünschte Drawpage anzusprechen, solltest Du vorher das Sheet identifizieren, dem die Drawpage zugeordnet ist, z.B. so
oDrawpage referenziert dann die Drawpage des momentan aktiven Calcsheets.
Um die Drawpage eines anderen Sheets zu referenzieren, gehst Du prinzipiell nach dem gleichen Schema vor
Von dort aus kannst Du auf die Forms und Steuerelemente zugreifen wie in einem Writer-Dokument.
Ein Calc-Dokument hat nicht nur eine Drawpage, sondern jedes einzelne Sheet hat seine eigene.franky hat geschrieben:In einem Calc-Dokument funktioniert es nicht. Er schreibt dann imer "Basic-Laufzeitfehler. Eigenschaft oder Methode nicht gefunden: drawpage
Daher heisst die Methode nicht "getDrawpage" sondern "getDrawpages" (bzw. thisComponent.Drawpages statt thisComponent.Drawpage).
Um die gewünschte Drawpage anzusprechen, solltest Du vorher das Sheet identifizieren, dem die Drawpage zugeordnet ist, z.B. so
Code: Alles auswählen
oDrawpage = ThisComponent.CurrentController.ActiveSheet.Drawpage
Um die Drawpage eines anderen Sheets zu referenzieren, gehst Du prinzipiell nach dem gleichen Schema vor
Code: Alles auswählen
oDrawpage = ThisComponent.Sheets.getByName("meinTabellenblatt").Drawpage
Re: Macro funktioniert nicht. Was ist da falsch? Brauche Eure Hi
Hallöle DPunch,
Danke für Deine Antwort. Aber irgendwie habe ich ein Brett vor dem Kopp. Kanst Du mir das mal in meinen beiden Dateien so hinbasteln
wie Du es meinst ?
Quasi als Anschauungsunterricht für mich. Ich versuche das dann nachzuvollziehen. Das kann ich irgendwie besser. Es ist halt immer
etwas schwierig für einen Dummi wie mich, da ich noch nicht lange damit arbeite und meine Literatur noch nicht da ist.
Danke nochmals
Franky
Danke für Deine Antwort. Aber irgendwie habe ich ein Brett vor dem Kopp. Kanst Du mir das mal in meinen beiden Dateien so hinbasteln
wie Du es meinst ?
Quasi als Anschauungsunterricht für mich. Ich versuche das dann nachzuvollziehen. Das kann ich irgendwie besser. Es ist halt immer
etwas schwierig für einen Dummi wie mich, da ich noch nicht lange damit arbeite und meine Literatur noch nicht da ist.
Danke nochmals
Franky
Re: Macro funktioniert nicht. Was ist da falsch? Brauche Eure Hi
Aloha

Ich kann also nur versuchen, es Dir möglichst plastisch zu erklären:
Ausgehend von Deiner Aussage
Während Du im Writer-Dokument mit
arbeiten kannst, um die Drawpage zu referenzieren (anzusprechen, zu benutzen), da ein Writer-Dokument prinzipiell eben nur eine Drawpage hat, musst Du in einem Calc-Dokument die gewünschte Drawpage gezielt ansprechen, da dort jedes Tabellenblatt eine eigene Drawpage hat.
"thisComponent" hat in diesem Fall also nicht die Pseudo-Eigenschaft "DrawPage" - weshalb der von Dir beschriebene Fehler auftritt - sondern nur die Pseudo-Eigenschaft "DrawPages". Mehrere Drawpages (eine pro Tabellenblatt) = Mehrzahl.
Nun musst Du die Drawpage identifizieren, die Du für Dein Makro benötigst.
Wenn Du Dir sicher bist, dass das Makro immer vom entsprechenden Tabellenblatt ausgeführt wird (über eine Schaltfläche o.Ä.), dann ersetzt Du einfach den funktionierenden Codeschnippsel
aus dem Writer-Dokument mit
Kann das Makro auch aus einem anderen Tabellenblatt ausgeführt werden, musst Du das Tabellenblatt und die anhängliche Drawpage noch gezielter ansprechen:
"meinTabellenblatt" ist dabei der Name des Tabellenblatts, in dem Deine Steuerelemente liegen.
Also kurz gesagt, überall, wo Du im Writer-Dokument mit
gearbeitet hast, musst Du im Calc-Dokument die gewünschte Drawpage gezielt raussuchen und ansprechen, z.B.
Ich habe Open Office leider nicht (mehr) installiert, deshalb ist das etwas problematischfranky hat geschrieben:Danke für Deine Antwort. Aber irgendwie habe ich ein Brett vor dem Kopp. Kanst Du mir das mal in meinen beiden Dateien so hinbasteln
wie Du es meinst ?

Ich kann also nur versuchen, es Dir möglichst plastisch zu erklären:
Ausgehend von Deiner Aussage
nehme ich mal an, dass der Code prinzipiell funktioniert und es nur um die Referenzierung der gewünschten Drawpage in einem Calc-Dokument geht.franky hat geschrieben:in eimem Writer-Document funktioniert das Makro tadellos. In einem Calc-Dokument funktioniert es nicht.
Während Du im Writer-Dokument mit
Code: Alles auswählen
thisComponent.Drawpage
"thisComponent" hat in diesem Fall also nicht die Pseudo-Eigenschaft "DrawPage" - weshalb der von Dir beschriebene Fehler auftritt - sondern nur die Pseudo-Eigenschaft "DrawPages". Mehrere Drawpages (eine pro Tabellenblatt) = Mehrzahl.
Nun musst Du die Drawpage identifizieren, die Du für Dein Makro benötigst.
Wenn Du Dir sicher bist, dass das Makro immer vom entsprechenden Tabellenblatt ausgeführt wird (über eine Schaltfläche o.Ä.), dann ersetzt Du einfach den funktionierenden Codeschnippsel
Code: Alles auswählen
thisComponent.Drawpage
Code: Alles auswählen
thisComponent.CurrentController.ActiveSheet.Drawpage
Code: Alles auswählen
thisComponent.Sheets.getByName("meinTabellenblatt").Drawpage
Also kurz gesagt, überall, wo Du im Writer-Dokument mit
Code: Alles auswählen
thisComponent.Drawpage.machwasweissichwas
Code: Alles auswählen
thisComponent.CurrentController.ActiveSheet.Drawpage.machwasweissichwas
Re: Macro funktioniert nicht. Was ist da falsch? Brauche Eure Hi
Hallo DPunch,
sorry das ich mich nicht gemeldet hatte. lag aber krank danieder.. naja Grippe halt..
habe das mit dem Makro probiert. Hat leider nicht hingehauen. Er zeigt zwar jetzt keine
Fehlermeldung mehr, aber es bewegt sich in den feldern leider auch gar nichts.
Ich schreibe in meinem nächsten Post mal das Original-Makro.
Aber trotzdem ein riesne Danke für Deine Hilfe bis jetzt.
Franky
Hier ist das Original-Makro:
Sub uebernehmen
oForm = ThisComponent.drawpage.forms.getByName("Standard")
oForm.upDateRow () 'geänderten Datensatz speichern
oForm.reload() 'Formular neu einlesen
End Sub
sorry das ich mich nicht gemeldet hatte. lag aber krank danieder.. naja Grippe halt..
habe das mit dem Makro probiert. Hat leider nicht hingehauen. Er zeigt zwar jetzt keine
Fehlermeldung mehr, aber es bewegt sich in den feldern leider auch gar nichts.
Ich schreibe in meinem nächsten Post mal das Original-Makro.
Aber trotzdem ein riesne Danke für Deine Hilfe bis jetzt.
Franky
Hier ist das Original-Makro:
Sub uebernehmen
oForm = ThisComponent.drawpage.forms.getByName("Standard")
oForm.upDateRow () 'geänderten Datensatz speichern
oForm.reload() 'Formular neu einlesen
End Sub
Re: Macro funktioniert nicht. Was ist da falsch? Brauche Eure Hi
Aloha
Irgendwo auf dem Weg hast Du mich verloren, ich sehe gerade keinerlei Zusammenhang zwischen Deiner ursprünglichen Frage und meiner Antwort und der Problemstellung, die Du jetzt schilderst.
Insofern kann ich Dir da so nicht weiterhelfen.
Irgendwo auf dem Weg hast Du mich verloren, ich sehe gerade keinerlei Zusammenhang zwischen Deiner ursprünglichen Frage und meiner Antwort und der Problemstellung, die Du jetzt schilderst.
Insofern kann ich Dir da so nicht weiterhelfen.