24小时热门版块排行榜    

查看: 1236  |  回复: 3
当前只显示满足指定条件的回帖,点击这里查看本话题的所有回帖

wilstar

金虫 (正式写手)

[求助] 麻烦给段vba代码,实现access数据自动导入到word中

在网上找了个access文件,想实现文档的批量替换,详见附件
麻烦给段vba代码,实现access数据自动导入到word中
其中,通知单模板.doc位于模板文件夹内,存放位置给的是例子
在使用的时候就发现,其中的窗体域就类似于书签,见如下图
麻烦给段vba代码,实现access数据自动导入到word中-1
这就存在一个问题,书签的话,一个模板中只能采用一个,换言之,就是同样的标记只能使用一次,同样的内容可能在文件中出现多次,这样这个模板就用不起了
在网上看到别的用下图的书签就实现了同一文本的多次自动填写
麻烦给段vba代码,实现access数据自动导入到word中-2
但苦于看不到相应的代码,只能干着急
麻烦哪位高手指点一下,或者给个能够实现的代码或方式,以实现数据在word中的批量多次导出或者叫填充,在此谢过了

最后附上access文件中的“导出word的代码”
CODE:
Private Sub 导出word_Click()
    On Error GoTo ErrorHandler
    Dim strTemplate As String
    Dim strFileName As String
    Dim objApp As Object    'New Word.Application
    Dim objDoc As Object    'Word.Document
    Dim objField As Object    'Word.Field
    Dim rst As Object
    Dim blnNoQuit As Boolean

    strTemplate = CurrentProject.Path & "\模板\通知单模板.doc"


    '设置鼠标指针为沙漏形状
    DoCmd.Hourglass True

    Set objApp = CreateObject("Word.Application")
    Set objDoc = objApp.Documents.Open(strTemplate)
    Set rst = CurrentDb.OpenRecordset("SELECT * FROM tbl通知单 WHERE ID=" & ID, , 4)    'dbReadOnly
    If Not rst.EOF Then
        strFileName = CurrentProject.Path & "\存放位置\" & "通知单" & rst!ID & ".doc"
        '如果文件已存在,先删除已有文件
        If Dir(strFileName) <> "" Then Kill strFileName
        objDoc.FormFields("钢筋绑扎胎具").result = rst!钢筋绑扎胎具
        objDoc.FormFields("桥梁名称").result = rst!桥梁名称
        objDoc.FormFields("箱梁编号").result = rst!箱梁编号
        objDoc.FormFields("份数").result = Nz(rst!份数)
        objDoc.FormFields("钢筋吊装时间").result = Format(rst!钢筋吊装时间, "yyyy年m月d日")
        objDoc.FormFields("交接人").result = rst!交接人
        objDoc.FormFields("字段1").result = rst!字段1
    End If
    rst.Close
    objDoc.SaveAs strFileName
    Beep
    If MsgBox("导出已完成,是否打开该文件?", vbQuestion + vbYesNo, "导出完成") = vbYes Then
        objApp.Visible = True
        objDoc.Saved = True
        blnNoQuit = True
    End If

ExitHere:
    On Error Resume Next
    If Not blnNoQuit Then
        If Not objDoc Is Nothing Then objDoc.Saved = True
        If Not objApp Is Nothing Then objApp.Quit
    End If
    '恢复鼠标指针
    DoCmd.Hourglass False
    '释放对象变量内存
    Set objApp = Nothing
    Set objDoc = Nothing
    Set rst = Nothing
    Exit Sub

ErrorHandler:        '错误处理程序
    If Err = 70 Then
        MsgBox "不能替换文件,因为无法删除已有文件,可能的原因有:" & vbCrLf & vbCrLf & _
               "1.该文件处于打开状态。" & vbCrLf & _
               "2.没有对此目录的写入权限。", vbCritical
    Else
        MsgBox Err.Description, vbCritical, "出错 #" & Err
    End If
    Resume ExitHere

End Sub[filename]导出word.mdb[/filename][filename]通知单模板.doc[/filename]

弄好之后,发现有些文字自动转成图片了,就麻烦直接看access文件吧

[ Last edited by jjdg on 2014-2-13 at 21:16 ]
回复此楼

» 本帖附件资源列表

  • 欢迎监督和反馈:小木虫仅提供交流平台,不对该内容负责。
    本内容由用户自主发布,如果其内容涉及到知识产权问题,其责任在于用户本人,如对版权有异议,请联系邮箱:xiaomuchong@tal.com
  • 附件 1 : 导出word.mdb
  • 2014-02-13 09:55:25, 488 K
  • 附件 2 : 通知单模板.doc
  • 2014-02-13 09:55:27, 50 K

» 猜你喜欢

» 本主题相关价值贴推荐,对您同样有帮助:

已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

wilstar

金虫 (正式写手)

引用回帖:
3楼: Originally posted by deephill at 2014-02-17 23:11:07
模板不懂。
用按键精灵来做,也不好搞呀

虽然没解决问题,还是谢谢了
4楼2014-02-18 09:40:22
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
查看全部 4 个回答

deephill

铁杆木虫 (职业作家)

模板不懂。
用按键精灵来做,也不好搞呀
3楼2014-02-17 23:11:07
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
信息提示
请填处理意见