Jag vill via en knapp i en access-applikation skriva ut ett antal Word-dokument. Hur gör jag detta. Jag vill även kunna via koden specificera skrivare (några dokument ska skrivas ut på speciell skrivare), men det är inte nödvändigt i första versionen. Så här skulle du kunna göra: Tack för svaret. Jag hittade dock svaret själv ute på internet (man kanske ska leta lite innan man fråga, men jag hade ganska brottom). Dock fungera det fortfarande inte perfekt då jag inte har samma version av Word som slutanvändaren. Visserligen går det ju ändra referensen till Word manuallet (från Word 10 till Word 9), men om jag leverera ny version via mail blir det problem. Finns det något smidigt sätt att lösa detta via VBA? Det brukar fungera utan att ändra referenser om användaren har en högre version av Word. Alltså infoga referens till Word 9 så kan användaren ha Word 9 eller högre. Jag ahr inte Word 9 på min dator. OM jag ska kunna köra programmet måste jag ändra till Word 10, och jag kan inet ändra tillbaka till word 9 förrän jag sitter vid kundens dator Då kanske du ska använda Late Binding istället för Early Binding:Skriv ut word-dokument med VBA-kod
Det finns även några excel-dokument som ska ut.Sv: Skriv ut word-dokument med VBA-kod
Lägg först till Word i projektets referenser.
Dim objWdApp As Word.Application
Dim objWdDoc As Word.Document
Set objWdApp = New Word.Application
Set objWdDoc = objWdApp.Documents.Open("D:\Test\Dok1.doc")
objWdApp.Dialogs(wdDialogFilePrint).Show
objWdDoc.Close wdDoNotSaveChanges
objWdApp.Quit
Set objWdDoc = Nothing
Set objWdApp = NothingSv: Skriv ut word-dokument med VBA-kod
Sv: Skriv ut word-dokument med VBA-kod
Sv: Skriv ut word-dokument med VBA-kod
Sv: Skriv ut word-dokument med VBA-kod
<code>
Dim objWdApp As Object
Dim objWdDoc As Object
Const wdDialogFilePrint as Integer = 88
Const wdDoNotSaveChanges as Integer = 0
Set objWdApp = CreateObject("Word.Application")
Set objWdDoc = objWdApp.Documents.Open("D:\Test\Dok1.doc")
objWdApp.Dialogs(wdDialogFilePrint).Show
objWdDoc.Close wdDoNotSaveChanges
objWdApp.Quit
Set objWdDoc = Nothing
Set objWdApp = Nothing
</code>
Ta isåfall bort alla referenser till Word. Observera att du inte kan använda Wordkonstanterna rakt av vid Late Binding.
PS. Om det hade varit lagligt kunde jag ha rått dig att ta en kopia av kundens "Msword9.olb". DS