Hej,Problem med Late bindings med word
Jag använder late bindings för att komma åt ett word dokument för att sedan skriva över viss text där och ersätta den med min egen ifrån en access databas.
Problemet är dock om jag har mellanrum i min låt säga textbox så blir det en fyrkant i word (okänt typsnitt).
Koden jag använder fick jag av en medlem här på pellesoft, jag kommer dock inte ihåg vem :)
Public Sub searchAndReplace(myWordDoc As String, myFields() As String, myReplacements() As String, PrintIt As Boolean, Optional SaveW As String)
Dim objWord As Object 'Måste lägga till en referens till Word Object Library
Dim objWordDoc As Object 'Project --> References --> Microsoft Word X.0 Object Library
Set objWord = CreateObject("Word.Application")
Set objWordDoc = CreateObject("Word.Document")
Dim WordRuns As Boolean
Dim i As Integer
'Kontrollera om en instans av word redan kör
On Error Resume Next
Set objWordDoc = objWord.Documents.Open(myWordDoc)
If objWordDoc Is Nothing Then
MsgBox "Kunde inte öppna dokumentet " & myWordDoc
objWord.Quit
Set objWord = Nothing
Set objWordDoc = Nothing
Exit Sub
End If
objWordDoc.Activate
For i = 1 To FIELDS
'Nu skall vi utföra lite seacrh and replace
'REPLACE myFields(i) med myReplacements(i)
With objWordDoc.Content.Find
.Text = myFields(i)
.Replacement.Text = myReplacements(i)
.Execute Replace:=wdReplaceAll, Forward:=True, Wrap:=wdFindContinue
End With
Next i
If PrintIt Then 'Skriv ut dokumentet
objWordDoc.PrintOut
'// Vänta tills skriva ut processen är klar med det. Finns säkert
'nåt bra sätt att vänta på att jobbet skickas till skrivaren. Men
'orkar inte implementera denna kod här. Grejen är att väntar man
'inte så hinner jobbet inte skickas till skrivaren innan word stängs
'och då står man där utan att fatta varför inget kom till skrivaren
'Vänta 3 sekunder. Labba med 3:an om det inte funkar. Men tips är
'att byta denna delay mot en kod som kollar på nåt sätt om skrivaren
'fått jobbet.
Dim s As Single
s = Timer
Do
DoEvents
Loop Until (Timer > s + 3)
End If
If Not PrintIt Then
'// Spara dokumentet.
objWord.ActiveDocument.SaveAs SaveW
End If
objWordDoc.Close wdDoNotSaveChanges
'Släpp referensen
Set objWordDoc = Nothing
Set objWord = Nothing
End Sub
Någon som har den minsta susning?