2013-05-03 117 views
4

有没有办法使用VBA将RTF文本从Access数据库中的备注字段复制到Word文档中。我目前有这段代码,但它会生成html文本(文本包含标签并未格式化)。使用VBA将Access中的RTF文本复制到Word表格

' Query the database and get the sales for the specified customer 
Set rs = CurrentDb.OpenRecordset("SELECT * FROM Sales WHERE Sales.[ID] ='" & Forms![customers]![id] & "'") 

'Check to see if the recordset actually contains rows 
    If Not (rs.EOF And rs.BOF) Then 
    rs.MoveFirst 
    Do Until rs.EOF = True 

    ' Create file and add rtf text 
    Set ts = fso.CreateTextFile("c:\temp\temp.rtf", True) 
    ts.Write rs(3) 
    ts.Close 

    ' Add a row 
    doc.Tables(1).Rows.Add 

    ' Get the number of the added row to add data 
    i = doc.Tables(1).Rows.Last.Index 

    ' Add sale to word table 
    doc.Tables(1).Cell(i, 2).Range.InsertFile "C:\temp\temp.rtf", , False 


    'Move to the next record. Don't ever forget to do this. 
    rs.MoveNext 
    Loop 
Else 
    MsgBox "There are not records in the recordset." 
End If 

MsgBox "Finished." & i 

rs.Close 
Set rs = Nothing 

有没有其他方法可以做到这一点?

+0

请输入您当前输出的示例。 – JohnFx 2013-05-03 05:13:51

回答

5

请注意,备注字段的“富文本”选项不会将格式化文本存储为RTF。格式化文本以HTML格式存储,这就是您在文本中看到HTML标签的原因。

以下Access VBA代码创建一个包含格式文本的Word文档并保存为.rtf。如果您不承诺使用RTF,则可以轻松修改代码以将文档保存为.doc.docx

Sub FormattedTextToWord() 
    Dim objWord As Object ' Word.Application 
    Dim fso As Object ' FileSystemObject 
    Dim f As Object ' TextStream 
    Dim myHtml As String, tempFileSpec As String 

    ' grab some formatted text from a Memo field 
    myHtml = DLookup("Comments", "MyTable", "ID=101") 

    Set fso = CreateObject("Scripting.FileSystemObject") ' New FileSystemObject 
    tempFileSpec = fso.GetSpecialFolder(2) & "\" & fso.GetTempName & ".htm" 

    ' write to temporary .htm file 
    Set f = fso.CreateTextFile(tempFileSpec, True) 
    f.Write "<html>" & myHtml & "</html>" 
    f.Close 
    Set f = Nothing 

    Set objWord = CreateObject("Word.Application") ' New Word.Application 
    objWord.Documents.Add 
    objWord.Selection.InsertFile tempFileSpec 
    fso.DeleteFile tempFileSpec 
    ' the Word document now contains formatted text 

    objWord.ActiveDocument.SaveAs2 "C:\Users\Public\zzzTest.rtf", 6 ' 6 = wdFormatRTF 
    objWord.Quit 
    Set objWord = Nothing 
    Set fso = Nothing 
End Sub 
+0

非常感谢。我能解决问题并将文件保存为docx格式。 – 2013-05-06 02:43:55

相关问题