Das Notes Forum
Domino 9 und frühere Versionen => Entwicklung => Thema gestartet von: luna am 30.09.02 - 14:15:12
-
hallo,
hab mir vor einiger zeit mal das notes to word script geladen, von diesem thread:
http://217.160.137.156/html/cgi-bin/yabb/YaBB.pl?board=002-2;action=display;num=1026985624;start=3
bis vor meiner langen abwesenheit hat das super geklappt, nur jetzt gehts nimmer, und ich weiss nicht, warum.
sachlage:
- ich hab lokal auf meiner platte ein word template, das rechnung_altPC.dot heisst. das hab ich nie veraendert, liegt dort auch immer noch. dort, wo auch die normal.dot ist.
- ich hab einen button in meine inventur DB eingebaut, der immer noch da ist und nicht veraendert wurde (ausser mir hat keiner designer).
dort steckt dieses script drin:
Sub Click(Source As Button)
Dim s As New notessession
Dim todaydate As New notesdatetime("Today")
Dim workspace As New NotesUIWorkspace
Dim uidoc As NotesUIDocument
Set uidoc = workspace.CurrentDocument
Dim word As Variant
Dim wordoc As Variant
Dim user As String
Dim inventory_number As String
Dim hardware As String
'Predefined values: (replace with field values from uidoc)
todaysdate = todaydate.localtime
user = uidoc.FieldGetText("user")
inventory_number = uidoc.FieldGetText("inventory_number")
hardware = uidoc.FieldGetText("hardware")
'Create the Word object:
Set word = CreateObject("Word.Application") 'Create Word object
Call word.documents.add("Rechnung_altPC.dot") 'Create a new document based on the template "Return and Uplift.Dot"
Set worddoc = word.activedocument 'Get a handle for the active document
'Assign the field values:
worddoc.FormFields(3).result = todaysdate
worddoc.FormFields(4).result = user
worddoc.FormFields(5).result = inventory_number
worddoc.FormFields(6).result = hardware
worddoc.saveas(user) 'save the document with the filename of "John Doe.doc"
word.visible = True 'Comment this line if you don't want to show Word.
'word.quit 'remove comment if you want to close rather than show Word.
End Sub
wenn ich nun in meiner inventur DB auf den button "invoice" klicke, dann geht word nicht auf, und ich bekomme diese fehlermeldung in einem fenster:
Microsoft Word: This is not a valid file name.
Try one or more of the following:
*Check the path to make sure it was typed correctly
*Select a file from the list of files and folders
oder dann:
Micrsofot Word: Command failed
in meiner Task Liste steht dann winword.exe x-mal drin, aber es geht nicht wirklich auf.
was koennte denn da jetzt falsch laufen? ich kenn mich leider mit script nicht aus, und die fehlermeldung hilft mir auch nicht weiter.
danke und gruss,
daniela
-
Hi Daniela,
> worddoc.saveas(user) 'save the document with the >filename of "John Doe.doc"
das kommt mir bekannt vor. Das hatte ich auch. Er speichert das Dokument mit _user_ ab, vielleicht hast Du was dran verändert und nur vergessen
Überprüfe mal, mit welchem Namen er das Dokument abspeichern möchte.
Gruß
Don Pasquale
-
hallo pasquale,
vielen dank, dass du mir hilfst. aber so einfach ist das nicht, fuer mich.
also, du sagst, ich soll nachschauen, unter welchem namen er es abspeichern will, aber wie soll ich denn da nachschauen? er oeffnet es ja nicht mal. und im explorer seh ich nix.
kann schon sein, dass ich was veraendert hab, und es nicht mehr weiss, aber ich glaube eher nicht. weil vor meiner langen abwesenheit gings noch, und waehrend dessen hab ich nix veraendert, und jetzt gehts auf einmal nimmer.
was kann ich denn noch tun / testen? was fuer infos brauchst du denn noch, um mir helfen zu koennen?
danke und gruss,
daniela
-
Hi Dani,
gehe mal auf
Datei - Extra- und Debug Lotus Script
Jetzt versucht Du nochmal den Button Invoice aufzurufen
und klickst dann "Schritt ausführen" bis der Fehler nochmal kommt.
Unten sind 3 Reiter, Breakpoints,Variablen und Ausgabe.
Da gehst Du auf Variablen.
Welchen Wert hat das Feld user
Don Pasquale
-
hi pasquale,
also, ich hab das jetzt gemacht, mit dem debuger. und da kam die fehlermeldung wieder.
und in dem feld user steht "Andersen Michael" drin, also genau der name, der auch in dem feld "user" in der maske drin steht.
was nun?
gruss,
daniela
-
Hi Dani,
das der Fehler mit dem Debugger wieder auftrat ist in Ordnung, dass sollte er auch.
Der "Andersen" ist ein gültiger Dokumentname, ich kann also auch nur noch raten.
Ersetze doch bitte vor diese Zeile
worddoc.saveas(user)
durch
'worddoc.saveas(user)
worddoc.saveas("TEST.doc")
und probier´s nochmal.
Wie gesagt, jetzt stochere ich auch nur noch im Dunkeln
Don Pasquale
-
Hi Daniela,
es kann sein, dass er mit dem Leerzeichen im Dateinamen Probleme hat.
Probiers mal so:
worddoc.saveas(|"| + user + |"|)
Axel
-
hi pasquale,
hab ich gemacht.
fenster: microsoft word: command failed
als titel steht im fenster: sanyo energy
ich koennte auch damit leben, dass word das dokument ueberhaupt nicht speichert, sondern ich erhalte einfach ein dokument, und wenn ich alles nachgetragen habe, mach ich selber "file / save as". das waere kein problem. ich hab mal dieses "wordsaveas" auskommentiert, damit er gar nicht speichert, aber selbst dann kommt diese fehlermeldung.
irgendwas ist hier oberfaul.
noch eine idee? ich muss das hinbekommen.
danke und gruss,
daniela
-
hallo axel,
vielen dank fuer den tip. aber das war's leider auch nicht. weil ich habs jetzt mit deiner formel probiert, gleiche fehlermeldung.
und danach hab ichs mit einem user probiert, der kein leerzeichen hat (betriebsrat), gleiche fehlermeldung.
aber es MUSS irgendwie an dem bloeden user liegen, weil ich naemlich jetzt mal das
'worddoc.FormFields(4).result = user
im kommentar gesetzt habe, und ploetzlich macht er mir das word auf, mit dem rechnungsformular !!! :D
also, es scheint tatsaechlich ein problem zu geben, mit dem feld user, warum auch immer. ich denke aber, dass ich in dem adressfeld sowieso immer jemanden anderen eintragen muss, als den user, den's betrifft. also koennte ich damit leben, das selber einzutragen und auch den zu speichernden dateinamen selber zu vergeben. ich bin sooooooo froh, dass jetzt das formular ueberhaupt wieder funktioniert.
vielen dank axel, vielen dank pasquale !
gruss,
daniela
-
hallo,
also, ich hab jetzt den fehler gefunden, versteh das aber nicht. in dieser formel stehen ja so nummern, die reihenfolgen, in denen die felder im word angesprochen werden:
worddoc.FormFields(4).result = todaysdate
'worddoc.FormFields(1).result = user
worddoc.FormFields(5).result = inventory_number
worddoc.FormFields(6).result = hardware
und aus welchem grund auch immer, stand das feld user nicht mehr an stelle 4, sondern an stelle 1. das hat alles verschoben und darum funktionierte es nicht mehr.
also, nochmal vielen dank fuer eure hilfe, so bin ich wenigstens auf den fehler gekommen. ;D
danke und gruss,
daniela :)
-
Hi Daniela,
freut mich dass du den Fehler gefunden hast.
Wenn ich, aus Notes heraus Daten in Formular-Felder in einem Word-Dokument schreiben will, gehe ich nicht über den Index, sondern über die Bezeichnung, bzw. in den Feldeigenschaften in Word heißt es Textmarke.
Die Feldeigenschaften lassen sich mit einem Rechtsklick auf das entsprechende Formularfeld anzeigen.
Das würde in deinem Fall so aussehen:
worddoc.FormFields("Name der Textmarke").result = user
Dann kann sich der Index, wie in deinem Fall, verschieben wie er lustig ist, das Feld wird trotzdem gefunden.
Axel
PS: Ich baue gerade eine Klasse um Worddokumente aus Notes heraus zu erstellen und mit Daten zu füllen. Wird aber noch eine bisschen dauern, werde sie aber dann hier im Forum zur Verfügung stellen.
-
hallo axel,
pasquale hat glaub ich in dem ursprungsthread auch schon sowas geschrieben. ich werd das morgen mal in ruhe testen, und meine formeln entsprechend abaendern. das mit den textmarken benutze ich ja schon. ich mach das anscheinend momentan doppelt gemoppelt. ich werde es korrigieren.
falls du diese loesung hast, koenntest du mir einen kurzen bescheid geben? ich komme momentan nicht dazu, alle aktuellen eintraege zu lesen.
vielen dank und gruss,
dani