Jag vill skriva ut ett worddokument i x antal kopior från VB. Varje dokument har ett adressfält som jag vill ändra. Men jag får för ofta fram felet "The memory could not be "read". Speciellt om jag sätter in en for-sats i koden. Men ockås om jag direkt efter programkörning startar om körningen. Har du laddat hem alla office oppdateringar? Jag har alla uppdateringarna till Offices installerade. Har provat på flera maskiner också. Det roliga är att en utskrift går bra men flera är omöjligt. Hej! Skall testa med at lägga en fördröjning. Har fnulat på det! Det verkar som om dokumentet inte "stänger av sig" efter utskrift. För efter omstart av min datorn när jag skulle öppna ett annat word-dokument så öppnades alla tidigare vb-word-utskrift försök och det blev en hel del. ....men testa at skapa om dokumentet endå. Det ska inte være mulig via VB eller VBA at få Word til at krasja. Om Word krasjar, och det inte er et drivrutinsproblem på datorn (typ skrivar eller annat), så är det enligt min efarenhet et skadat dokument inblandat. Kom ihåg att et word dokument inneholder mycket mer enn det du ser på skjermen. :-) Hej..Hallå!! (Utskriftproblem med Word)
Någon som vet varför det inte vill fungera ?
Har bifogat min kod:
[FORM]
<code>
Private Sub Form_Load()
Set WordApp = CreateObject("Word.Application")
'Öppna mallen
WordApp.Documents.Open App.Path & "\Test.doc", , True, False
SetWordText "[namn]", "Nisse Jönsson"
SetWordText "[adr]", "Virretorp"
SetWordText "[postnr]", "633 33"
SetWordText "[ort]", "Surtuna"
WordApp.ActiveDocument.PrintOut
'Visar Word - dokumentet
WordApp.Visible = True
Set WordRange = Nothing
Set WordDoc = Nothing
Set WordApp = Nothing
End Sub
</code>
[Modul]
<code>
Public WordApp
Public WordRange As Word.Range
Public Sub SetWordText(TextToReplace As String, NewText As String)
'Anger hela dokumentet som sökområde
Set WordRange = WordApp.ActiveDocument.Content
'Letar reda på strängen som skall bytas ut
WordRange.Find.Execute FindText:=TextToReplace, Forward:=True
'Om strängen hittas ersätts den
If WordRange.Find.Found = True Then
WordRange = NewText
End If
End Sub
</code>Sv: Hallå!! (Utskriftproblem med Word)
Kanske dokumentet ditt e skadat?
1. öppna dokumentet i Word.
2. Kopier all text till notepad
3. Klistra inn i et helt nytt word dokument. Spara och testa med dette.
om kopieringen via notepad löser problemet, så kan du prova å kopiere og klistre direkt uten å gå via Notepad. Om du da får samme problem, prøv å spare ditt original dokument i .rtf format og åpne det på nytt. Spar det igjen som .doc og prøv å bruke dette istedet.Sv: Hallå!! (Utskriftproblem med Word)
Sv: Hallå!! (Utskriftproblem med Word)
Det som jag tror är problemet är att Word bearbetar utskriften medan du försöker ändra i dokumentet och att dokumentet därför är låst.
För att testa kan du lägga in en fördröjning efter PrintOut, antingen genom en for-loop:
for i = 1 to 1000000: next i
(anpassa för hur lång tid det tar för loopen att köras på din dator)
Vet inte om detta sättet är "optimalt" för en fördröjning men man kan ju testa ;-)
Jag vet inte riktigt hur Windows hanterar arbetet när man gör så här men en DoEvents kanske kan hjälpa.Sv: Hallå!! (Utskriftproblem med Word)
Skall tillägga att det inte är några fel på word-dokumenten som jag använt. Alla uppdateringar på operativsystem, office och visual studio är utförda och maskinen spinner som en katt helt problemfritt. Sv: Hallå!! (Utskriftproblem med Word)
(Det fins många olika sett et dokument kan skadas på.)Sv: Hallå!! (Utskriftproblem med Word)
Testa att stänga dokumentet innan du kör viadare i snurran.
WordApp.ActiveDocument.Close() '*** Tror jag det är, du får titta.
Testa även att stänga word.
WordApp.Quit()
//fredda