Makro für Calc
Moderator: Moderatoren
-
- *
- Beiträge: 13
- Registriert: Mi, 04.03.2015 15:42
Makro für Calc
Hallo Leute, habe in Calc folgendes Makro aufgezeichnet:
sub Produkt
rem ----------------------------------------------------------------------
rem define variables
dim document as object
dim dispatcher as object
rem ----------------------------------------------------------------------
rem get access to the document
document = ThisComponent.CurrentController.Frame
dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")
rem ----------------------------------------------------------------------
dim args1(0) as new com.sun.star.beans.PropertyValue
args1(0).Name = "StringName"
args1(0).Value = "=E10*F10"
dispatcher.executeDispatch(document, ".uno:EnterString", "", 0, args1())
end sub
Das Makro funktioniert auch, aber leider wird =E10*F10 immer ausgeführt, auch wenn in z.B. in Zelle G15 befinde. Das Makro soll aber immer die beiden Zellen links neben der Zelle multiplizieren, in der ich mich befinde.
sub Produkt
rem ----------------------------------------------------------------------
rem define variables
dim document as object
dim dispatcher as object
rem ----------------------------------------------------------------------
rem get access to the document
document = ThisComponent.CurrentController.Frame
dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")
rem ----------------------------------------------------------------------
dim args1(0) as new com.sun.star.beans.PropertyValue
args1(0).Name = "StringName"
args1(0).Value = "=E10*F10"
dispatcher.executeDispatch(document, ".uno:EnterString", "", 0, args1())
end sub
Das Makro funktioniert auch, aber leider wird =E10*F10 immer ausgeführt, auch wenn in z.B. in Zelle G15 befinde. Das Makro soll aber immer die beiden Zellen links neben der Zelle multiplizieren, in der ich mich befinde.
Re: Makro für Calc
Das Folgende ist nicht sehr elegant programmiert, sollte aber funktionieren:
Gruß
Stephan
Code: Alles auswählen
sub Produkt
rem ----------------------------------------------------------------------
rem define variables
dim document as object
dim dispatcher as object
rem ----------------------------------------------------------------------
rem get access to the document
document = ThisComponent.CurrentController.Frame
dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")
rem ----------------------------------------------------------------------
dim args1(0) as new com.sun.star.beans.PropertyValue
args1(0).Name = "StringName"
'---------------------------------
tmp_txt = ""
tmp = ThisComponent.getCurrentSelection
x = tmp.RangeAddress
x_col = x.StartColumn
x_row = x.StartRow
xx = ThisComponent.CurrentController.ActiveSheet.getCellbyPosition(x_col-2, x_row)
xxa = Split(xx.AbsoluteName, ".")
xxb = Split(xxa(1), "$")
xxc = Join(xxb(),"")
tmp_txt = "=" & xxc & "*"
xx = ThisComponent.CurrentController.ActiveSheet.getCellbyPosition(x_col-1, x_row)
xxa = Split(xx.AbsoluteName, ".")
xxb = Split(xxa(1), "$")
xxc = Join(xxb(),"")
tmp_txt = tmp_txt & xxc
'---------------------------------
args1(0).Value = tmp_txt
dispatcher.executeDispatch(document, ".uno:EnterString", "", 0, args1())
end sub
Gruß
Stephan
Re: Makro für Calc
Hallo,
warum machst du die Frage noch einmal auf?
siehe: viewtopic.php?f=18&t=65462&p=253699#p253699
warum machst du die Frage noch einmal auf?
siehe: viewtopic.php?f=18&t=65462&p=253699#p253699
Gruß,
mikeleb
mikeleb
-
- *
- Beiträge: 13
- Registriert: Mi, 04.03.2015 15:42
Re: Makro für Calc
Hallo Stephan, Makro funktioniert prima, vielen Dank. Habe Makro für Plus, Minus,Dividieren selbst ändern können. Könntest Du mir noch die Änderung statt Produkt für *% und -% durchgeben. Dann wäre ich Dir sehr dankbar.
Ich befinde mich z. B. in Zelle H15, in Zelle F15 steht 100, in Zelle G15 steht 10%, dann soll das Makro =F15+F15*G15 rechnen, so dass 110 rauskommt. Genauso statt plus mit Minus
Gruß plutoluene22
Ich befinde mich z. B. in Zelle H15, in Zelle F15 steht 100, in Zelle G15 steht 10%, dann soll das Makro =F15+F15*G15 rechnen, so dass 110 rauskommt. Genauso statt plus mit Minus
Gruß plutoluene22
-
- *
- Beiträge: 13
- Registriert: Mi, 04.03.2015 15:42
Re: Makro für Calc
Hallo mikeleb, habe die Frage in abgewandelter Form nochmals gestellt, da sie bei der ersten Frage nicht beantwortet wurde bzw. nicht funktioniert hat.
Gruß
plutoluene22
Gruß
plutoluene22
Re: Makro für Calc
Hallo,
clag hatte dir ein umfangreiches Tool geschrieben, das sehr gut funktioniert und dann war ohne weitere Erklärung irgendwie alles falsch ...
clag hatte dir ein umfangreiches Tool geschrieben, das sehr gut funktioniert und dann war ohne weitere Erklärung irgendwie alles falsch ...
Gruß,
mikeleb
mikeleb
-
- *
- Beiträge: 13
- Registriert: Mi, 04.03.2015 15:42
Re: Makro für Calc
Sorry mikeleb, hatte das Tool von clag ausprobiert, bin aber nicht mit klargekommen, daher jetzt die 2. Anfrage mit der ich wunderbar klarkomme.
Gruß plutoluene22
Gruß plutoluene22
Re: Makro für Calc
Ich befinde mich z. B. in Zelle H15, in Zelle F15 steht 100, in Zelle G15 steht 10%, dann soll das Makro =F15+F15*G15 rechnen, so dass 110 rauskommt.
Code: Alles auswählen
sub Produkt
rem ----------------------------------------------------------------------
rem define variables
dim document as object
dim dispatcher as object
rem ----------------------------------------------------------------------
rem get access to the document
document = ThisComponent.CurrentController.Frame
dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")
rem ----------------------------------------------------------------------
dim args1(0) as new com.sun.star.beans.PropertyValue
args1(0).Name = "StringName"
'---------------------------------
tmp_txt = ""
tmp = ThisComponent.getCurrentSelection
x = tmp.RangeAddress
x_col = x.StartColumn
x_row = x.StartRow
If Right(ThisComponent.CurrentController.ActiveSheet.getCellbyPosition(x_col-1, x_row).FormulaLocal, 1) = "%" Then
xx = ThisComponent.CurrentController.ActiveSheet.getCellbyPosition(x_col-2, x_row)
xxa = Split(xx.AbsoluteName, ".")
xxb = Split(xxa(1), "$")
xxc = Join(xxb(),"")
tmp_txt = "=" & xxc & "+(" & xxc & "*"
xx = ThisComponent.CurrentController.ActiveSheet.getCellbyPosition(x_col-1, x_row)
xxa = Split(xx.AbsoluteName, ".")
xxb = Split(xxa(1), "$")
xxc = Join(xxb(),"")
tmp_txt = tmp_txt & xxc & ")"
Else
xx = ThisComponent.CurrentController.ActiveSheet.getCellbyPosition(x_col-2, x_row)
xxa = Split(xx.AbsoluteName, ".")
xxb = Split(xxa(1), "$")
xxc = Join(xxb(),"")
tmp_txt = "=" & xxc & "*"
xx = ThisComponent.CurrentController.ActiveSheet.getCellbyPosition(x_col-1, x_row)
xxa = Split(xx.AbsoluteName, ".")
xxb = Split(xxa(1), "$")
xxc = Join(xxb(),"")
tmp_txt = tmp_txt & xxc
End If
'---------------------------------
args1(0).Value = tmp_txt
dispatcher.executeDispatch(document, ".uno:EnterString", "", 0, args1())
end sub
-
- *
- Beiträge: 13
- Registriert: Mi, 04.03.2015 15:42
Re: Makro für Calc
Hallo Stepfan,
vielen, vielen Dank, funktioniert alles wunderbar.
Gruß plutoluene22
vielen, vielen Dank, funktioniert alles wunderbar.
Gruß plutoluene22
-
- *
- Beiträge: 13
- Registriert: Mi, 04.03.2015 15:42
Re: Makro für Calc
Hallo Stepfan, da Du mir so schön geholfen hast, hier noch eine Frage.
Ich hatte in Excel ein Makro, mit dem ich eine bestimmte Tabelle ( hier "Lotto")öffnen konnte:
Sub Lotto()
Workbooks.Open Filename:="D:\Eigene Dateien\Kalkulationen\Lotto neu.xls", UpdateLinks:=False
End Sub
Wie heißt das Ganze in Calc.
Habe schon alles durchsucht und nichts passendes gefunden.
Gruß plutoluene22
Ich hatte in Excel ein Makro, mit dem ich eine bestimmte Tabelle ( hier "Lotto")öffnen konnte:
Sub Lotto()
Workbooks.Open Filename:="D:\Eigene Dateien\Kalkulationen\Lotto neu.xls", UpdateLinks:=False
End Sub
Wie heißt das Ganze in Calc.
Habe schon alles durchsucht und nichts passendes gefunden.
Gruß plutoluene22
Re: Makro für Calc
Ich kenne mich mit Makros leider nicht aus, aber Google-Suche nach "OpenOffice Makro Datei öffnen" findet diverse Infos, z.B.:
https://wiki.openoffice.org/wiki/DE/Mak ... C3.B6ffnen
Hylli
https://wiki.openoffice.org/wiki/DE/Mak ... C3.B6ffnen
Hylli
Ein Dankeschön für eine Lösung tut nicht weh!
Wer eine Lösung selbst findet, sollte die für die Nachwelt auch posten!
Geschäftlich: LibreOffice 6.0.x ("Still") unter Windows 10 64bit
Privat: LibreOffice 6.0.x ("Still") unter Linux Mint 19.x Cinnamon 64bit
Wer eine Lösung selbst findet, sollte die für die Nachwelt auch posten!
Geschäftlich: LibreOffice 6.0.x ("Still") unter Windows 10 64bit
Privat: LibreOffice 6.0.x ("Still") unter Linux Mint 19.x Cinnamon 64bit
Re: Makro für Calc
Hallo,
http://www.dannenhoefer.de/faqstarbasic ... ffnen.html
Alles ist ziemlich viel ...Habe schon alles durchsucht und nichts passendes gefunden.
http://www.dannenhoefer.de/faqstarbasic ... ffnen.html
Gruß,
mikeleb
mikeleb
Re: Makro für Calc
Hallo,
also wenn es nur um das Öffnen der Tabelle aus einer anderen Tabelle heraus ist,
dann versuch mal Menü Einfügen->Hyperlink.
Dann brauchst Du kein Makro.
Gruß Jörg
also wenn es nur um das Öffnen der Tabelle aus einer anderen Tabelle heraus ist,
dann versuch mal Menü Einfügen->Hyperlink.
Dann brauchst Du kein Makro.
Gruß Jörg
Gruß Jörg
Win 10 Pro AOO 4.1.15
Win 10 Pro AOO 4.1.15
-
- *
- Beiträge: 13
- Registriert: Mi, 04.03.2015 15:42
Re: Makro für Calc
Hallo mikeleb , dein Hinweis auf Dannenhoefer hat mir geholfen.
Vielen Dank
plutoluene22
Vielen Dank
plutoluene22