Seite 1 von 1

wie kann man Text aus Dialog in Zellen einfügen

Verfasst: So, 25.03.2007 18:42
von mr_weeds
Anfänger sucht Hilfe!

1.)ich habe keine Infos gefunden, wie man den eingegebenen Text eines Textfeldes eines Dialoges in eine Zelle eintragen kann,

2.)dabei sollen aber nur 20 Zeichen begrenzt eingetragen werden, damit ist die Zelle voll und es soll die Zelle nächste dran sein, sozusagen Splitten des Textes (wenn möglich Trennung nach Worten und nicht nach Zeichen).
Ist so etwas überhaupt möglich?

vielen Dank im Voraus für Eure Bemühungen

Verfasst: Mo, 26.03.2007 08:34
von Toxitom
Hey mr_weeds,

alles möglich, nur, du musst es halt programmieren ;-)

Das Prinzip ist einfach:

Code: Alles auswählen

REM Zellobjekt A! des ersten Tabellenblattes
oZelle = thisComponent.sheets(0).getCellRangeByName("A1")
REM Inhalt des Textfeldes "text1" des Dialoges "oDlg"
sText = oDlg.getControl("text1").text
REM Text in Zelle schreiben:
oZelle.string = sText
Willst du den Text vorher analysieren und kürzen, so kannst du aas ebenfalls alles machen - die Varaible "sText" hat je nun den Inhalt :-)

Gruss
Thomas

Verfasst: Mo, 26.03.2007 11:26
von mr_weeds
ich glaube ich muss jetzt meine Unfähigkeit zur Schau stellen. Es geht nicht, welche Variablen muss ich noch benennen?

Danke

Verfasst: Mo, 26.03.2007 12:15
von Toxitom
Hey mr_weeds,

ich hab ja nur das Prinzip dargestellt - das musst du natürlich für deine Verhältnisse anpassen.

Poste einfach mal den Code, den du schon hast - vom Dialog bis hin zu den verbundenen Schaltflächen - dann sehn wir weiter.

Gruss
Thomas

Verfasst: Mo, 26.03.2007 12:47
von mr_weeds
der Dialog besitzt nur das Textfenster und eine Schaltfläche, diese soll den Vorgang auslösen. Zum Öffnen des Dialoges verwende ich folgendes:

Code: Alles auswählen

Dim MyDlg as Object
Dialoglibraries.Loadlibrary("Standard")
MyDlg= CreateUnoDialog(Dialoglibraries.Standard.Dialog1)
MyDlg.execute()

Verfasst: Mo, 26.03.2007 18:10
von Toxitom
Gut, dann musst du als erstes "MyDlg" vor der ersten sub oder function definieren - als globale Varaible. In meinen Codezeilen ersetzt du dann "oDlg" mit "MyDlg". Es sollte dannn so ähnlich aussehen:

Code: Alles auswählen

Dim MyDlg as Object

sub DialogAufrufen
  Dialoglibraries.Loadlibrary("Standard")
  MyDlg= CreateUnoDialog(Dialoglibraries.Standard.Dialog1)
  MyDlg.execute() 
end sub

sub WertEintragen
  MyDlg.endExecute()
  REM Zellobjekt A! des ersten Tabellenblattes
  oZelle = thisComponent.sheets(0).getCellRangeByName("A1")
  REM Inhalt des Textfeldes "text1" des Dialoges "MyDlg"
  sText = MyDlg.getControl("text1").text
  REM Text in Zelle schreiben:
  oZelle.string = sText
end sub
Wenn jetzt noch das Textfeld deines Dialoges den Namen "text1" trägt (Eigenschaften) und du das Makro "WertEintragen" dem Ereignis "Auslösen" der Schaltfläche zuordnest, dann hast du, was du willst. Der Inhalt wird in Zelle A1 des ersten Tabellenblattes geschrieben.

Gruss
Thomas

Verfasst: Di, 27.03.2007 10:51
von mr_weeds
funktioniert, danke für die schnelle kompetente Hilfe

Text auf mehrere Zellen aufteilen

Verfasst: Di, 27.03.2007 11:13
von Hömmelmann
Hallo mr_weeds

In deiner Frage schreibst du:

<<2.)dabei sollen aber nur 20 Zeichen begrenzt eingetragen werden, damit ist die Zelle voll und es soll die Zelle nächste dran sein, sozusagen Splitten des Textes (wenn möglich Trennung nach Worten und nicht nach Zeichen).>>

Ich habe den Code <WertEintragen> dahingehend geändert, dass der Inhalt der Variablen sText auf die Zellen A1, A2, A3,.... aufgeteilt wird:

sub WertEintragen
dim teilstring as string
dim zeile as integer

MyDlg.endExecute()

REM Inhalt des Textfeldes "text1" des Dialoges "MyDlg"
sText = MyDlg.getControl("text1").text

doc=thiscomponent
MySheet=doc.sheets(0)
sText=MySheet.getcellbyposition(0,0).string
zeile = 0
do until len(sText)=0
teilstring=left(sText,20)
if instr(teilstring," ")>0 then
do until right(teilstring,1)=" "
teilstring = left(teilstring,len(teilstring)-1)
loop
end if
MySheet.getcellbyposition(2,zeile).string = teilstring
zeile=zeile + 1
sText=right(sText,len(sText)-len(teilstring))
loop
end sub

Gruß, Friedhelm

Verfasst: Di, 27.03.2007 11:51
von mr_weeds
jetzt bin ich überwältigt!
Danke
Danke
Danke

Verfasst: Di, 27.03.2007 12:48
von mr_weeds
aber es funktioniert bei mir nicht :(
die Zellen bleiben leer

Verfasst: Di, 27.03.2007 13:48
von Hömmelmann
Hallo nochmal.

logisch bleiben deine Zellen leer. Mein Fehler. Ich habe (da ich natürlich den Dialog nicht habe, statt dessen den Inhalt der Zelle A1 genommen - also den Text darin erfasst)
Leider habe ich die Zuweisung für die Variable sText nicht herausgenommen. Wenn du also die Zeile

Code: Alles auswählen

 sText=MySheet.getcellbyposition(0,0).string
aus dem Makro löscht, müsste es klappen.


Gruß, Friedhelm

Verfasst: Di, 27.03.2007 22:55
von mr_weeds
super, geht
danke :D

Verfasst: Mo, 02.04.2007 21:53
von mr_weeds
Hallo
ich brauche leider noch mal Hilfe. Das letzte Wort steht immer in einer extra Zeile, egal ob die vorhergehende 20 Zeichen erreicht hat.
ich hab es leider nicht hinbekommen die Formel zu ändern :(