Seite 1 von 1

Mit einem Makro eine bestimmte Zelle anspringen

Verfasst: Sa, 02.06.2007 17:30
von fuha
Hallo, bin neu hier und habe eine Frage an euch!
Ich habe einen Scanner, der einen Barcode in Zelle A1 einlesen soll, der dann ausgewertet wird.
Leider ist es so, das nach dem Einlesen der Cursor auf Zelle A2 springt und ich dann diesen immer manuell auf die Zelle A1 zurückstellen muß.
Kann man das per Makro so einstellen. dass der Cursor immr automatisch auf Zelle A1 zurückspringt, nachdem ich den Scanner benutzt habe?
Danke schon im Voraus für eure Lösungsvorschläge?

Mit freundlichen Grüßen
Harald

Verfasst: Sa, 02.06.2007 20:31
von Karolus
Hallo Harald

Code: Alles auswählen

Sub A1select
myDoc = thisComponent
mysheet = myDoc.sheets(0)
  mycell =  mysheet.getCellByPosition(0,0)
   mydoc.CurrentController.Select(mycell)
End Sub

Code: Alles auswählen

sub aufzeichnung
'Aufzeichnung von: Eingabe A1(Adressfenster) & enter
rem define variables
dim document   as object
dim dispatcher as object
rem get access to the document
document   = ThisComponent.CurrentController.Frame
dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")
dim args1(0) as new com.sun.star.beans.PropertyValue
args1(0).Name = "ToPoint"
args1(0).Value = "A1"
dispatcher.executeDispatch(document, ".uno:GoToCell", "", 0, args1())
end sub
Gruß Karo

Verfasst: Sa, 02.06.2007 21:17
von fuha
Karolus hat geschrieben:Hallo Harald

Code: Alles auswählen

Sub A1select
myDoc = thisComponent
mysheet = myDoc.sheets(0)
  mycell =  mysheet.getCellByPosition(0,0)
   mydoc.CurrentController.Select(mycell)
End Sub

Code: Alles auswählen

sub aufzeichnung
'Aufzeichnung von: Eingabe A1(Adressfenster) & enter
rem define variables
dim document   as object
dim dispatcher as object
rem get access to the document
document   = ThisComponent.CurrentController.Frame
dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")
dim args1(0) as new com.sun.star.beans.PropertyValue
args1(0).Name = "ToPoint"
args1(0).Value = "A1"
dispatcher.executeDispatch(document, ".uno:GoToCell", "", 0, args1())
end sub
Gruß Karo

Hallo Karo,
danke für deine Mühe!
Ich habe aber noch eine Frage dazu.
Muß ich beide Makros einfügen und wo muß ich diese einfügen, damit diese nach dem Start der Datei ständig ausgeführt werden?

Gruß
Harald

Verfasst: Sa, 02.06.2007 21:50
von Karolus
Hallo Harald

Einfügen musst du nur eins der beiden, und zwar über:
->Extras->Makros->Makros verwalten->OOobasic
Dort scrollst du links im Fenster ganz nach unten zu 'deimem Dokument-Standard' erstellst über die Schaltfläche 'Neu' ein neues Modul, in diesem löscht du die Einträge: 'Sub Main.....End Sub' und kopierst obigen Code hinein.

Allerdings dürfte dein Wunsch "es ständig laufen zu lassen" zu Problemen führen. evtl. kannst du es mit dem Ereignis: 'Dokument wurde geändert' verknüpfen, oder falls du das Einscannen manuell erledigst das Makro ebenfalls manuell (Tastaturkürzel ?) starten. Mehr Infos zum Einscannvorgang wären hilfreich.

Gruß Karo

Verfasst: So, 03.06.2007 08:36
von fuha
Hallo Karo,
also ich habe ja vorher viel mit Excel gemacht und muß mein Programm jetzt auf OpenOffice Cal anpassen. Alles klappt soweit bisher ganz gut. Bis auf das oben beschriebene Problem.
Also, es ist ein Programm, das in Zelle A1 einen Barcode braucht. Sobald dort einer steht, wird der dazugehörige Artikel ausgelesen.
In der Praxis würde das so aussehen.
Man öffnet die Datei und der Cursor steht schon in der Zelle A1 in der entsprechenden Tabelle. Es müßte das Makro eigentlich schon mit dem Öffnen der Datei starten.
Jetzt nehme ich einen Handscanner und und fahre über einen Barcode, dessen Ergebnis dann in Zelle A1 stehen muß. Wenn ich mit dem Handscanner einen anderen Barcode einlese muß das neue Ergebnis logischerweise wieder in Zelle A1 stehen, deshalb muß der Cursor nach dem Einlesen immer auf Zelle A1 zurückspringen. Wenn ich nun das Makro (es funktioniert übrigens) erst mit einem Tastaturkürzel starten muß, dann erfüllt das leider nicht ganz meinen Vorstellungen. Ich hoffe, es gibt doch noch eine Lösung.
Vielen herzlichen Dank bisher für deine Mühe!

Gruß Harald