Det jag försöker göra är att öppna ett Word dokument som ligger som ett OLE objekt i ett fält i en query, kopiera texten och klistra in den i ett annat Word dokoment. Efter detta vill jag öppna nästa i nästa fält och kopiera in innhållet i och klistra in...o.s.v Varför sparar du texterna i OLE-objekt och inte i textfält? Därför att dokument innehåller bilder etc...så dom måste hållas intakta. Det enda sätt jag känner till är att databinda fältet till en OLE kontroll. Du kommer då åt Word dokumentet med: Har du ett större kodexempel? Jag vet inget smidigt sätt att läsa innehållet i ett ActiveX-fält till en objektvariabel. Själv skulle jag nog lösa det så att jag sparade dokumenten i en nätverksmapp och sökvägen till dokumenten i databasen. Det krävs ingen mer kod. Access: Hur gör jag för att kopiera innhållet i ett Word document som ligger som
Problemet är det att jag verkar få RAW data och inte texten!!
Kan någon hjälpa mig med detta ?
Nedan följer hittils kodat:
Option Compare Database
Dim appWord As Object
Dim docs As Word.Documents
Dim doc As Word.Document
___________________________________________________
Function FooBar()
On Error GoTo FooBar_Err
Dim db As DAO.Database, qdf As DAO.QueryDef, qref As DAO.recordset
Dim i As Long
'Get data from Access with an SQL query
Set db = CurrentDb
Set qref = db.OpenRecordset("SELECT [Testinstruction] As inst FROM T_Testcase WHERE [Testinstruction] IS NOT NULL")
'Open a new Word document
Call OpenDoc
'If the table is empty then jump out
If qref.EOF Then Exit Function
'Jump to the beginning of the document
doc.Content.MoveStart
With qref
Do Until .EOF
'Put the data from the SQL query in the Word document
'TODO: The Document shall be pasted as text not RAW data
doc.Content.MoveStart
doc.Path InsertAfter(qref![inst])
'Jump to next record
.MoveNext
i = i + 1
Loop
End With
MsgBox (i)
'Save and close the document
'TODO: Ask the user on where to save the data
doc.SaveAs ("y:\\test.doc")
Call CloseDoc
Exit Function
FooBar_exit:
Exit Function
FooBar_Err:
Resume FooBar_exit
End Function
_________________________________________________________________
Private Sub OpenDoc()
Dim docs As Word.Documents
Set appWord = CreateObject("Word.Application")
Set docs = appWord.Documents
docs.Add
Set doc = appWord.ActiveDocument
doc.Activate
ErrorHandlerExit:
Exit Sub
End Sub
________________________________________________________________
Private Sub CloseDoc()
Set doc = Nothing
appWord.Application.Quit
Set appWord = Nothing
End SubSv: Access: Hur gör jag för att kopiera innhållet i ett Word document som ligger
Sv: Access: Hur gör jag för att kopiera innhållet i ett Word document som ligge
Sv: Access: Hur gör jag för att kopiera innhållet i ett Word document som ligger
<code>
Dim Doc as Word.Document
Set Doc = OLEKontrollNamn.Object
</code>Sv: Access: Hur gör jag för att kopiera innhållet i ett Word document som ligge
Sv: Access: Hur gör jag för att kopiera innhållet i ett Word document som ligg
Åsa HSv: Access: Hur gör jag för att kopiera innhållet i ett Word document som ligg
* Skapa ett formulär
* Bind formuläret till tabellen
* Lägg till en "Bunden" OLE Kontroll
* Bind OLE kontrollen till OLE fältet
Har gjort ett exempel vilket sammanfogar word dokument från OLE fält i en tabell:
<code>
'**
'* Modul: Modul1
'**
Option Compare Database
Public Sub CreateDocument()
Dim db As DAO.Database
Dim rs As DAO.Recordset
Dim fldData As DAO.Field
Dim Doc As Word.Document
Dim NewDoc As Word.Document
Dim frmConvert As Form_Formulär1
Set NewDoc = New Word.Document
NewDoc.Application.Visible = True
Set frmConvert = New Form_Formulär1
Set db = CurrentDb
Set rs = db.OpenRecordset("Documents", dbOpenForwardOnly)
Set fldData = rs("DocumentData")
Do Until rs.EOF
Set Doc = frmConvert.GetOLEObject(fldData.GetChunk(0, fldData.FieldSize))
Doc.Range.Copy
NewDoc.Application.Selection.Paste
rs.MoveNext
Loop
End Sub
</code>
<code>
'**
'* Form: Formulär1
'**
Public Function GetOLEObject(Data() As Byte)
Me.BundetOLE4.Value = Data()
Set GetOLEObject = Me.BundetOLE4.Object
End Function
</code>