下面是原来我做过的将图片文件存入数据库的例子,DOC文件的路子是一样的,你可以看看:)
主要是使用AppendChunk和GetChunk方法,以下是frm文件中的源代码,代码中有功能的注释: Option Explicit ' 本程序使用的 Access 数据库的格式如下: 

' 数据库名称:              picdata.mdb 
' 表名称:                  pic 
' 字段列表: 
'                            ID            自动编号 
'                            Key          图片描述(文本) 
'                            FileName      图片文件名称(文本) 
'                            FileData      图片的二进制数据(OLE对象) 

' 使用方法:使用 Browse 按钮浏览图片,使用 Save 按钮将图片存储到数据库。 Private Const BLOCK_SIZE = 1024 * 8 '设定一次读取的缓冲区大小(8K) Private Cnn As Connection 
Private Rst As Recordset '用于添加数据的记录集合 
Private WithEvents RstView As Recordset '用于浏览的记录集合 ' 这个Sub用于显示“打开文件”对话框 Private Sub cmdBrowse_Click()     cdlOpen.Filter = "BMP¦*.bmp¦GIF¦*.gif¦JPEG¦*.jpg" 
    cdlOpen.FileName = "" 
    cdlOpen.ShowOpen 
    If cdlOpen.FileName = "" Then Exit Sub 
    
    Debug.Print cdlOpen.FileName 
    Debug.Print cdlOpen.FileTitle 
    
    txtFileName.Text = cdlOpen.FileName 
    txtDesc.Text = cdlOpen.FileTitle End Sub ' 这个Sub用于将选定的图片存储到数据库中 Private Sub cmdSave_Click() On Error GoTo TransError     Dim fs As Object 
    Dim buf() As Byte 
    Dim intFileId As Long 
    Dim intFileSize As Long 
    Dim i As Integer, j As Integer, k As Integer     Set fs = CreateObject("Scripting.FileSystemObject") 
    If Not fs.fileexists(txtFileName.Text) Then 
        MsgBox "Can not read file! - " & txtFileName.Text 
        Exit Sub 
    End If 
        
    If txtDesc.Text = "" Then 
        MsgBox "Please input the description for the file!" 
        Exit Sub 
    End If 
    
    intFileId = FreeFile() 
    Open cdlOpen.FileName For Binary Access Read As #intFileId 
    intFileSize = LOF(intFileId) 
    
    i = intFileSize \ BLOCK_SIZE 
    j = intFileSize Mod BLOCK_SIZE 
    ReDim buf(BLOCK_SIZE) 
    
    Screen.MousePointer = 11 
    DoEvents 
        
    Rem {{{{ 
    
        Cnn.BeginTrans 
        
        Rst.AddNew 
        Rst("FileName") = txtDesc.Text 
        Rst("Key") = txtDesc.Text 
        For k = 1 To i 
            Get #intFileId, , buf() 
            Rst("FileData").AppendChunk buf() 
        Next 
        If j <> 0 Then 
            ReDim buf(j) 
            Get #intFileId, , buf() 
            Rst("FileData").AppendChunk buf() 
        End If 
        Rst.Update 
        
        Cnn.CommitTrans 
        
    Rem }}}} 
    
    Close #intFileId 
    RstView.Requery 
    datFileDesc.Refresh 
    Screen.MousePointer = 0 
    
    txtFileName.Text = "" 
    txtDesc.Text = "" 
    
    Exit Sub 
    
TransError:     MsgBox "Error! - " & Err.Description 
    Err.Clear 
    Cnn.RollbackTrans End Sub ' 在窗体加载时打开数据库连接,并进行记录集初始化 Private Sub Form_Load()     Dim openString As String     Set Cnn = CreateObject("ADODB.Connection") 
    Cnn.CursorLocation = adUseClient 
    
    openString = "DBQ=" & App.Path & "\PicData.MDB;" 
    openString = openString & "DRIVER={Microsoft Access Driver (*.mdb)}" 
    
    Cnn.Open openString 
    
    Set Rst = CreateObject("ADODB.Recordset") 
    Set RstView = Cnn.Execute("Select key,filename,id from pic") 
    
    Rst.CursorType = adOpenKeyset 
    Rst.LockType = adLockOptimistic 
    Rst.Open "pic", Cnn, , , adCmdTable 
    
    Set datFileDesc.DataSource = RstView End Sub ' 在记录集发生移动时(Datagrid被单击时)显示图片 Private Sub RstView_MoveComplete(ByVal adReason As ADODB.EventReasonEnum, ByVal pError As ADODB.Error, adStatus As ADODB.EventStatusEnum, ByVal pRecordset As ADODB.Recordset)     Dim buf() As Byte 
    Dim intFileId As Long 
    Dim intFileSize As Long 
    Dim i As Integer, j As Integer, k As Integer 
    Dim RstTmp As Recordset     If RstView.EOF() Or RstView.BOF() Then Exit Sub     Set RstTmp = Cnn.Execute("Select FileData From Pic Where ID=" & RstView("ID")) 
    intFileId = FreeFile() 
    Open App.Path & "\" & RstView("FileName") _ 
        For Binary Access Write As #intFileId 
    intFileSize = RstTmp("FileData").ActualSize 
    Debug.Print "intFileSize = " & intFileSize 
    i = intFileSize \ BLOCK_SIZE 
    j = intFileSize Mod BLOCK_SIZE 
    ReDim buf(i) 
        
    Rem {{{{ 
    
        For k = 1 To i 
            buf() = RstTmp("FileData").GetChunk(BLOCK_SIZE) 
            Put #intFileId, , buf() 
        Next 
        If j <> 0 Then 
            ReDim buf(BLOCK_SIZE) 
            buf() = RstTmp("FileData").GetChunk(j) 
            Put #intFileId, , buf() 
        End If 
    
    Rem }}}} 
    
    Close #intFileId 
    pic1.Picture = LoadPicture(App.Path & "\" & RstView("FileName")) 
    Kill App.Path & "\" & RstView("FileName") End Sub