设为首页收藏本站Access中国

Office中国论坛/Access中国论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

12
返回列表 发新帖
楼主: 笑夕阳
打印 上一主题 下一主题

[Access本身] 一个关于导出到word的问题,感谢todaynow的热心回复

[复制链接]
11#
 楼主| 发表于 2011-4-13 17:02:52 | 只看该作者
现在告诉我的问题是”语法错误(操作符丢失)在查询表达式‘项目编号=’中
12#
发表于 2011-4-13 17:15:31 | 只看该作者
本帖最后由 todaynew 于 2011-4-13 17:19 编辑

缺点操作符
Me.项目编号

最好写成:
Set rstDetails = CurrentDb.OpenRecordset("SELECT * FROM 发票明细表 WHERE 项目编号=" & nz(Me.项目编号.value,0)

避免Me.项目编号.value=null时跳错。
13#
 楼主| 发表于 2011-4-13 17:19:43 | 只看该作者
解决了,感谢大家,我把代码发上来
Private Sub 常规报告_Click()
DoCmd.RunCommand acCmdSaveRecord    '打印前先保存记录

On Error GoTo Err_cmdExportToWord_Click
    Dim objApp          As Object 'Word.Application
    Dim objDoc          As Object 'Word.Document
    Dim win             As Object 'Word.窗口
    Dim doc             As Object
    Dim docApp          As Object
    Dim strTemplates    As String '模板文件路径名
    Dim strFileName     As String '将数据导出到此文件
    If Me.NewRecord Then
        MsgBox "当前没有可导出的数据。", vbInformation, "提示"
        Exit Sub
    End If
   
    strTemplates = CurrentProject.Path & "\常规项目报告模板.dotx"
   
    '通过文件对话框生成另存为文件名
    With FileDialog(2)  'msoFileDialogSaveAs
        .InitialFileName = CurrentProject.Path & "\常规项目报告模板.doc"
        If .Show Then strFileName = .SelectedItems(1)
    End With
   
    '如果对话框被取消,则变量没有被赋值,退出过程
    If strFileName = "" Then Exit Sub
   
    '文件名必须包括“.doc”的文件扩展名,如没有则自动加上
    If Not strFileName Like "*.doc" Then strFileName = strFileName & ".doc"
    '如果文件已存在,则删除已有文件
    If Dir(strFileName) <> "" Then Kill strFileName
   
    '将光标设置为沙漏形,以示正在执行程序
    DoCmd.Hourglass True
   
    '打开模板文件
    Set objApp = CreateObject("Word.Application") 'createObject("类名")
    objApp.Visible = True
    Set objDoc = objApp.Documents.Open(strTemplates, , True)
    Set win = objDoc.ActiveWindow
   With win.Selection.Find    '使用查找和替换
            .Text = "[报告编号]"
            .Replacement.Text = Nz(Me.报告编号)
            .Execute , , , , , , , , , , 2  '全部替换
   End With
   
    '将写入数据的模板另存为文档文件
    objDoc.SaveAs strFileName
    objDoc.Saved = True
   
Exit_cmdExportToWord_Click:
    If Not objDoc Is Nothing Then objApp.Visible = True
    '恢复光标形状
    DoCmd.Hourglass False
    Set objApp = Nothing
    Set objDoc = Nothing
    Set objTable = Nothing
    Exit Sub
   
Err_cmdExportToWord_Click:
    MsgBox Err.Description, vbCritical, "出错"
    Resume Exit_cmdExportToWord_Click
    End Sub
14#
 楼主| 发表于 2011-4-13 17:21:25 | 只看该作者
用select那个SQL把我弄晕了,还是这个我容易理解,SQL语句老出错⊙﹏⊙b汗  谢谢todaynow,厉害啊一个、都看到了
15#
发表于 2011-4-13 17:25:06 | 只看该作者
笑夕阳 发表于 2011-4-13 17:19
解决了,感谢大家,我把代码发上来
Private Sub 常规报告_Click()
DoCmd.RunCommand acCmdSaveRecord    ...

应该将查找替换功能独立写为函数:
function 查找替换(doc as Word.Document,str0 as string,str1 as string)
with doc.selection.find
    .text=str0
    .replacement.text=str1
end with
end function

这样在文档中写多个字段时,可以通过遍历fileds对象的名称和值,循环对word文档做查找替换动作。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|站长邮箱|小黑屋|手机版|Office中国/Access中国 ( 粤ICP备10043721号-1 )  

GMT+8, 2024-6-7 20:48 , Processed in 0.134988 second(s), 26 queries .

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表