Makro in Calc mit Buchstaben Schleife

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

Moderator: Moderatoren

Edbeck
Beiträge: 6
Registriert: Di, 09.02.2016 06:59

Makro in Calc mit Buchstaben Schleife

Beitrag von Edbeck »

Hallo Leute,

leider hab ich von Programmierung absolut keine Ahnung, und es kann sein,
dass sich meine Lösung durch diverse Threads bereits ergibt, verstanden bzw. gefunden habe ich
leider nichts (versuche mich bereits 2 Tage an einer Lösung!)
Ich hab folgendes Problem:
Auf einer Internetseite wollte ich nach verfügbaren Kfz-Kennzeichen suchen.
Man kann einen oder zwei Buchstaben und Zahlen von bis eingeben,
z.B.: A 1- 9999 oder GR 50-100.
Man kann also nicht nach einer Zahl suchen, z.B 100. Da müßte ich sämtliche Zahlenkombinationen eingeben (702 Stück) und das für jede Zahl.
Was ich bereits geschafft habe, ist, dass ich in die URL zwei Variablen eingebaut habe.
Wenn ich diesen Variablen im Makro Werte zuweise, werden die freien Kennzeichen im Calc ausgegeben.
Leider schaffe ich es nicht, eine Schleife einzubauen, die alle Buchstabenkombinationen von A-ZZ abarbeitet und alle Ergebnisse dann auflistet.
Geht es überhaupt mit Buchstaben in der Schleife (For?)? oder muß ich eine Matrix erstellen und mir da die Buchstabenkombination holen?

Die Problematik ist hoffentlich verständlich.
Kann mir jemand weiterhelfen.

Danke
Edbeck
Stephan
********
Beiträge: 12368
Registriert: Mi, 30.06.2004 19:36
Wohnort: nahe Berlin

Re: Makro in Calc mit Buchstaben Schleife

Beitrag von Stephan »

z.B.:

Code: Alles auswählen

Sub Main
For i = 65 To 90
  For j = 64 To 90
    If j = 64 Then
        'A-Z  
        tmp = CHR(i)
      Else
        'AA-ZZ
        tmp = CHR(i) & CHR(j)
    End If
    kontrolle = kontrolle & tmp & ", "
  Next j
Next i
kontrolle = Left(kontrolle, Len(kontrolle)-2)
Msgbox kontrolle
End Sub
Gruß
Stephan
Stephan
********
Beiträge: 12368
Registriert: Mi, 30.06.2004 19:36
Wohnort: nahe Berlin

Re: Makro in Calc mit Buchstaben Schleife

Beitrag von Stephan »

Was ich bereits geschafft habe, ist, dass ich in die URL zwei Variablen eingebaut habe.
Wenn ich diesen Variablen im Makro Werte zuweise, werden die freien Kennzeichen im Calc ausgegeben.
Verrate uns doch einmal die Webseite und welchen Code Du bisher benutzt bzw. wo dokumentiert ist wie man die URL parametrieren muss.


Gruß
Stephan
Edbeck
Beiträge: 6
Registriert: Di, 09.02.2016 06:59

Re: Makro in Calc mit Buchstaben Schleife

Beitrag von Edbeck »

Nachtrag:

Grundsätzlich scheint es zu funktionieren, zumindest gibt er mir schon verschiedene Buchstabenkombinationen aus.
Allerdings dauerts ewig bzw es geht dann gar nix mehr.
Ich vermute, die 702 nahezu gleichzeitigen Anfragen können nicht verarbeitet werden.
Kann man pro Abruf eine Pause einfügen oder besser die Antwort abwarten, bis die nächste Anfrage startet?
Ferner überschreibt er mir meine Einträge. Wie muß ich goToEndOfUsedArea() einbauen?

Gruß
Edbeck
Karolus
********
Beiträge: 7533
Registriert: Mo, 02.01.2006 19:48

Re: Makro in Calc mit Buchstaben Schleife

Beitrag von Karolus »

Hallo

Code: Alles auswählen

from itertools import product
from string import ascii_uppercase as abc
print(', '.join(abc))
print(', '.join(''.join(combi) for combi in product(abc,abc))) 
muss ich jetzt nicht kommentieren - oder?
LO7.4.7.2 debian 12(bookworm) auf Raspberry5 8GB (ARM64)
LO25.2.3.2 flatpak debian 12(bookworm) auf Raspberry5 8GB (ARM64)
Stephan
********
Beiträge: 12368
Registriert: Mi, 30.06.2004 19:36
Wohnort: nahe Berlin

Re: Makro in Calc mit Buchstaben Schleife

Beitrag von Stephan »

Kann man pro Abruf eine Pause einfügen


ja, mit Wait, das Folgende wartet 1 Sekunde:

Code: Alles auswählen

Wait 1000
oder besser die Antwort abwarten, bis die nächste Anfrage startet?
im konkreten Falle weiß ich nicht wie (die Prüfung ob schon Inhalt 'erzeut' wurde scheidet m.E. aus da eine 'Anfrage' auch ganz regulär ohne Inhalt sein kann weil alle Kennzeichen bereits vergeben sind)
Wie muß ich goToEndOfUsedArea() einbauen?
ganz normal. Ich habe es gerade überprüft und auch die Links (die ja inhaltlich Felder sind) führen zum richtigen Funktionieren von goToEndOfUsedArea(), ich weiß also nicht worauf Deine Frage zielt.



Gruß
Stephan
Stephan
********
Beiträge: 12368
Registriert: Mi, 30.06.2004 19:36
Wohnort: nahe Berlin

Re: Makro in Calc mit Buchstaben Schleife

Beitrag von Stephan »

muss ich jetzt nicht kommentieren - oder?
Viele Mitleser würden sich mutmaßlich freuen zu erfahren wie das Ganze überhaupt zu benutzen ist [1], da es ja über die GUI nicht direkt möglich ist Python-Scripts zu bearbeiten.
Ich selbst scheitere auch mal wieder daran, zwar weiß ich wo die Scripts bei OO im Dateisystem stehen und kann dort ein neues Script hinzufügen, aber OO ignoriert das in der GUI beflissentlich (es wird nur ein Ordner mit dem Scriptnamen, aber unterhalb kein Script angezeigt).

[1]
wahrscheinlich ist das schon häufiger erklärt worden, aber nicht alles merkt man sich und immer wieder kommen neue Leute hinzu die bisher garkeine Chance hatten sich das zu merken




Gruß
Stephan
mikeleb
*******
Beiträge: 1427
Registriert: Fr, 09.12.2011 16:50

Re: Makro in Calc mit Buchstaben Schleife

Beitrag von mikeleb »

Hallo,

auch wenn es nicht zum eigentliche Thread gehört: Mir geht es wie Stephan, ich lese begeistert die Möglichkeiten, die python bietet 8) , und komme selbst kein Schritt voran ... :(
Büche rund Quellen zu python gibt es ja genug, aber die Zusammenarbeit Openoffice-Python ist mir immer noch ein Rätsel :( .
@Karolus: Deinen Link unter viewtopic.php?f=27&t=64426 habe ich mir mehrfach zu Gemüte geführt und festgestellt: da bin ich blutiger Anfänger und verstehe irgendwie gar nichts. Ich müsste irgendwie ein paar Schritte eher anfangen und weiß nicht wo ...
Gruß,
mikeleb
Edbeck
Beiträge: 6
Registriert: Di, 09.02.2016 06:59

Re: Makro in Calc mit Buchstaben Schleife

Beitrag von Edbeck »

Hab den Python-Vorschlag schon versucht, naja, hatte natürlich dieselben Probleme wie alle anderen.
Bis is mal rausgefunden habe, dass das Python ist...

@Karolus
Dafür, dass ich geschrieben habe, von Programmierung keine Ahnung zu haben, ist deine Antwort respektive deine Frage
muss ich jetzt nicht kommentieren - oder?
eigentlich ein Witz. Sorry.

@Stephan
Wie muß ich goToEndOfUsedArea() einbauen?
Naja, ich möchte ja, dass die einzelnen Ergebnisse nicht überschrieben werden, sondern
dass die Ergebnisse nacheinander geschrieben werden.

oCellAddress = oSheet.getCellRangeByName("B3").CellAddress
ist ja da das Problem. Er schreibt immer in B3.

(("b3:b100") funktioniert auch nicht)
Hab schon alles mögliche versucht, klappt nicht.
kann nicht mal umstellen auf .getcellbyposition(0,0)
Wo scheiterts denn?
im konkreten Falle weiß ich nicht wie (die Prüfung ob schon Inhalt 'erzeut' wurde scheidet m.E. aus da eine 'Anfrage' auch ganz regulär ohne Inhalt sein kann weil alle Kennzeichen bereits vergeben sind)
Wait ist gut!
Stephan
********
Beiträge: 12368
Registriert: Mi, 30.06.2004 19:36
Wohnort: nahe Berlin

Re: Makro in Calc mit Buchstaben Schleife

Beitrag von Stephan »

oCellAddress = oSheet.getCellRangeByName("B3").CellAddress
ist ja da das Problem. Er schreibt immer in B3.
dann nimm statt dieser einen Zeile die folgenden Zeilen:

Code: Alles auswählen

cur = oSheet.CreateCursor
cur.GotoEndOfUsedArea(True)
tmp_row = cur.RangeAddress.EndRow
oCellAddress = oSheet.getCellByPosition(1, tmp_row + 1).CellAddress
beim ersten Durchlauf kommt da B2 'raus', falls das stört nimm z.B.:

Code: Alles auswählen

cur = oSheet.CreateCursor
cur.GotoEndOfUsedArea(True)
tmp_row = cur.RangeAddress.EndRow
If tmp_row = 0 Then tmp_row = 1
oCellAddress = oSheet.getCellByPosition(1, tmp_row + 1).CellAddress

Gruß
Stephan
mikeleb
*******
Beiträge: 1427
Registriert: Fr, 09.12.2011 16:50

Re: Makro in Calc mit Buchstaben Schleife

Beitrag von mikeleb »

Hallo,

ich würde es etwas anders machen: Zunächst eine Link herstellen und dann die Daten auf einem 2. Tabellenblatt sammeln.
Dazu habe ich die verschiedenen Codeschnipsel mal zusammengefügt.
Das Makro durchläuft nun alle Buchstabenkombinationen, stellt für jede einzelne einen Link in Tabelle1 her und schreibt die Daten fortlaufend auf Tabelle2.
Mit ein paar Kombinatinen habe ich es getestet, für alle wird dein Rechner 'ne Weile beschäftigt sein - also Geduld :)
Dateianhänge
makro_html_auslesen2.ods
(15.92 KiB) 191-mal heruntergeladen
Gruß,
mikeleb
Stephan
********
Beiträge: 12368
Registriert: Mi, 30.06.2004 19:36
Wohnort: nahe Berlin

Re: Makro in Calc mit Buchstaben Schleife

Beitrag von Stephan »

ich lese begeistert die Möglichkeiten, die python bietet
In der Tat, so sehe ich das auch. Gleichzeitig fehlt mir die Zeit Python konzentriert zu lernen, sondern ich würde das lieber Schritt für Schritt tun anhand von Fragen die hier Thema sind und wo es sich entsprechend anbietet.

Ich würde mich also sehr freuen, wenn Du, Karolus, hier nicht nur Dein Wissen in Form von Code zur Verfügung stellen, sondern auch immer mal wieder vertiefend notwendige Grundlagen erläutern würdest.
Das Du gerade bei Python ein exzellenter Experte bist steht außer Frage, aber bitte lass uns mehr teilhaben und sein dabei geduldig (ich selbst weiß wie schwer das ist, denn ich bin auch häufig ungeduldig wenn Neulinge bei Basic nerven).

Gerade als Moderator, dem die Weiterentwicklung des Forums am Herzen liegt, würde es mich freuen wenn es hier mehr Python gäbe das so gut erläutert ist das Neulinge davon profitieren können, denn das würde das Ansehen unseres Forums weiter heben.


Gruß
Stephan
Edbeck
Beiträge: 6
Registriert: Di, 09.02.2016 06:59

Re: Makro in Calc mit Buchstaben Schleife

Beitrag von Edbeck »

ich würde es etwas anders machen: Zunächst eine Link herstellen und dann die Daten auf einem 2. Tabellenblatt sammeln.
?
Welche Daten willst du sammeln?
Ich weiß nicht ob ich jetzt was falsch verstehe, aber ich denke, dass du nicht verstanden hast, was ich möchte.
Ziel: Suche nach Buchstabenkombinationen, also z.B Eingabe 1-5 im Link (muß ich dann noch ändern, Eingabe soll in Tabelle sein)
Ausgabe in Calc: Alle Zahlenkombinationen von 1 -5.

Mal Danke an Alle für eure Beteiligung.
Stephan
********
Beiträge: 12368
Registriert: Mi, 30.06.2004 19:36
Wohnort: nahe Berlin

Re: Makro in Calc mit Buchstaben Schleife

Beitrag von Stephan »

Welche Daten willst du sammeln?
ich schreibe jetzt wirklich 'mein Gott', weil es nervt, denn offensichtlich hast Du nicht einen Blick in die fertige Datei geworfen, denn dort steht ein komplett fertiges Makro drin das alles erledigt wie gewünscht.

Unterschied zu Deiner Lösung ist einzig das die Daten in Tabelle1 jeweils überschrieben werden, ABER bevor das geschieht die aktuellen Daten in Tabelle2 ans Ende angehängt werden.


Gruß
Stephan
Edbeck
Beiträge: 6
Registriert: Di, 09.02.2016 06:59

Re: Makro in Calc mit Buchstaben Schleife

Beitrag von Edbeck »

Klar hab ich mir die Datei angeschaut, doch ich seh halt da nicht was es macht...
Nur durch testen und ändern fände ich das raus. Das geht aber grad nicht, aus Sicherheitsgründen, wie
mein PC meint.

Gruß
Edbeck
Antworten