【示例】导出多表格WORD文档-林岚
Access软件网QQ交流学习群(群号码198465573),欢迎您的加入!
首页 >技术文章> Access数据库-模块/函数/VBA


【示例】导出多表格WORD文档

发表时间:2010/10/10 10:15:26 评论(0) 浏览(8096)  评论 | 加入收藏 | 复制
   
摘 要:1、包含导出两个表格到WORD.
2、包含在查询中产生自动增加序号的函数。
正 文:

感谢网站,感谢各位老师。汇集大家的智慧,完成自己的设想,能拿得出手就绝不吝啬。

点击下载此附件

Function Zsb(模板名, 文件名, 记录集, 记录集2, 起始行, 表号, Optional 条件 As String)
Dim doc As New Word.Document  ' 定义引用 Microsoft Word 的变量。
Dim BTable As Word.Table
Dim dbs As Database  '定义引用数据库的变量。
Dim rst As DAO.Recordset '定义引用记录集的变量。
Dim i, j, P, m, n As Integer
Dim s As String
'On Error GoTo err1
'使用DAO操作打开明细记录集
Set dbs = CurrentDb()
If Nz(条件) <> "" Then 记录集 = "select * from " & 记录集 & " where " & 条件
Set rst = dbs.OpenRecordset(记录集)                 '设置记录集
If InStr(1, UCase(模板名), ".DOC") > 0 Then
 WJ1 = CurrentProject.Path & "\" & 模板名
'模板文件名(CurrentProject.Path为当前数据库的路径)
Else
 WJ1 = CurrentProject.Path & "\" & 模板名 & ".DOC"
'模板文件名(CurrentProject.Path为当前数据库的路径)
End If
If InStr(1, UCase(文件名), ".DOC") > 0 Then
 WJ2 = CurrentProject.Path & "\" & 文件名           '目标文件名
Else
 WJ2 = CurrentProject.Path & "\" & 文件名 & ".DOC"  '目标文件名
End If
FileCopy WJ1, WJ2                                   '拷贝文件(模板文件拷贝成目标文件)
Set doc = GetObject(WJ2, "Word.Document")           '建立与Word的连接变量
doc.Application.Visible = True                      '打开属性为真
doc.Activate
Set BTable = doc.Application.ActiveDocument.Tables(表号)
Set rst = dbs.OpenRecordset(记录集)   '设置记录集
If Not rst.EOF Then rst.MoveFirst
i = 起始行
While Not rst.EOF
 Set rowNew = BTable.Rows.Add() '加入一行
 j = 0
 For Each HCell In BTable.Rows(i).Cells
  HCell.Range.InsertAfter Nz(rst.Fields(j))
  j = j + 1
 Next HCell
 rst.MoveNext
 i = i + 1
Wend

Set rst = dbs.OpenRecordset(记录集2)   '设置记录集
If Not rst.EOF Then rst.MoveFirst
i = 起始行
Set BTable = doc.Application.ActiveDocument.Tables(表号 + 1)

While Not rst.EOF

 Set rowNew = BTable.Rows.Add() '加入一行
 j = 0
 For Each HCell In BTable.Rows(i).Cells
  HCell.Range.InsertAfter Nz(rst.Fields(j))
  j = j + 1
 Next HCell
 rst.MoveNext
 i = i + 1
Wend

doc.Save                                             '保存Word
'doc.Application.Quit                                 '关闭Word
Set doc = Nothing                                    '清除内存变量
Set BTable = Nothing
Set dbs = Nothing
Set rst = Nothing
Zsb = True
Exit Function
err1:
doc.Application.Quit
Set doc = Nothing                                   '清除内存变量
Set BTable = Nothing
Set dbs = Nothing
Set rst = Nothing
Zsb = False
MsgBox ("出现错误,可能是Word已打开,请关闭Word后再试")
End Function

'查询中生成自动排序的字段


Function SerializeAdo(qryname As String, KeyName As String, KeyValue, Optional orderneme As String = "", Optional Condition As String = "") As Long
' On Error GoTo Err_Serialize
    Dim rs As ADODB.Recordset
    Set rs = New ADODB.Recordset
    Dim px, tj
    If Condition <> "" Then
     tj = "select * from " & qryname & " where " & Condition
    Else
     tj = "select * from " & qryname
    End If
    If orderneme <> "" Then
     px = tj & " orDER BY " & orderneme
    Else
     px = tj
    End If
    rs.ActiveConnection = CurrentProject.Connection
     rs.Open px, , adOpenStatic, adLockReadOnly, adCmdTableDirect
     'Find the current record with key value
         Select Case rs.Fields(KeyName).Type
            ' Find data type key value
            Case DB_INTEGER, DB_LONG, DB_CURRENCY, DB_SINGLE, DB_DOUBLE, DB_BYTE
               rs.Find "[" & KeyName & "] = " & KeyValue
            ' Find date type key value
            Case DB_DATE
               rs.Find "[" & KeyName & "] = #" & KeyValue & "#"
            ' Find text type key value
            Case DB_TEXT
               rs.Find "[" & KeyName & "] = '" & KeyValue & "'"
            Case Else
               MsgBox "Errer ;   Invalid KeyName or KeyValue  "
         End Select

        SerializeAdo = Nz(rs.AbsolutePosition, 0)
        rs.Close
        Set rs = Nothing
       Exit Function
Err_Serialize:
         MsgBox "QueryName ", 64, " is wrong "
        Exit Function
End Function

 


Access软件网交流QQ群(群号:198465573)
 
 相关文章
选择多项对象项目分类导出至EXCEl示例  【叶海峰  2012/11/22】
将Access数据导出到 Word 文档  【宏鹏  2012/12/12】
导出SQL Server数据库表中字段的说明/备注  【Adolph Sun  2013/2/18】
打印预览报表时直接导出为pdf文件的vba代码  【金宇  2013/4/30】
【Access拓展应用】VBA导出到Excel提速之法  【nivenm  2013/5/14】
常见问答
技术分类
相关资源
文章搜索
关于作者

林岚

文章分类

文章存档

友情链接