Formel (Feldinhalt) per Makro in eine Variable kopieren

Antwort erstellen


BBCode ist eingeschaltet
[img] ist ausgeschaltet
[url] ist eingeschaltet
Smileys sind ausgeschaltet

Die letzten Beiträge des Themas
   

Ansicht erweitern Die letzten Beiträge des Themas: Formel (Feldinhalt) per Makro in eine Variable kopieren

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

von balu » Di, 15.12.2009 18:58

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

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

von Karolus » Di, 15.12.2009 18:06

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

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

von Dengue » Di, 15.12.2009 17:05

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

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

von Karolus » Di, 15.12.2009 17:00

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

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

von Dengue » Di, 15.12.2009 16:42

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

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

von Karolus » Di, 15.12.2009 16:38

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

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

von Dengue » Di, 15.12.2009 16:24

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.

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

von Karolus » Di, 15.12.2009 16:16

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

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

von Dengue » Di, 15.12.2009 15:32

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?

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

von Dengue » Mi, 25.11.2009 16:04

@Karo

super!! :D Vielen Dank!! So scheint es zu klappen.

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

von komma4 » Mi, 25.11.2009 15:42

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

von Karolus » Mi, 25.11.2009 15:40

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

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

von Dengue » Mi, 25.11.2009 15:33

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!

Nach oben