Hej allihopa idag fortsätter serien, Peter Undrar. Jo förvisso. Men då får det bli doc.application.quit isåfall Men Du kanske kan avhjälpa det genom att skrivaGetObject("wordfil.doc")
Jag använder funktionen GetObject för att få en referens till en wordfil.
I denna wordfil utför jag sedan vissa "search and replace" operationer.
dim doc as WORD.Document
Set doc = GetObject(wordfil.doc)
Därefter skriver jag ut filen och allt detta fungerar helt suvve.
doc.PrintOut
MEN, (There is always a but). När utskriften är klar så är det inte bara
att sätta referensen till dokumentet = nothing, för det lever fortfarande
en WORD.EXE process i datorn. Dessutom kommer en msgbox upp på
skärmen från skrivarservern som säger att utskriften är klar.
set doc = Nothing 'Processen lever kvar i alla fall
Frågor.
=============================================
1. Hur tar jag kål på denna process på ett kontrollerat sätt.
2. Hur stänger jag "programmässigt" den msgbox som bekräftar utskriften.
på fråga 1 kan jag tillägga att jag testat med:
doc.Close
Detta stänger förvisso ner WORD-processen, men då får jag en annan
dialogruta på skärmen som säger att utskriften kommer att avbrytas om
WORD stängs ner.
Tack på förhand peterh.
Bifogar koden så kan ni kanske testa själva. Om ni testar så tänk på:
koden vill öppna en fil som heter SWEDEN_2B.DOC i denna gör den
search & replace på följande strängar
"<<TYPE>>"
"<<SERIAL>>"
"<<DATE>>"
clsPrintCert ====================================
Option Explicit
Public Sub printCert(LandsNamn As String, _
Certifikat As String, _
Modell As String, _
Serienummer As String)
Dim doc As Word.Document
Dim filnamn As String
'Bygg filnamn.
'
'
' Exempel: SWEDEN_2B.DOC
' SWEDEN_CE.DOC
'
'
filnamn = App.Path & "\" & LandsNamn & "_" & Certifikat & ".doc"
On Error Resume Next
Set doc = GetObject(filnamn)
If doc Is Nothing Then
'INGEN REFERENS, ALLTSÅ FELAKTIGT CERTNAMN. DÅ KÖR VI ALLTID ENGELSK
filnamn = App.Path & "\" & "UNITED KINGDOM" & "_" & Certifikat & ".doc"
Set doc = GetObject(filnamn)
If doc Is Nothing Then
'FATALT FEL, Engelsk mall existerar inte
'Addera kod här för att hantera detta.
'Exvis msgbox som säger att mallen saknas och att
'inget certifikat kunde skrivas ut.
Exit Sub
End If
End If
'Vi har en referens doc till ett wordobject
'Aktivera dokumentet
doc.Activate
'Nu skall vi utföra lite seacrh and replace
'REPLACE <<TYPE>> med Modell
With doc.Content.Find
.Text = "<<TYPE>>"
.Replacement.Text = Modell
.Execute Replace:=wdReplaceAll, Forward:=True, Wrap:=wdFindContinue
End With
'REPLACE <<SERIAL>> med Serienummer
With doc.Content.Find
.Text = "<<SERIAL>>"
.Replacement.Text = Serienummer
.Execute Replace:=wdReplaceAll, Forward:=True, Wrap:=wdFindContinue
End With
'REPLACE <<DATE>> med aktuellt datum
With doc.Content.Find
.Text = "<<DATE>>"
.Replacement.Text = Format(Date, "Short Date")
.Execute Replace:=wdReplaceAll, Forward:=True, Wrap:=wdFindContinue
End With
'Skriv ut dokumentet
doc.PrintOut
'Döda objectet
Set doc = Nothing
End Sub
Form1 ====================================
Dim cert As New clsPrintCert
cert.printCert "SWEDEN", "2B", "MX 1100", "21/XX/28761"
Set cert = Nothing
/peterh (igen)Sv: GetObject(
naturligt för detta bieffekter med sig.
Stänger man word direkt så får man problemet att filen inte skrivs ut.
Jag måste ta mig en rejäl funderare på detta. Det kan ju också vara så
att word redan körs, och då skall det inte stängas ner efter utskriften.
/peterhSv: GetObject(
doc.printout
doc.close (nån parameter)
doc.quit
set doc=nothing
Ps. har för mig att doc.close har någon parameter som tvingar att avsluta utan att spara ändringar - den kommer således troligtvis att vänta tills utskriften är klar.
Hälsningar
/Pelle