Text von writer nach thunderbird

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: Text von writer nach thunderbird

Re: Text von writer nach thunderbird

von sven-my » Mo, 19.01.2009 22:23

Hallo Hawk, hallo Jürgen, Ihr geduldigen Helfer,

nun hab' ich's ! So sieht der Code aus zum Zerpflücken des Betreff-String:

Code: Alles auswählen

Sub Main
BasicLibraries.LoadLibrary("Tools")
xL = instr(betrA, "/")
xR = instr(betrA, "-")

if xL <> 0 then 
	betrL = left(betrA, xL-1) + " bzw. "
	betrR = right(betrA, len(betrA)-xL) 
else
	betrL = betrA	
end if	

if xR <> 0 then
	betrR = right(betrA, len(betrA)-xR)
	betr = betrL + left(betrL,len(betrL)-7) + betrR
else
	betr = betrL + betrR
end if

End Sub
betrA = "Bootbauer" ergibt "Bootsbauer"
betrA = "Bootsbauer / -helfer" ergibt "Bootsbauer bzw. Bootsbauerhelfer"
betrA = "Bootsbauer / Tischler" ergibt "Bootsbauer bzw. Tischler"

Nun kann ich mich dem Rest widmen.

gruß
sven-my

Re: Text von writer nach thunderbird

von sven-my » Mo, 19.01.2009 18:55

Hallo Jürgen, hallo Hawk,

ich glaube zu wissen wo der Fehler lag --- nur habe ich keine Ahnung, wie beheben.

im Betreff steht bei meinem Test-Dokument :

Bootsbauer / -helfer

der Betreff wird korrekt übertragen, aber alles, was danach kommt, wird abgeschnitten.

Es stören beide Zeichen, also ' / ' und ' - ' --- ich habe erst den Slash, dann den Bindestrich weggenommen, war egal; erst als ich Beides aus dem Dokument entfernt habe, wurde auch das Attachment wieder an Tb geschickt.

Heißt also, den Betreff zerlegen, und dann wieder zusammenfügen, wobei dann " /- " durch "bzw. " ersetzt werden muß.

Jetzt ist mir auch klar, weshalb es ab und zu mal klappte : wenn eben diese Zeichen nicht im Betreff waren.

gruß
sven-my

Re: Text von writer nach thunderbird

von sven-my » Mo, 19.01.2009 17:47

Hallo Jürgen,

Dein Code, blank in ein eigenes Modul eingegeben, funktioniert auch bei mir (win98SE). Es ist auch das Gleiche mit dem Komma, es wird einfach nicht mit übertragen, auch wenn ich es als chr(44) anhänge. Ist aber nicht so schlimm, Hauptsache ist, daß ich das Attachment an Tb gesendet gekomme.

Die Sucherei nach dem richtigen Anhang, bei vielen ähnlich aussehenden Dateien, ist reichlich fehlerträchtig --- und arg peinlich.

Heut abend muß ich mal sehen, wie es klappt, wenn ich die entsprechenden Daten aus dem Dokument hole.

Erstmal vielen Dank --- bis zu nächsten Problem. :)


gruß
sven-my

Re: Text von writer nach thunderbird

von turtle47 » Mo, 19.01.2009 16:38

Hi sven_my,

ich habe das Ganze jetzt mal auf ein Minimum reduziert, welches unter XP, OOo 3.0 und 2.4.1 problemlos läuft.

Code: Alles auswählen

sub SendMail_1
oDoc = ThisComponent
attN = "C:\xxxxxxxxxxxx\" & "xxxxxxxxxxxxxx.pdf" 'Anpassen!!
attA = ConvertToURL (attN)
Empf ="Mailto@server.de"
betr= "Testmail"
anrT= "Sehr geehrte Damen und Herren,"
shell("C:\Programme\Mozilla Thunderbird\thunderbird.exe",1,"-compose to=" + empf + ",subject=" + betr + ",body="+anrT+",attachment="+attA)
end sub
Was komischerweise nicht funktioniert ist das Übertragen des Kommas in der Anrede. ????

Viel Erfolg.

Jürgen

Re: Text von writer nach thunderbird

von sven-my » Mo, 19.01.2009 15:40

Hallo Karolus,

herzlichen Dank !!! Der Fehler ist beseitigt. (Ich frage mich nur, weshalb es mal funktionierte, und mal nicht)

Aber das attachment bekomme ich immer noch nicht nach Thunderbird.

So habe ich probiert:

Code: Alles auswählen

rem ===================================
sub SendMail

BasicLibraries.LoadLibrary("Tools")

oDoc = ThisComponent
Title = oDoc.DocumentInfo.Title
oUrl = oDoc.Url
anha = left(right(oUrl,6),2)
ordner = "writer\"
if anha <> "SR" then exit sub

betr = oDoc.getTextTables().getByName("Tabelle2").getCellByPosition(0,1).string 	'Betreff
empf = oDoc.getTextTables().getByName("eMail").getCellByPosition(1,0).string		'eMail-Adresse
anrT = oDoc.getTextTables().getByName("AnredeText").getCellByPosition(0,0).string	'AnredeText
FileN = FileNameoutofPath(oUrl)

attN = "D:\OpenOffice\"+ordner+left(FileN,37)+"-SR.pdf"						
attA = ConvertToURL (attN)

1.Versuch (mit body, mit ConvertToURL)

Code: Alles auswählen

kMail = empf+",subject="+betr+",body="+anrT+",attachment="+atta
shell("E:\MozillaThunderbird\thunderbird.exe",1,"-compose to="+kMail)
2.Versuch (mit body, nicht ConvertToURL)

Code: Alles auswählen

kMail = empf+",subject="+betr+",body="+anrT+",attachment="+attN
shell("E:\MozillaThunderbird\thunderbird.exe",1,"-compose to="+kMail)
3.Versuch (ohne body, mit ConvertToURL)

Code: Alles auswählen

kMail = empf+",subject="+betr+",attachment="+atta
shell("E:\MozillaThunderbird\thunderbird.exe",1,"-compose to="+kMail)
4.Versuch (ohne body, nicht ConvertToURL)

Code: Alles auswählen

kMail = empf+",subject="+betr+",attachment="+attN
shell("E:\MozillaThunderbird\thunderbird.exe",1,"-compose to="+kMail)


end sub
rem ===================================
langsam bin ich am verzweifeln --- vorallem, weil es schon mal geklappt hat, ich aber nich mehr nachvollziehen kann, was da anders war.

Wie schon gesagt: Adresse und Betreff kommen in Tb 2.0.0.19 von OpenOffice 2.41 an.

gruß
sven-my

Re: Text von writer nach thunderbird

von Karolus » Mo, 19.01.2009 14:09

Hallo
Du hattest vorher die Bibliothek nicht aktiviert in der sich "FileNameoutofPath" befindet, das kannst du im Code selbst mit:
BasicLibraries.LoadLibrary("Tools")
erledigen.
http://www.dannenhoefer.de/faqstarbasic ... ml#Zweig36

Gruß Karo

Re: Text von writer nach thunderbird

von sven-my » Mo, 19.01.2009 00:27

Hallo Hawk,

erstmal vielen Dank für Die Arbeit, die Du Dir gemacht hast.

Nach anpassen der Textmarke 1 & 2, dem Pfad zu Thunderbird und attN =, kam leider die Enttäuschung --- das gleiche Problem, wie zuvor.

Empfängeradresse und Betreff werden richtig in Tb eingetragen, aber Body und Attachment, die in msgbox noch angezeigt werden, sind nicht vorhanden.
Wobei aber der Body nur aus dem AnredeText besteht (Sehr geehrte Damen und Herren,) ich nehme an, das sich die Funktion "holMyCursorString" am 'linefeed' verschluckt; das Komma habe ich schon entfernt, und es nochmals probiert --- für ",body=" zeigt die msgbox nur den Anredetext an.

Beiß' Dich jetzt aber nicht an dem ",body=" fest; da es sich meist um die gleichen Floskeln handelt, habe ich das in Tb über QuickText und eine Adressbuch-Erweiterung gelöst.

Wichtig ist mir,daß ich das Attachment nach Tb bekomme.



So sehen etwa (hier mit Blindtext von OO nachgestellt) die Schreiben aus, die per Mail weg sollen:
([textmarke2] wird durch das Einfügen von einem Autotext verschoben.)

----------------
[textmarke1]Sehr geehrte Damen und Herren,

er hörte leise Schritte hinter sich, und das bedeutete http://xxxxxxxxx.de/ geht nicht.

Wer würde ihm schon folgen, spät in der Nacht und dazu noch in dieser engen Gasse mitten im übel beleumundeten Hafenviertel? Gerade jetzt, wo er das Ding seines Lebens gedreht hatte und mit der Beute verschwinden wollte!

Hatte einer seiner zahllosen Kollegen dieselbe Idee gehabt, ihn beobachtet und abgewartet, um ihn nun um die Früchte seiner Arbeit zu erleichtern? Oder gehörten die Schritte hinter ihm zu einem der unzähligen Gesetzeshüter dieser Stadt, und die stählerne Acht um seine Handgelenke würde gleich zuschnappen?

[textmarke2]Langsam bewegte er sich auf die offene Tür zu.


Mit freundlichen Grüßen
Absender
----------------

Vorhin hat, während ich an dem Makro bastelte, ein anderes Programm mein win98 zum Absturz gebracht.
Nachdem ich wieder gestartet habe, und OO das Dokument wiederhergestellt hatte, bekomme ich beim Aufruf des Makros folgende Fehlermeldung:

Code: Alles auswählen

FileN = FileNameoutofPath(oUrl)
Basic-Laufzeitfehler
Sub- oder Function- Prozedur nicht definiert


Da muß ich wohl OO neu installieren ???

gruß
sven-my

Ergänzung:

mußte nicht neu installieren, in den Tools war die Funktion noch richtig enthalten.
nur mußte ich, bevor ich sie aufrufe, folgendes reinschreiben:

Code: Alles auswählen

oURL = ConvertFromURL(ThisComponent.getURL())
FileN = FileNameoutofPath(oURL)
Ich verstehe bloß nicht, warum er vorher nicht gemault hat :(

gruß
sven-my

Re: Text von writer nach thunderbird

von hawkhunter2002 » So, 18.01.2009 19:32

Hallo sven-my

hatte in den letzten Tagen viel zu tun daher erst jetzt eine Antwort :?

Folgender Code funktioniert bei mir

Code: Alles auswählen

REM  *****  BASIC  *****

sub SendMail

oDoc = ThisComponent
Title = oDoc.DocumentInfo.Title
oUrl = oDoc.Url
anha = left(right(oUrl,6),2)
ordner = "writer\"
msgbox anha
if anha <> "SR" then 
	exit sub
end if

ausl = oDoc.getTextTables().getByName("eMail").getCellByPosition(0,0).string 'eMail ja / nein
betr = oDoc.getTextTables().getByName("Tabelle2").getCellByPosition(0,1).string 'Betreff
empf = oDoc.getTextTables().getByName("eMail").getCellByPosition(1,0).string 'eMail-Adresse
anrT = oDoc.getTextTables().getByName("AnredeText").getCellByPosition(0,0).string 'AnredeText

GlobalScope.BasicLibraries.LoadLibrary("Tools")

'msgbox "Auswahl = " & ausl
'msgbox "Betreff = " & betr
'msgbox "Empfänger = " & empf
'msgbox "Anrede = " & anrT

'GetText
textmarke1 = "textmarke1"
textmarke2 = "textmarke2"


toller_Text = holMyCursorString(textmarke1, textmarke2) ' Aufruf der Function mit 2 Uebergabeparametern
' msgbox "Mein Text = " & toller_Text 'Testausgabe des geholten Text

Anrede_und_Text = anrT & "  " & toller_Text

'msgbox Anrede_und_Text

FileN = FileNameoutofPath(oUrl)
'msgbox FileN

attN = "e:\Dolphins.jpg" 'OpenOffice\"+ordner+left(FileN,37)+"-SR.pdf"
attA = ConvertToURL (attN)
'msgbox attA

tbParameter = "-compose to="+empf+",subject="+ betr +",body="+Anrede_und_Text+",attachment="+attA
msgbox tbParameter
 
shell("C:\Programme\Mozilla Thunderbird\thunderbird.exe",1,tbParameter)
end sub
rem ===================================



Function holMyCursorString(textmarke1 as String, textmarke2 as String) as String
       
       dim myCursor as Object
       dim myDoc as Object
       dim tm1 as Object
       dim tm2 as Object
       Dim myTextCursor as object
       
       myDoc = thiscomponent
       'myCursor=myDoc.GetCurrentController.ViewCursor 'Alternative zum TextCursor der ViewCursor wird hier nicht verwendet
       myCursor=myDoc.text.createtextcursor()
       tm1 = myDoc.getBookmarks.getByName(textmarke1).getAnchor ' Anker der Textmarke vor dem Text
       tm2 = myDoc.getBookmarks.getByName(textmarke2).getAnchor ' ' Anker der Textmarke hinter dem Text
       
       myCursor.gotoRange(tm1,false) 'gehe zur Textmarke tm1
       myCursor.gotoEndOfParagraph(true) ' Markiert den Text zw aktueller Position und Ende des Absatzes
       'myCursor.gotoRange(tm2,true)  'gehe zur Textmarke tm2 und markiere den Text zwischen aktueller u. neuer Position   
       holMyCursorString = myCursor.getString   'hol denString und uebergib ihn der Function

End Function

Ich hoffe das hilft


Gruß

Hawk

Re: Text von writer nach thunderbird

von sven-my » Do, 15.01.2009 12:43

Hallo Hawk,

das Jahr fängt ja gut an --- nachdem ich mich, und dann win98 wieder hochgerappelt hatte, ist mir mein Modem verreckt.
Nun bin ich wieder in der Lage mein Problem zu schildern:

Mit diesen Zeilen bekomme ich die Mail-Adresse und den Betreff nach Thunderbird, beim "body" und "attachment" weigert sich das Makro --- zumindet kommt in Thunderbird 2.0.0.19 nichts an.
Die strings sind aber nicht leer (überprüft mit msgbox).

Da das nicht klappt bekomme ich auch mit Deinem Code nichts nach Thunderbird (deswegen auskommentiert).

Hast Du eine Idee, was ich falsch gemacht habe ???


gruß
sven-my
rem ===================================
sub SendMail

oDoc = ThisComponent
Title = oDoc.DocumentInfo.Title
oUrl = oDoc.Url
anha = left(right(oUrl,6),2)
ordner = "writer\"
if anha <> "SR" then exit sub

ausl = oDoc.getTextTables().getByName("eMail").getCellByPosition(0,0).string 'eMail ja / nein
betr = oDoc.getTextTables().getByName("Tabelle2").getCellByPosition(0,1).string 'Betreff
empf = oDoc.getTextTables().getByName("eMail").getCellByPosition(1,0).string 'eMail-Adresse
anrT = oDoc.getTextTables().getByName("AnredeText").getCellByPosition(0,0).string 'AnredeText

'GlobalScope.BasicLibraries.LoadLibrary("Tools")

'GetText
' toller_Text = holMyCursorString(textmarke1, textmarke2) ' Aufruf der Function mit 2 Uebergabeparametern
' msgbox toller_Text 'Testausgabe des geholten Text

FileN = FileNameoutofPath(oUrl)

attN = "D:\OpenOffice\"+ordner+left(FileN,37)+"-SR.pdf"
attA = ConvertToURL (attN)

shell("E:\MozillaThunderbird\thunderbird.exe",1,"-compose to="+empf+",subject="+betr) '+",body="+anrT+",attachment="+attA)

end sub
rem ===================================

Re: Text von writer nach thunderbird

von sven-my » Sa, 10.01.2009 15:01

Hallo Hawk,

entschuldige, daß ich mich erst so spät melde. :(

Eine Grippe, oder so was ähnliches, hat mich von den Füßen gerissen; dann ist auch noch mein win98 über den Jordan.

Nun habe ich erstmal reichlich damit zu tun, mein System wieder auf den alten Stand zu bekommen.
Bei der Sicherung der Daten habe ich alles schön dokumentiert, und beim Schreiben dieser Dokumentation war alles so schön einfach, klar und verständlich, aber heute nach Monaten weiß ich bei manchem Satz nicht mehr was ich damit meinte. :?

Danach kann ich mich um wieder um Feinheiten von OpenOffice kümmern; bis dahin muß ich mit dem Standard hinkommen.

Klar --- ich sollte langsam auf was Besseres umsteigen ~~~~~ :lol:

gruß
sven-my

Re: Text von writer nach thunderbird

von hawkhunter2002 » Mi, 31.12.2008 17:19

Hallo sven-my,
das ist jetzt ein Fingerübung, das Ende des Absatzes erhälst du mit

Code: Alles auswählen

myCursor.gotoEndOfParagraph(true)
hier nochmal der komplette Code nun wird nur der erste Absatz geholt das Übergeben der 2ten Textmarke kann hier entfallen.

Code: Alles auswählen

 Sub Main   'Aufrufende Function
          
          textmarke1 = "Textmarke3"   'TextmarkenName vor dem Text
          textmarke2 = "Textmarke4"   'TextmarkenName hinter dem Text
          toller_Text = holMyCursorString(textmarke1, textmarke2) ' Aufruf der Function mit 2 Uebergabeparametern
       
          msgbox  toller_Text         'Testausgabe des geholten Text
    End sub


    Function holMyCursorString(textmarke1 as String, textmarke2 as String) as String
       
       dim myCursor as Object
       dim myDoc as Object
       dim tm1 as Object
       dim tm2 as Object
       Dim myTextCursor as object
       
       myDoc = thiscomponent
       'myCursor=myDoc.GetCurrentController.ViewCursor 'Alternative zum TextCursor der ViewCursor wird hier nicht verwendet
       myCursor=myDoc.text.createtextcursor()
       tm1 = myDoc.getBookmarks.getByName(textmarke1).getAnchor ' Anker der Textmarke vor dem Text
       tm2 = myDoc.getBookmarks.getByName(textmarke2).getAnchor ' ' Anker der Textmarke hinter dem Text
       
       myCursor.gotoRange(tm1,false) 'gehe zur Textmarke tm1
       myCursor.gotoEndOfParagraph(true) ' Markiert den Text zw aktueller Position und Ende des Absatzes
       'myCursor.gotoRange(tm2,true)  'gehe zur Textmarke tm2 und markiere den Text zwischen aktueller u. neuer Position    
       holMyCursorString = myCursor.getString   'hol denString und uebergib ihn der Function

    End Function


Gruß

Hawk

Re: Text von writer nach thunderbird

von sven-my » Mi, 31.12.2008 16:16

Hallo Hawk,

vielen Dank für Deine Arbeit !!!

Einfach SPITZE --- nach anpassen des Namens der Textmarke klappt es wie gehofft.

Genial wäre es, wenn nur den ersten Absatz kopiert würde.

So sieht ein Blindtext aus:

[Textmarke1]Sehr geehrte Damen und Herren,

[Textmarke2]Er hörte leise Schritte hinter sich. Das bedeutete nichts Gutes. Wer würde ihm schon folgen, spät in der Nacht und dazu noch in dieser engen Gasse mitten im übel beleumundeten Hafenviertel.

Gerade jetzt, ........
......
......
........Würde diese Tür seine Rettung werden?

[Textmarke3]Mit freundlichen Grüßen


gruß
sven-my

Re: Text von writer nach thunderbird

von hawkhunter2002 » Mi, 31.12.2008 09:37

Hallo sven-my hallo liebe mitlesende Gemeinde,

weil's mich jetzt selber interessiert hat :?: hier der Code mit Textmarken die den Text nicht beinhalten sondern vor und hinter dem Text stehen, in der Art wie:
Textmarke1 Super toller genialer Text Textmarke2 hier kann natürlich weiterer Text stehen und auch weitere Textmarken die entsprechen angesprungen werden können.

Code: Alles auswählen

Sub Main   'Aufrufende Function
		
		textmarke1 = "Textmarke1"	'TextmarkenName vor dem Text
		textmarke2 = "Textmarke2"	'TextmarkenName hinter dem Text
		toller_Text = holMyCursorString(textmarke1, textmarke2) ' Aufruf der Function mit 2 Uebergabeparametern
	
		msgbox  toller_Text   		'Testausgabe des geholten Text 
End sub


Function holMyCursorString(textmarke1 as String, textmarke2 as String) as String
	
	dim myCursor as Object
	dim myDoc as Object
	dim tm1 as Object
	dim tm2 as Object
	Dim myTextCursor as object
	
	myDoc = thiscomponent
	'myCursor=myDoc.GetCurrentController.ViewCursor 'Alternative zum TextCursor der ViewCursor wird hier nicht verwendet
	myCursor=myDoc.text.createtextcursor()
	tm1 = myDoc.getBookmarks.getByName(textmarke1).getAnchor ' Anker der Textmarke vor dem Text
	tm2 = myDoc.getBookmarks.getByName(textmarke2).getAnchor ' ' Anker der Textmarke hinter dem Text
	
	myCursor.gotoRange(tm1,false) 'gehe zur Textmarke tm1
	myCursor.gotoRange(tm2,true)  'gehe zur Textmarke tm2 und markiere den Text zwischen aktueller u. neuer Position 	
	holMyCursorString = myCursor.getString	'hol denString und uebergib ihn der Function 

End Function


Gruß

Hawk

Re: Text von writer nach thunderbird

von hawkhunter2002 » Mo, 29.12.2008 23:07

Hallo sven-my,

wir sprechen schon über dasselbe 8)
Nur markiere mal deinen Text vorher und füge dann die Textmarke ein :idea:
Dann steht der Text in der Marke.
Alternative (allerdings etwas aufwendiger) wäre, wenn du deine Texte zwischen mehreren Textmarken stellen würdest.
Dann könntest du sie dir über TextCursor bzw ViewCursor holen.(Habe ich allerdings noch nicht ausprobiert).


Gruß

Hawk

Re: Text von writer nach thunderbird

von sven-my » Mo, 29.12.2008 09:10

Hallo Hawk,

Du bist ja schneller als die Feuerwehr. vielen Dank.

Ich habe so das unbestimmte Gefühl, wir sprechen von verschiedenen Dingen ?! Wenn ich die Textmarken, egal, ob über Navigator, oder von der Statusleiste aus anspringe, wird bei mir kein Text markiert. Der Corsor springt an die Stelle, an der die Textmarken stehen, dort wo der eingefügte Text beginnt.

Die Textmarken füge ich ein über EINFÜGEN/TEXTMARKE (der Menuepunkt mit dem PIN als Icon).

Ich nutze OpenOffice 2.41 unter win98SE.


gruß
sven-my

Nach oben