Das Notes Forum
Domino 9 und frühere Versionen => Entwicklung => Thema gestartet von: adminnaddel am 15.10.02 - 09:26:41
-
guten morgen liebe gemeinde,
beim ausführen des scriptes kriege ich jedesmal die o.g. meldung und nun bin ich am verzweifeln.
Sub Click(Source As Button)
Dim ntNotes As NotesDocument
Dim path As Variant
path="c:tempwordexp.doc"
Dim dbNotes As NotesDatabase
Dim ssNotes As New NotesSession
Set dbNotes = ssNotes.CurrentDatabase
Set wvNotes = dbNotes.Getview ("Server")
Set ntNotes = vwNotes.GetFirstDocument
Do While Not (ntNotes Is Nothing)
Set wordObj = GetObject(path)
tempfield=ntNotes.fldCaratulaContents
Call WordObj.ActiveWindow.Selection.TypeText(tempfield+Chr$(13))
wordObj.Save
wordObj.Application.Quit
Set wordObj = Nothing
Set ntNotes = vwNotes.GetNextDocument(ntNotes)
Loop
Set wordObj = Nothing
Msgbox "File has been exported to -->: " + path
End Sub
wenn einer der LS-EXPERTEN eine idee hat, bitte ich doch mir dieses mitzuteilen! :-\
mfg
-
Zunächst einmal würde ich den Debugger aktivieren und dann Schritt für Schritt durch den Code laufen, damit Du siehst, wo genau das Script aussteigt.
Es kann bspw. sein, dass die View "Server" nicht da ist. Ausserdem scheint mir der Wert für path nicht korrekt zu sein. Muss es nicht "C:\tempwordexp.doc" heissen?
Gruß
Andreas
-
Hi,
ich hätte da schon mal so eine Idee, was hier nicht ganz klappen könnte.
In der einen Zeile deklarierst du die Variable so
Set wvNotes = dbNotes.Getview ("Server")
In der nächsten verwendest du aber eine andere
Set ntNotes = vwNotes.GetFirstDocument
Hast wohl unabsichtlich die Buchstaben v und w vertauscht.
Noch eine Frage wenn's jetzt noch immer nicht klappt. Funktioniert das mit der Pfadangabe "c:tempwordexp.doc", benötigt man hier nach dem c: keinen Backslash?
Schönen Gruß
Manuel
-
ich trottel.......ich hatte vergessen zu sagen, dass ich die geschicht natürlich durch den debugger hab laufen lassen.
- die view server ist vorhanden und das der path falsch ist, bin ich auch der meinung.
die meldung mit "object variable" erscheint in dem teil
Set ntNotes = vwNotes.GetFirstDocument
mfg
-
Yo, dann ist der Grund die vertauschten Buchstaben, ändere diese Zeile
Set vwNotes = dbNotes.Getview ("Server")
-
Manuel hat recht, Du hast die Buchstaben vertauscht!
Gruß
Andreas
-
yes, dat war es.......aber nun kommt doch gleich dewr zweite hammer:
Set wordObj = GetObject(path)
ich bekomme die meldung: automation object file name error
was ist den dat schon wieder
(den path habe ich oben geändert)
mfg
-
Hab's mal ausprobiert. Der Grund ist, dass es das Dokument noch nicht gibt. Wenn schon ein Dokument mit gleichem Namen auf der Festplatte erstellt wurde, funktioniert es wunderbar.
Ich hätte versucht bei GetObject auch noch den Klassennamen anzugeben, also
Set WordObj = GetObject("c:\tempwordexp.doc", "Word.Document")
und statt der Fehlermeldung
automation object file name error
bekomme ich jetzt nur mehr die Fehlermeldung
automation object error
Ist doch schon mal ein Anfang! ;D
Manuel
-
ganz toll, so langsam tastet man sich ans ergebnis heran.
WordObj habe ich noch deklariert und den Klassennamen habe ich auch angehängt.
Nun kriege ich (im debugger schon weitfortgeschritten) an folgender stelle:
Call WordObj.ActiveWindow.Selection.TypeText(tempfield+Chr$(13))
die meldung:
typ mismatch
???
mfg
-
probiers mit ... tmpfield(0)
ata
-
yes sir, that was the problem.
aber mal ganz im ernst.....dafür das dieses script aus der ibm-sandbox stammt, passiert nicht wirklich viel.
es ist kein resultat mit den vielen änderungen sichtbar.
langweilig und wenn der hund was lernt, wird er belohnt mit einem leckerli. nur gab es hier keine belohnung, aber dankbar für eure hilfe bin ich wirklich!
@ata, danke für die mail....werde gleich mal schauen ob ich das verstehe...bis bald
mfg
-
@ata,
Grundsätzlich richtig gedacht, nur dieses Feld wird schon eine Zeile vorher aufgerufen, und tempfield ist nur die Variable.
@adminnaddel
Du musst also diese Zeile ändern
tempfield=ntNotes.fldCaratulaContents(0)
-
@ata
Ok, hat doch so funktioniert wie du es gesagt hast. Ist interessant zu wissen. Die Variable tempfield ist also demnach noch kein String, sondern ein Objekt vom Typ Feld. Erst mit dem Aufruf tempfield(0) wird es zu einem String.
Es stimmen also beide Varianten.
Schönen Gruß
-
@manuel
es ist kein Objekt Feld, das wäre mir so nicht bekannt.
Die Rückgabe beinhaltet eine Array mit den Werten des Feldes. Auch wenn im Feld nur ein Wert hinterlegt war, dann ist es eben ein Array mit einem Element...
... daher funktionieren beide Wege...
ata
-
ok, danke! hab's jetzt verstanden :)