Hallo zusammen,
ich habe folgendes Problem: Wenn ich einen Feldinhalt mit Lotusscript aus einem Dokument lese, bei der der Feldinhalt doppelte Anführungszeichen hat, werden doppelte Anführungszeichen "hinzuerfunden".
Aber lasst mich das Problem von vorne beschreiben:
Wir nutzen eine Funktion in einer Script-Bibliothek die nichts anderes tut als Werte aus Dokumenten in Excel auszugeben. Nachfolgend der Code:
| Sub ExportToExcel(viewname As String, flds As Variant, sheetname As String) |
| ' Definitions |
| Dim uiws As New NotesUIWorkspace |
| Dim ns As New NotesSession |
| Dim db As NotesDatabase |
| Set db = ns.CurrentDatabase |
| |
| ' Open Excel |
| Dim xl As Variant |
| Set xl = CreateObject("Excel.Application") |
| |
| Dim i%, j% |
| |
| Dim xlbook As Variant |
| Dim sheetprj As Variant |
| |
| Set xlbook = xl.Workbooks.Add |
| Set sheetprj = xlbook.Sheets(1) |
| sheetprj.Name = sheetname |
| |
| ' First Row |
| For i% = 0 To Ubound(flds) |
| sheetprj.Range(colrow(i%,1)).Value = flds(i%) |
| Next |
| |
| Dim vw As NotesView |
| Set vw = db.GetView(viewname) |
| Dim doc As NotesDocument |
| |
| Set doc = vw.GetFirstDocument |
| |
| Dim v As Variant |
| Dim value$ |
| Dim row As Long |
| row = 0 |
| |
| xl.Visible = True |
| |
| |
| While Not (doc Is Nothing) |
| For i% = 0 To Ubound(flds) |
| value$ = "" |
| v = flds(i%) |
| |
| If Trim(Left(v,1))="@" Then |
| Dim var As Variant |
| var = Evaluate(v) |
| Else |
| v = doc.GetItemValue(v) |
| For j% = 0 To Ubound(v) |
| If j% > 0 Then |
| value$ = value$ + "; " |
| End If |
| value$ = value$ + Cstr(v(j%)) |
| Next |
| End If |
| sheetprj.Range(colrow(i%,row+2)).Value = value$ |
| Next |
| |
| row = row + 1 |
| |
| Set doc = vw.GetNextDocument(doc) |
| Wend |
| |
| xl.Visible = True |
| |
| End Sub |
| |
Nun rufe ich den oben beschriebenen Sub in einer Aktion in einem View auf:
| Sub Click(Source As Button) |
| |
| ' Definitions |
| Dim uiws As New NotesUIWorkspace |
| Dim ns As New NotesSession |
| Dim db As NotesDatabase |
| Set db = ns.CurrentDatabase |
| |
| ' Feature Profile contains additional field names in the fields: |
| ' FPR_QueryComp and FPR_QueryCont |
| Dim fprof As NotesDocument |
| Set fprof = db.GetProfileDocument("(FeatureProfile)") |
| |
| Dim fldnames As Variant |
| fldnames = fprof.FPR_ExportFields |
| |
| Call ExportToExcel("Main",fldnames,"Projekte") |
| |
| End Sub |
Funktioniert soweit super, wenn das Feld "FPR_ExportFields" im sogenannten FeatureProfile eine Liste von Feldern enthält, die in dem Dokument enthalten sind.
Nun würde ich den Code gerne erweitern, sodass anstatt der Feldnamen auch Formeln angegeben werden können, die vom Sub ExportToExcel "evaluated" werden. (Ich habe im Sub ExportToExcel diese Anpassung schon angefangen).
Der Formelbefehl sieht wie folgt aus:
@DbLookup( "" : "NoCache" ; "" : "" ; "(LookupStakeholdersByREF)" ; @Text(@DocumentUniqueID);2)
Wenn dieser Befehl nun aus dem Feld gelesen wird, werden Anführungszeichen hinzuerfunden. Siehe Screenshot der den Debugger zeigt.
Das Lotusscript diese Zeichenkette nicht "evaluaten" kann ist klar.
Wie bekomme ich es also hin, das der Feldinhalt gelesen wird ohne das die Anführungszeichen hinzuerfunden werden?
Danke fürs Lesen dieses langen Beitrags!! 
Markus