[NEWSboard IBMi Forum]
Seite 1 von 2 1 2 Letzte
  1. #1
    Registriert seit
    Sep 2004
    Beiträge
    142

    Drucken Worddokumenten mit System i

    Hallo

    Ich möchte Worddokumente mit dem System i drucken. Dazu erstelle ich mit Word ein Dokument mit Platzhaltern für die variablen Texte. Dann erstelle ich aus dem System i-DB ein File mit den aktuellen Texten; dieses File wandle ich in ein Excel um.

    Ich möchte nun die Serienbrief-Funktion des Winwords verwenden um die Dokumente aus der Vorlage mit den Platzhaltern kombiniert mit den effektiven Daten aus dem Excel zu drucken.

    Diese Funktion möchte ich Batch laufen lassen; entweder mit runrmtcmd von einem CL aus oder von der Windows-Büchse gestartet, wobei die System i-Funktionen dann mit rmtcmd aufgerufen werden.

    Weiss jemand, ob dies möglich ist und wenn Ja, wies es im Detail ablaufen könnte?

    Vielen Dank im Voraus.

    Mit besten Grüssen

    jgv

  2. #2
    Registriert seit
    Feb 2001
    Beiträge
    20.696
    Hierfür würde ich über Word direkt eine Abfrage (externe Daten über ODBC) verwenden.
    Diese kann Word dann für die Serienbrieffunktion sofort nutzen, da die Felder ja im Dokument direkt angegeben werden.

    Dann zeichne ein Makro auf, dass die Abfrage startet und den Seriendruck ausführt.
    Dieses Makro musst du dann im Dokument (ThisDocument) der Sub-Prozedur Documen_Open() zuweisen.

    Dann kannst du per RMTCMD das Dokument starten, über die Dateiendung findet Windows automatisch Winword.

    Allerdings hängt die Automatisierung hier von der Sicherheitsstufe ab, da Abfragen nur nach Rückfrage ausgeführt werden und Makros ggf. gesperrt sind.

    Für RMTCMD benötigst du auf dem Windows also einen User mit niedriger Sicherheitsstufe in Word oder du generierst dir ein Zertifikat (Office-Tools->Digitale Signatur für VBA-Projekte), dass du dem Dokument dann zuweisen kannst (Extras->Makros->Sicherheit).
    Dienstleistungen? Die gibt es hier: http://www.fuerchau.de
    Das Excel-AddIn: https://www.ftsolutions.de/index.php/downloads
    BI? Da war doch noch was: http://www.ftsolutions.de

  3. #3
    Registriert seit
    Sep 2004
    Beiträge
    142
    Zitat Zitat von Fuerchau Beitrag anzeigen
    Dieses Makro musst du dann im Dokument (ThisDocument) der Sub-Prozedur Documen_Open() zuweisen.
    Vielen Dank für die Hinweise. Wie weise ich ein Makro einer Sub-Prozedur zu?

  4. #4
    Registriert seit
    Feb 2001
    Beiträge
    20.696
    Die SubProzedur selber ist das Macro.

    Geh in den VBA-Editor, öffne im Projektexplorer das Objekt "ThisDocument".
    Im Editorfenster wählst du in der linken Dropdown-Liste "Dokument" und in der rechten dann "Open" (falls das nicht automatisch passierte.

    VBA generiert automatisch einen Prozedur-Rahmen:

    public sub Document_Open()
    end sub

    In diesen Body kopierst du dann den Inhalt aus dem automatisch generierten Macro, also den Teil zwischen "Public sub Macro1" und "End Sub".

    Füge in dein Macro ggf. am Anfang:

    on error goto Fehler

    und vor "End Sub"

    Fehler:

    ein.

    Damit führen Laufzeitfehler (keine Verbindung o.ä.) nicht zum Hängenbleiben.
    Dienstleistungen? Die gibt es hier: http://www.fuerchau.de
    Das Excel-AddIn: https://www.ftsolutions.de/index.php/downloads
    BI? Da war doch noch was: http://www.ftsolutions.de

  5. #5
    Registriert seit
    Sep 2004
    Beiträge
    142
    Vielen Dank für die Angaben. Es funktioniert jetzt fast ohne Probleme.

    Durch Eingabe eines Registry-Eintrages SQLSecurityCheck unter den Word/Options konnte verhindert werden, dass während dem Öffnen eine Frage erscheint, ob man das SQL-Öffnen zulässt.

    Jetzt kommt nur noch nach dem Druck aus Word die übliche Frage, ob man das geänderte Dokumente speichern will. Diese Frage ist in unserem Fall nicht nötig, da im Dokument (mit den Platzhaltern) an sich nichts geändert wurde. Besteht eine Möglichkeit, diese Frage zu unterdrücken respektive automatisch mit Nein (oder Ja) zu beantworten?

    Besten Dank im Voraus.

    jgv

  6. #6
    Registriert seit
    Feb 2001
    Beiträge
    20.696
    Setze nach dem Druck die Eigenschaft "ThisDocument.Saved=True", dann müsste die Abfrage unterbleiben.
    Dienstleistungen? Die gibt es hier: http://www.fuerchau.de
    Das Excel-AddIn: https://www.ftsolutions.de/index.php/downloads
    BI? Da war doch noch was: http://www.ftsolutions.de

  7. #7
    Registriert seit
    Sep 2004
    Beiträge
    142
    Vielen Dank für den Tip. Mir ist leider noch nicht gelungen herauszufinden, wo die Eingabe gemacht werden muss. Kannst du auch hier einen Hinweis geben?

    Besten Dank.

  8. #8
    Registriert seit
    Aug 2004
    Beiträge
    923
    Hello,

    Fehler:
    ThisDocument.Saved=True
    End Sub
    vermute ich mal.

    K.

  9. #9
    Registriert seit
    Sep 2004
    Beiträge
    142
    Danke für den Hinweis. Habe ich schon probiert, funktioniert aber leider nicht.

  10. #10
    Registriert seit
    Feb 2001
    Beiträge
    20.696
    Dann teste mal folgendes:

    Private Sub Document_Close()
    ThisDocument.Saved=True
    End Sub

    Bei mir wurde dann selbst ein verändertes Dokument widerspruchslos geschlossen.
    Dienstleistungen? Die gibt es hier: http://www.fuerchau.de
    Das Excel-AddIn: https://www.ftsolutions.de/index.php/downloads
    BI? Da war doch noch was: http://www.ftsolutions.de

  11. #11
    Registriert seit
    Sep 2004
    Beiträge
    142
    Besten Dank für den Hinweis. Leider funktioniert es noch nicht. Folgender Makro wird verwendet:

    Code:
     
    ThisDocument - 1
    Private Sub Document_New()
    End Sub
     
    Private Sub Document_Open()
    '
    ' Makro1 Makro
    ' Makro aufgezeichnet am 04.12.2007 von CHW
    '
        ChangeFileOpenDirectory "F:\Daten\Tests\"
        Documents.Open FileName:="Platzhalter.doc", ConfirmConversions:=False, _
            ReadOnly:=False, AddToRecentFiles:=False, PasswordDocument:="", _
            PasswordTemplate:="", Revert:=False, WritePasswordDocument:="", _
            WritePasswordTemplate:="", Format:=wdOpenFormatAuto, XMLTransform:=""
        With ActiveDocument.MailMerge
            .Destination = wdSendToPrinter
            .SuppressBlankLines = True
            With .DataSource
                .FirstRecord = wdDefaultFirstRecord
                .LastRecord = wdDefaultLastRecord
            End With
            .Execute Pause:=False
        End With
        ActiveDocument.Close
    End Sub
     
    Private Sub Document_Close()
    ThisDocument.Saved = True
    End Sub
    Das Dokument wird geöffnet und gedruckt. Danach erscheint das übliche Word-Schlussbild mit der Frage ob speichern (was ja nicht erwünscht ist). Unabhängig vom Antwort erscheint der Fehler:

    Lauzeitfehler 4248. Dieser Befehl ist nicht verfügbar, weil kein Dokument geöffnet.

    Was mache ich falsch ?

    Besten Dank und freundliche Grüsse

    jgv

  12. #12
    Registriert seit
    Feb 2001
    Beiträge
    20.696
    Welches Dokument ist denn das "ActiveDocument" ?
    Dein Makro-Dokument ?

    Ansonsten probier einfach folgendes:

    ActiveDocument.Saved = True
    ActiveDocument.Close

    und lass "Document_Close" weg, da dies ja wohl dein Makro-Dokument betrifft.
    Dienstleistungen? Die gibt es hier: http://www.fuerchau.de
    Das Excel-AddIn: https://www.ftsolutions.de/index.php/downloads
    BI? Da war doch noch was: http://www.ftsolutions.de

Similar Threads

  1. Tools von IST – Integrierte System Technik
    By Kirsten Steer in forum NEWSboard Server Software
    Antworten: 0
    Letzter Beitrag: 11-12-06, 09:03
  2. Antworten: 0
    Letzter Beitrag: 07-11-06, 08:30
  3. Antworten: 1
    Letzter Beitrag: 06-11-06, 10:02
  4. ASCII drucken
    By kug in forum NEWSboard Drucker
    Antworten: 4
    Letzter Beitrag: 23-09-06, 07:40
  5. Verkaufe IBM AS/400 Advanced System
    By Stern8 in forum NEWSboard Server & Hardware Markt
    Antworten: 1
    Letzter Beitrag: 20-06-06, 10:24

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • You may not post attachments
  • You may not edit your posts
  •