[Outlook, VBscript] Printen en sluiten Word

Pagina: 1
Acties:

  • Dutch_guy
  • Registratie: September 2001
  • Laatst online: 24-07 13:40
Ik gebruik de volgende code in een Outlook formulier.
Bij het klikken op de Printknop, wordt er d.m.v. een bookmark in Word het veld "txtAfleveradres" afgedrukt. Dat werkt prima.

Echter Word blijft openstaan.

Hoe kan deze automatisch gesloten worden, na het printen?


code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
Sub cmdPrint_Click()
    Dim objWord
    Dim objDoc
    On Error Resume Next
    Set objWord = GetObject(, "Word.Application")
    If objWord Is Nothing Then
        Set objWord = CreateObject("Word.Application")
    End If
    On Error GoTo 0
    objWord.Visible = True
    Set objDoc = objWord.Documents.Add("c:\printform.dot")
    Call AddTRData(objDoc)
    Set objDoc = Nothing
    Set objWord = Nothing
End Sub

Sub AddTRData(objDoc)
    Dim strValue
    objDoc.FormFields("Tekstvak1").Result = Item.UserProperties.Find("txtAfleveradres")
    objDoc.PrintOut
End Sub

Pay peanuts get monkeys !


  • Dutch_guy
  • Registratie: September 2001
  • Laatst online: 24-07 13:40
Ok, ik heb nu het volgende:

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
Sub cmdPrint_Click()
    Dim objWord
    Dim objDoc
    Const vbMinimized = 2
    On Error Resume Next
        Set objWord = CreateObject("Word.Application")
    On Error GoTo 0
    objWord.Visible = True
    Set objDoc = objWord.Documents.Add("c:\printform.dot")
    objWord.WindowState = vbMinimized
    Call AddTRData(objDoc)
    Set objDoc  = Nothing
    objWord.Quit
End Sub

Sub AddTRData(objDoc)
    Dim strValue
    const wdDoNotSaveChanges = 0
    objDoc.FormFields("Tekstvak1").Result = Item.UserProperties.Find("txtAfleveradres")
    objDoc.PrintOut
    objDoc.Close wdDoNotSaveChanges
End Sub



Dit werkt. Het document sluit zonder op te slaan en Word wil ook afsluiten, echter.......

Word komt met de melding, dat als het nu afsluit, alle printopdrachten worden geannuleerd.

Hoe kan ik dat voorkomen ?

Pay peanuts get monkeys !


  • OZ-Gump
  • Registratie: November 2002
  • Laatst online: 26-06 10:37

OZ-Gump

terug van weggeweest

Je zou eens een sleep() kunnen overwegen, of een

Visual Basic:
1
2
3
while document.printing
  DoEvents()
wend

(heeft Word een .printing?) Heb je verder al op google gezocht? Dit lijkt me namelijk iets wat wel vaker voorkomt. Overigens heb je dit probleem niet met Word XP, die geeft een schermpje waar je op annuleren kunt drukken, maar zodra de opdracht klaar is sluit hij Word wel netjes af...

Edit:
heb ff rondgekeken in Word, volgens mij is het een idee om de background-parameter op true te zetten bij de functie printout.

Background Optional Variant. Set to True to have the macro continue while Microsoft Word prints the document.

Het lijkt mij dat als die op False staat, de macro (of je code) wacht tot printen klaar is...?

[ Voor 31% gewijzigd door OZ-Gump op 28-03-2003 09:46 ]

My personal website


  • Dutch_guy
  • Registratie: September 2001
  • Laatst online: 24-07 13:40
Bedankt voor je reply. Ik ben er inderdaad inmiddels achter dat als ik "Background printing" in Word uitzet, dat het perfect werkt.

Ik heb dat in de volgende code verwerkt, echter het werkt niet, hij print met deze toevoeging helemaal niet meer:

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
Sub cmdPrint_Click()
    Dim objWord
    Dim objDoc
    Dim bolPrintBackground
    Const vbMinimized = 2
    On Error Resume Next
        Set objWord = CreateObject("Word.Application")
    On Error GoTo 0
    objWord.Visible = True
    Set objDoc = objWord.Documents.Add("c:\printform.dot")
    objWord.WindowState = vbMinimized
    Call AddTRData(objDoc)
    Set objDoc  = Nothing
    objWord.Quit
End Sub

Sub AddTRData(objDoc)
    Dim strValue
    const wdDoNotSaveChanges = 0
    objDoc.FormFields("Tekstvak1").Result = Item.UserProperties.Find("txtAfleveradres")
    bolPrintBackground = objWord.Options.PrintBackground
    objWord.Options.PrintBackground = False
    objDoc.PrintOut
    objWord.Options.Printbackground = bolPrintBackground
    objDoc.Close wdDoNotSaveChanges
End Sub



Deze regel zou het moeten doen: objWord.Options.PrintBackground = False

Maar het werkt dus niet, krijg ook geen foutmelding.

[ Voor 3% gewijzigd door Dutch_guy op 28-03-2003 10:46 ]

Pay peanuts get monkeys !


  • Dutch_guy
  • Registratie: September 2001
  • Laatst online: 24-07 13:40
Het werkt!

Ik heb het nu zo:

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
Sub cmdPrint_Click()
    Dim objWord
    Dim objDoc
    Dim bolPrintBackground
    Const vbMinimized = 2
    On Error Resume Next
        Set objWord = CreateObject("Word.Application")
    On Error GoTo 0
    objWord.Visible = True
    Set objDoc = objWord.Documents.Add("c:\printform.dot")
    objWord.WindowState = vbMinimized
    Dim strValue
    const wdDoNotSaveChanges = 0
    objDoc.FormFields("Tekstvak1").Result = Item.UserProperties.Find("txtAfleveradres")
    bolPrintBackground = objWord.Options.PrintBackground
    objWord.Options.PrintBackground = False
    objDoc.PrintOut
    objWord.Options.Printbackground = bolPrintBackground
    objDoc.Close wdDoNotSaveChanges
    Set objDoc  = Nothing
    objWord.Quit
End Sub

Pay peanuts get monkeys !