Ich habe hier ein Script, das mir eine MS-Word Tabellenliste aus ausgewählten Dokumenten einer Ansicht macht. Nun möchte ich aber zusätzlich aus dem ersten Dokument der Liste quasi als Überschrift der Tabelle die Inhalte von zwei Feldern vor die eigentliche Tabelle bekommen.
Da ich mit so komplexen Scripten mien Probleme habe, freue ich mich über jede Hilfe ;)
Hier der erste Teil des Scriptes:
Sub Initialize
Dim session As New NotesSession
Dim db As NotesDatabase
Dim collection As NotesDocumentcollection
Dim i As Integer
Dim Vorlagenpfad As String
Dim AnsichtZeile() As Variant
Dim Zeile As String
Dim Spalte As String
Dim Einsender As String
Dim PersNr As String
Dim Betrag As Variant
Set db = session.CurrentDatabase
Set collection = db.UnprocessedDocuments
If collection.count > 0 Then
'Pfad zu Word-Dokumentvorlagen bestimmen
'Erstellung eines Word97-Objektes zur Bestimmung des Vorlagenpfads
Dim WordApp As Variant
Set WordApp = CreateObject("Word.Application.8")
Vorlagenpfad = WordApp.Options.DefaultFilePath(2)
'Beenden von Word ohne weitere Abfragen
Dim SaveOptions As Variant
SaveOptions = 0
WordApp.Application.Quit SaveOptions
'Objektvariablen löschen
Set WordApp = Nothing
' Word Dokumentenvorlage über API32 Dialog ermitteln
Dim DocVorlage As String
DocVorlage = FileOpenDialog(Vorlagenpfad, "", "Microsoft Word Dokumentvorlage|*.dot", "dot", "Dokumentvorlage auswählen:")
If DocVorlage = "{%Err%}" Then
Exit Sub
End If
'Word-Objekt auf Basis der Dokumentvorlage erstellen
'Erstellung eines Word-Objektes
Set WordApp = CreateObject("Word.application")
'Word nicht sichtbar im Hintergrund
' WordApp.Visible = False
WordApp.Visible = True
'Neue Worddatei öffnen
WordApp.Documents.Add(DocVorlage)
Hier sollte nach meiner Erkenntnis nun der Aufruf zum Auslesen der beiden Feldinhalte kommen, denn danach geht es weiter mit der Tabelle:
For i = 1 To collection.Count
Set doc = collection.GetNthDocument( i )
Set WordRange = Tabelle.Rows(i).Cells(1).Range
WordRange.InsertAfter Cstr(doc.Name(0))+", "+doc.Vorname(0)+Chr$(13)
'Neue Zeile in Word-Tabelle einfügen
Set NeueZeile = Tabelle.Rows.Add()
Next
'Set meineZeile = Selection.Rows(1)
'meineZeile.Cells.Merge
'Speichern des Word Dokuments
WordApp.ActiveDocument.Save
Else
Messagebox "Es sind keine Einträge selektiert!"
End If
Exit Sub
DateiNichtVorhanden:
Msgbox "Die Dokumentvorlage wurde nicht in ihrem Dokumentvorlagenverzeichnis gefunden! Die Aktion wird abgebrochen!"
Exit Sub
End Sub
Hallo,
Um bestimmte Werte des 1. Docs der Collection zu ermitteln würde ich das in etwa so machen:
For i = 1 To collection.Count
Set doc = collection.GetNthDocument( i )
Set WordRange = Tabelle.Rows(i).Cells(1).Range
WordRange.InsertAfter Cstr(doc.Name(0))+", "+doc.Vorname(0)+Chr$(13)
'Neue Zeile in Word-Tabelle einfügen
Set NeueZeile = Tabelle.Rows.Add()
Next
set doc = collection.getFirstDocument
i = 1
if not doc is Nothing Then
' ...hier die Felder des 1. docs auslesen
WordRange.InsertAfter Cstr(doc.GetItemValue( "Name" )(0)) & ", " & doc.getItemValue( "Vorname" )(0) & Chr$(13)
Set NeueZeile = Tabelle.Rows.Add()
end if
'nun den rest auslesen
while not doc is Nothing
'.. hier der code
i = i + 1
Set WordRange = Tabelle.Rows(i).Cells(1).Range
WordRange.InsertAfter Cstr(doc.Name(0))+", "+doc.Vorname(0)+Chr$(13)
Set NeueZeile = Tabelle.Rows.Add()
set doc = collection.getNextDocument( doc )
wend
Hallo Dirk,
das klappt schon ganz gut . nur wollte ich den Feldinhalt von "web_thema" nicht in die Tabelle mit packen, sondern als separaten Text über die Tabelle ablegen. Der Codeteil sieht nun wie folgt aus:
' ...hier die Felder des 1. docs auslesen
Set WordRange = Tabelle.Rows(i).Cells(1).Range
WordRange.InsertAfter Cstr(doc.web_thema(0))
Set NeueZeile = Tabelle.Rows.Add()
End If
Wie müsste ich dann WordRange definieren?
Und weisst Du evtl. auch, wie man mit diesem Script Word beibringt, das er als Standardschrift "Arial" verwenden soll?
Wie wäre es denn mit einer Formatvorlage in Word für das Seminarformular.
Diese Vorlage dann via Script holen , öffnen und Inhalte einfügen:
Set msApp = CreateObject(strAppClass)
Set msMainDoc = msApp.Documents.Open(strVorlageDatei)
Set msFields = msApp.Documents(strVorlageDatei).FormFields
msFields.Item("fldSeminarname").Result=.Seminarthema(0)