Formel (Feldinhalt) per Makro in eine Variable kopieren

Das Tabellenkalkulationsprogramm

Moderator: Moderatoren

Dengue
*
Beiträge: 12
Registriert: Mi, 25.11.2009 14:27

Re: Formel (Feldinhalt) per Makro in eine Variable kopieren

Beitrag von Dengue »

mit folgender Funktion bekomme ich den Inhalt eines Feldes, aber nicht seine Formel..

msgbox ThisComponent.Sheets().getByName( "Daten_eingeben").getCellByPosition( 5, 21 ).getString()

bin für Hilfe dankbar!
Karolus
********
Beiträge: 7519
Registriert: Mo, 02.01.2006 19:48

Re: Formel (Feldinhalt) per Makro in eine Variable kopieren

Beitrag von Karolus »

Hallo
Was genau meinst du hier mit 'Feldinhalt' ? - Zellinhalt (Wert,Text oder Formel ) oder meinst du den Inhalt eines Formularfeldes.

Vielleicht beschreibst du nochmal genauer was "hinten rauskommen soll"

Evtl ist das auch eher ein Thema fürs Basic und Java - forum

Edit/
aha - die Formel bekommst du mit:
............getCellByPosition( 5, 21 ).formula() oder auch ..........formulalocal
edit ende/
Gruß Karo
LO7.4.7.2 debian 12(bookworm) auf Raspberry4b 8GB (64bit)
LO24.8.2.1 flatpak debian 12(bookworm) auf Raspberry4b 8GB (64bit)
Benutzeravatar
komma4
********
Beiträge: 5332
Registriert: Mi, 03.05.2006 23:29
Wohnort: Chon Buri Thailand Asia
Kontaktdaten:

Re: Formel (Feldinhalt) per Makro in eine Variable kopieren

Beitrag von komma4 »

Cheers
Winfried
aktuell: LO 5.3.5.2 30m0(Build:2) SUSE rpm, unter Linux openSuSE Leap 42.3 x86_64/KDE5
DateTime2 Einfügen von Datum/Zeit/Zeitstempel (als OOo Extension)
Dengue
*
Beiträge: 12
Registriert: Mi, 25.11.2009 14:27

Re: Formel (Feldinhalt) per Makro in eine Variable kopieren

Beitrag von Dengue »

@Karo

super!! :D Vielen Dank!! So scheint es zu klappen.
Dengue
*
Beiträge: 12
Registriert: Mi, 25.11.2009 14:27

Re: Formel (Feldinhalt) per Makro in eine Variable kopieren

Beitrag von Dengue »

Wie kann ich eine komplexe Formel in ein Feld kopieren (via Makro)?

Konkret folgende...

=WENN(B25="";WENN(ODER(TEIL(B22;1;1)="A";TEIL(B22;1;1)="a";TEIL(B22;1;1)="P";TEIL(B22;1;1)="S");WENN(B18="";WENN(F33="";SVERWEIS(F25;'file:///T:/Meldungen/PLZ_GA.ods'#$PlzGA.A2:B40856;2;0);SVERWEIS(F33;'file:///T:/Meldungen/PLZ_GA.ods'#$PlzGA.A2:B40856;2;0));SVERWEIS(B18;'file:///T:/Meldungen/PLZ_GA.ods'#$PlzGA.A2:B40856;2;0));SVERWEIS(F25;'file:///T:/Meldungen/PLZ_GA.ods'#$PlzGA.A2:B40856;2;0));SVERWEIS(B25;'file:///mnt/tausch/meldungen/ga_namen.ods'#$ga_namen.a2:B438;2;0))

einfach mittels setformula(..) gehts auch aufgrund der ' Zeichen nicht :(

Wie kann ich aus o.g. Text einen String erstellen? Mit den " Zeichen ist das ja auch ein Problem?
Karolus
********
Beiträge: 7519
Registriert: Mo, 02.01.2006 19:48

Re: Formel (Feldinhalt) per Makro in eine Variable kopieren

Beitrag von Karolus »

Hallo
die ganze Formel muss in " gestzt werden und die " innerhalb der Formel müssen mit entsprechend vielen weiteren " maskiert werden, ausserdem musst du bei der Übergabe deutsch lokalisierter Formeln '...formulalocal ' verwenden:

Code: Alles auswählen

...formulalocal =  "=WENN(B25="""";WENN(ODER(TEIL(B22;1;1)=""A"";TEIL(B22;1;1)=""a"";TEIL(B22;1;1)=""P"";TEIL(B22;1;1)=""S"");WENN(B18="""";WENN(F33="""";SVERWEIS(F25;'file:///T:/Meldungen/PLZ_GA.ods'#$PlzGA.A2:B40856;2;0);SVERWEIS(F33;'file:///T:/Meldungen/PLZ_GA.ods'#$PlzGA.A2:B40856;2;0));SVERWEIS(B18;'file:///T:/Meldungen/PLZ_GA.ods'#$PlzGA.A2:B40856;2;0));SVERWEIS(F25;'file:///T:/Meldungen/PLZ_GA.ods'#$PlzGA.A2:B40856;2;0));SVERWEIS(B25;'file:///mnt/tausch/meldungen/ga_namen.ods'#$ga_namen.a2:B438;2;0))"
Ich würde an deiner Stelle darüber nachdenken solche Formelmonster zu vermeiden, und zumindest statt direkter 'file:///...' verknüpfungen mit DDE arbeiten.

Gruß Karo
LO7.4.7.2 debian 12(bookworm) auf Raspberry4b 8GB (64bit)
LO24.8.2.1 flatpak debian 12(bookworm) auf Raspberry4b 8GB (64bit)
Dengue
*
Beiträge: 12
Registriert: Mi, 25.11.2009 14:27

Re: Formel (Feldinhalt) per Makro in eine Variable kopieren

Beitrag von Dengue »

Vielen Dank.

Ich versuche hier nur das Programm von einem anderen zu verändern. Wenn ich den Pfad in einer Variable habe, kann ich den dann einfach einfügen? quasi ".."&Pfad&"..."?

Kannst du mir das mit der DDE kurz erklären? Danke.
Karolus
********
Beiträge: 7519
Registriert: Mo, 02.01.2006 19:48

Re: Formel (Feldinhalt) per Makro in eine Variable kopieren

Beitrag von Karolus »

Hallo
Es gibt einen Formelassistenten indem darftst du ruhig mal nach "DDE" suchen -
etwa so:
DDE("soffice";"T:\Meldungen\PLZ_GA.ods";"#$PlzGA.A2:B40856";0)...........statt file:///T:/Meldungen/PLZ_GA.ods'#$PlzGA.A2:B40856
....quasi ".."&Pfad&"..."?
ja!
Gruß Karo
LO7.4.7.2 debian 12(bookworm) auf Raspberry4b 8GB (64bit)
LO24.8.2.1 flatpak debian 12(bookworm) auf Raspberry4b 8GB (64bit)
Dengue
*
Beiträge: 12
Registriert: Mi, 25.11.2009 14:27

Re: Formel (Feldinhalt) per Makro in eine Variable kopieren

Beitrag von Dengue »

Entschuldige ;)
noch eine letzte Frage. Wenn ich die Variable pfad = "file://T:/Meldungen/" einfüge macht er mir in der Formel Kleinbuchstaben daraus z.B. ///t:/meldungen/ und somit funktioniert die Formel nicht mehr. Gibt es eine Möglichkeit die Groß-/Kleinschreibung zu erhalten??

"=WENN(B25="""";WENN(ODER(TEIL(B22;1;1)=""A"";TEIL(B22;1;1)=""a"";TEIL(B22;1;1)=""P"";TEIL(B22;1;1)=""S"");WENN(B18="""";WENN(F33="""";SVERWEIS(F25;'"+Pfad+"PLZ_GA.ods'#$PlzGA.A2:B40856;2;0);SVERWEIS(F33;'"+Pfad+"PLZ_GA.ods'#$PlzGA.A2:B40856;2;0));SVERWEIS(B18;'"+Pfad+"PLZ_GA.ods'#$PlzGA.A2:B40856;2;0));SVERWEIS(F25;'"+Pfad+"PLZ_GA.ods'#$PlzGA.A2:B40856;2;0));SVERWEIS(B25;'"+Pfad+"GA_Namen.ods'#$ga_namen.a2:B438;2;0))"

EDIT: Wenn ich mir den obigen Text in einer msgbox ausgeben lassen funktioniert die Gro-/Kleinschreibung nur im Feld sind es Kleinbuchstaben
Zuletzt geändert von Dengue am Di, 15.12.2009 17:00, insgesamt 1-mal geändert.
Karolus
********
Beiträge: 7519
Registriert: Mo, 02.01.2006 19:48

Re: Formel (Feldinhalt) per Makro in eine Variable kopieren

Beitrag von Karolus »

Hallo
Ich hab doch vorhin geschrieben wie du die "anführungszeichen innerhalb des Formelstrings behandeln musst - versuchs doch mal wenigstens das selbst umzusetzen!
Gruß Karo
LO7.4.7.2 debian 12(bookworm) auf Raspberry4b 8GB (64bit)
LO24.8.2.1 flatpak debian 12(bookworm) auf Raspberry4b 8GB (64bit)
Dengue
*
Beiträge: 12
Registriert: Mi, 25.11.2009 14:27

Re: Formel (Feldinhalt) per Makro in eine Variable kopieren

Beitrag von Dengue »

sorry aber was hat das mit den " zu tun ? Du hast doch auch geschrieben, dass es mit "..."+Pfad+"..." geht!? nur werden es halt kleinbuchstaben...

Code: Alles auswählen

hstr = "=WENN(B25="""";WENN(ODER(TEIL(B22;1;1)=""A"";TEIL(B22;1;1)=""a"";TEIL(B22;1;1)=""P"";TEIL(B22;1;1)=""S"");WENN(B18="""";WENN(F33="""";SVERWEIS(F25;'"+Pfad+"PLZ_GA.ods'#$PlzGA.A2:B40856;2;0);SVERWEIS(F33;'"+Pfad+"PLZ_GA.ods'#$PlzGA.A2:B40856;2;0));SVERWEIS(B18;'"+Pfad+"PLZ_GA.ods'#$PlzGA.A2:B40856;2;0));SVERWEIS(F25;'"+Pfad+"PLZ_GA.ods'#$PlzGA.A2:B40856;2;0));SVERWEIS(B25;'"+Pfad+"GA_Namen.ods'#$ga_namen.a2:B438;2;0))"
ThisComponent.Sheets().getByName( "Daten_eingeben").getCellByPosition( 1, 37 ).formulalocal = "=WENN(B25="""";WENN(ODER(TEIL(B22;1;1)=""A"";TEIL(B22;1;1)=""a"";TEIL(B22;1;1)=""P"";TEIL(B22;1;1)=""S"");WENN(B18="""";WENN(F33="""";SVERWEIS(F25;'"+Pfad+"PLZ_GA.ods'#$PlzGA.A2:B40856;2;0);SVERWEIS(F33;'"+Pfad+"PLZ_GA.ods'#$PlzGA.A2:B40856;2;0));SVERWEIS(B18;'"+Pfad+"PLZ_GA.ods'#$PlzGA.A2:B40856;2;0));SVERWEIS(F25;'"+Pfad+"PLZ_GA.ods'#$PlzGA.A2:B40856;2;0));SVERWEIS(B25;'"+Pfad+"GA_Namen.ods'#$ga_namen.a2:B438;2;0))"
msgbox hstr
Wie gesagt in einer Messagebox habe ich de Groß- und Kleinschreibung in dem entsprechenden Feld aber nur Kleinbuchstaben? Das verstehe ich echt nicht. Ersetze ich die Variable Pfad durch den entsprechenden //... dann habe ich wieder Großbuchstaben
Karolus
********
Beiträge: 7519
Registriert: Mo, 02.01.2006 19:48

Re: Formel (Feldinhalt) per Makro in eine Variable kopieren

Beitrag von Karolus »

Hallo
Wie sieht der Inhalt der der Variablen Pfad aus ?
sorry , aber ich kann das in dem Umfang nicht nachstellen um dir konkret zu sagen was richtig oder falsch ist. Analysiere mal die übergebene Formel im Formelassistenten da wird dann evtl.klar was du noch ändern musst.

Oder bau das erstmal mit einer kurzen Bsplformel zusammen.

Gruß Karo
LO7.4.7.2 debian 12(bookworm) auf Raspberry4b 8GB (64bit)
LO24.8.2.1 flatpak debian 12(bookworm) auf Raspberry4b 8GB (64bit)
Benutzeravatar
balu
********
Beiträge: 3812
Registriert: Fr, 24.08.2007 00:28
Wohnort: Warstein

Re: Formel (Feldinhalt) per Makro in eine Variable kopieren

Beitrag von balu »

Hallo Leute,

eine unwissende Frage.
Wenn im Makro die Variable "Pfad" deklariert ist, wird dann in der Formel die Variable mit dem Pluszeichen + eingesetzt, oder so wie in einer Zelle mit dem Kaufmansund &?

Dengue hat geschrieben: Ersetze ich die Variable Pfad durch den entsprechenden //... dann habe ich wieder Großbuchstaben
Vielleicht liegt es wohl daran, dass man den =file://..Pfad nicht so einfach zerstückeln, variabel machen kann. Und folgedessen funktioniert dann die Formel auch nicht.
Aus

Code: Alles auswählen

='file:///T:/Meldungen/PLZ_GA.ods'#$PlzGA.A2:B40856
kann man in einer Tabellenzelle nicht so einfach das hier

Code: Alles auswählen

='"Pfad"PLZ_GA.ods'#$PlzGA.A2:B40856
machen.
Wobei Pfad jetzt ein zugeordneter Name (Strg+F3) für T:/Meldungen/ ist. Wenn mann das Variable gestallten will, dann würde das jetzt in ungefähr so aussehen.

Code: Alles auswählen

=INDIREKT(VERKETTEN("'file:///";Pfad;"'#$";"PlzGA.A2:B40856"))
Und ich denke mir mal, dass was in einer Tabellenzelle gilt, dass gilt dann auch im Makro. Zumindest in diesem speziellen Fall.

Auch ich würde zu dem Einsatz von =DDE() raten, denn damit dürfte das Thema "Variabler Pfad" viel leichter zu realisieren sein.



Gruß
balu
Sei öfter mal ein Faultier, sag öfter mal "Ach was!" Dann kriegst du keinen Herzinfarkt, und hast ne menge Spass.

wehr rächtschraipfähler findet khan si behalden :D
Antworten