Autor Thema: Scriptprobleme  (Gelesen 3572 mal)

Offline RvM

  • Senior Mitglied
  • ****
  • Beiträge: 375
  • Geschlecht: Männlich
  • Domino: Geht nicht - gibt's nicht
    • PhotosForFree
Scriptprobleme
« am: 28.11.07 - 11:31:41 »
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:
Code
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:
Code
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
-------
Gruß Rolf
--------------

Offline dirk_2909

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.173
  • Geschlecht: Männlich
  • Expand your Notes Client with ECM functionality..
    • d.velop
Re: Scriptprobleme
« Antwort #1 am: 28.11.07 - 11:42:24 »
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


Code
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

« Letzte Änderung: 28.11.07 - 11:51:44 von dirk_2909 »
Dirk

[IBM CLP R5]
[IBM CAD 6/6.5]
[IBM CAD 7]
[IBM CAD 8]


"Nein!! … Es genügt nicht Mails in einen anderen Ordner oder Datenbank zu verschieben, um sie zu archivieren!"

   
Disclaimer:
Ich Antworte nach besten Wissen und Gewissen. Sollte sich jemand durch meine Antwort persönlich angegriffen fühlen, ist dies nicht meine Absicht!
Ich bin auch nur ein Mensch, der Fehler machen kann. ....

Offline RvM

  • Senior Mitglied
  • ****
  • Beiträge: 375
  • Geschlecht: Männlich
  • Domino: Geht nicht - gibt's nicht
    • PhotosForFree
Re: Scriptprobleme
« Antwort #2 am: 28.11.07 - 11:57:17 »
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:
Code
  ' ...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?
-------
Gruß Rolf
--------------

Offline dirk_2909

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.173
  • Geschlecht: Männlich
  • Expand your Notes Client with ECM functionality..
    • d.velop
Re: Scriptprobleme
« Antwort #3 am: 28.11.07 - 12:07:34 »
Soll der Text aus dem 1. Doc, die Spaltenüberschrift bilden?
Wenn ja müsste er doch mit in die Tabelle, nur anders (Bold) dargestellt werden?

Wie man die Schriftart übergibt, kann ich adhoc nicht sagen. Muss ich mal nachschauen ;-)
Dirk

[IBM CLP R5]
[IBM CAD 6/6.5]
[IBM CAD 7]
[IBM CAD 8]


"Nein!! … Es genügt nicht Mails in einen anderen Ordner oder Datenbank zu verschieben, um sie zu archivieren!"

   
Disclaimer:
Ich Antworte nach besten Wissen und Gewissen. Sollte sich jemand durch meine Antwort persönlich angegriffen fühlen, ist dies nicht meine Absicht!
Ich bin auch nur ein Mensch, der Fehler machen kann. ....

Offline dirk_2909

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.173
  • Geschlecht: Männlich
  • Expand your Notes Client with ECM functionality..
    • d.velop
Re: Scriptprobleme
« Antwort #4 am: 28.11.07 - 12:11:03 »
Die Schriftrat kann man in etwa so setzen:

Zitat
With Selection.Font
        .Name = "Arial"
        .Size = 12
        .Bold = False
        .Italic = False
 End With

..muss natürlich entsprechend angepasst werden.

Dirk

[IBM CLP R5]
[IBM CAD 6/6.5]
[IBM CAD 7]
[IBM CAD 8]


"Nein!! … Es genügt nicht Mails in einen anderen Ordner oder Datenbank zu verschieben, um sie zu archivieren!"

   
Disclaimer:
Ich Antworte nach besten Wissen und Gewissen. Sollte sich jemand durch meine Antwort persönlich angegriffen fühlen, ist dies nicht meine Absicht!
Ich bin auch nur ein Mensch, der Fehler machen kann. ....

Offline RvM

  • Senior Mitglied
  • ****
  • Beiträge: 375
  • Geschlecht: Männlich
  • Domino: Geht nicht - gibt's nicht
    • PhotosForFree
Re: Scriptprobleme
« Antwort #5 am: 28.11.07 - 12:12:05 »
Soll der Text aus dem 1. Doc, die Spaltenüberschrift bilden?
Wenn ja müsste er doch mit in die Tabelle, nur anders (Bold) dargestellt werden?

Nein, der Inhalt sollte als Überschrift der kompletten Seite gelten.
Zum besseren Verständnis:
Es wird aus einer Ansicht eine Teilnehmerliste ausgedruckt und oben als Header soll dann das Seminarsthema sowie das enstprechende Datum drüber stehen. Diese daten stehen in jedem Dokument mit drin, muss aber halt nur 1mal erwähnt werden.
-------
Gruß Rolf
--------------

Offline dirk_2909

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.173
  • Geschlecht: Männlich
  • Expand your Notes Client with ECM functionality..
    • d.velop
Re: Scriptprobleme
« Antwort #6 am: 28.11.07 - 12:25:04 »
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:

Code
Set msApp = CreateObject(strAppClass)
Set msMainDoc = msApp.Documents.Open(strVorlageDatei)
Set msFields = msApp.Documents(strVorlageDatei).FormFields
msFields.Item("fldSeminarname").Result=.Seminarthema(0)

Dirk

[IBM CLP R5]
[IBM CAD 6/6.5]
[IBM CAD 7]
[IBM CAD 8]


"Nein!! … Es genügt nicht Mails in einen anderen Ordner oder Datenbank zu verschieben, um sie zu archivieren!"

   
Disclaimer:
Ich Antworte nach besten Wissen und Gewissen. Sollte sich jemand durch meine Antwort persönlich angegriffen fühlen, ist dies nicht meine Absicht!
Ich bin auch nur ein Mensch, der Fehler machen kann. ....

Offline Axel

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 8.658
  • Geschlecht: Männlich
  • It's not a bug, it's Notes
Re: Scriptprobleme
« Antwort #7 am: 28.11.07 - 12:26:29 »
Das müsste so gehen:


Set objWord = CreateObject("Word.Application")
....
objWord.Selection.Tables(1).Rows.HeadingFormat = True
...

Damit werden die Tabellenzelle als "Kopfzeile" definiert in der sich der Cursor befindet

Alternativ:

objWord.Selection.Rows.HeadingFormat = True

Damit werden die markierten Tabellenzellen als "Kopfzeile" definiert


Axel

    
« Letzte Änderung: 28.11.07 - 12:28:00 von Axel »
Ohne Computer wären wir noch lange nicht hinterm Mond!

Offline dirk_2909

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.173
  • Geschlecht: Männlich
  • Expand your Notes Client with ECM functionality..
    • d.velop
Re: Scriptprobleme
« Antwort #8 am: 28.11.07 - 12:29:36 »
Zitat
Damit werden die Tabellenzelle als "Kopfzeile" definiert in der sich der Cursor befindet

Hallo Axel.
Er will keine Kopfzeile in der Tabelle.
Sondern einen bestimmten Text an definierter Stelle in dem Word-Dokument.

Dirk

[IBM CLP R5]
[IBM CAD 6/6.5]
[IBM CAD 7]
[IBM CAD 8]


"Nein!! … Es genügt nicht Mails in einen anderen Ordner oder Datenbank zu verschieben, um sie zu archivieren!"

   
Disclaimer:
Ich Antworte nach besten Wissen und Gewissen. Sollte sich jemand durch meine Antwort persönlich angegriffen fühlen, ist dies nicht meine Absicht!
Ich bin auch nur ein Mensch, der Fehler machen kann. ....

Offline Axel

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 8.658
  • Geschlecht: Männlich
  • It's not a bug, it's Notes
Re: Scriptprobleme
« Antwort #9 am: 28.11.07 - 12:37:51 »
Uups. Stimmt, das hatte ich auf die Schnelle überlesen.

Wie wäre es denn mit einer Formatvorlage in Word für das Seminarformular.

Diese Lösung würde ich auch empfehlen.


Axel
Ohne Computer wären wir noch lange nicht hinterm Mond!

Offline dirk_2909

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.173
  • Geschlecht: Männlich
  • Expand your Notes Client with ECM functionality..
    • d.velop
Re: Scriptprobleme
« Antwort #10 am: 28.11.07 - 12:40:22 »
Hier >> http://atnotes.de/index.php?topic=4810.msg208126#msg208126  ist eine schöne Anwendung in der mit Vorlagen gearbeitet wird.

Denke es hilft .
Dirk

[IBM CLP R5]
[IBM CAD 6/6.5]
[IBM CAD 7]
[IBM CAD 8]


"Nein!! … Es genügt nicht Mails in einen anderen Ordner oder Datenbank zu verschieben, um sie zu archivieren!"

   
Disclaimer:
Ich Antworte nach besten Wissen und Gewissen. Sollte sich jemand durch meine Antwort persönlich angegriffen fühlen, ist dies nicht meine Absicht!
Ich bin auch nur ein Mensch, der Fehler machen kann. ....

Offline RvM

  • Senior Mitglied
  • ****
  • Beiträge: 375
  • Geschlecht: Männlich
  • Domino: Geht nicht - gibt's nicht
    • PhotosForFree
Re: Scriptprobleme
« Antwort #11 am: 28.11.07 - 14:41:50 »
Erst einmal vielen Dank für die vielen Tipps. Aber bevor ich eine neue Applikation installiere, akzeptiere ich auch die kleine Lösung mit  der Kopfzeiel von Axel  ;)

Set objWord = CreateObject("Word.Application")
....
objWord.Selection.Tables(1).Rows.HeadingFormat = True
...

Damit werden die Tabellenzelle als "Kopfzeile" definiert in der sich der Cursor befindet

Alternativ:

objWord.Selection.Rows.HeadingFormat = True

Damit werden die markierten Tabellenzellen als "Kopfzeile" definiert

Axel


Beide Angebote entsprechend Umgesetzt führen lieder zu Nichts  ???
-------
Gruß Rolf
--------------

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz