|
1.在Access宏中如何设置新创建的word文件名呢?在没有保存的情况下。
2.如何新建一个表格呢?我想把表中的数据都一行行的加进去。
偶现在的代码如下,谢谢。
Private Sub Command5_Click()
'步骤1:建立数据连接cnn
'由于数据库已经打开,所以直接应用CurrentProject.Connection就可以建立连接
Set cnn = New ADODB.Connection
Set cnn = CurrentProject.Connection
'步骤2:用SQL语句创建记录集rs
Set rs = New ADODB.Recordset
'设定游标类型与锁定类型
rs.CursorType = adOpenKeyset
rs.LockType = adLockOptimistic
'制定特定的查询条件,可以是任何有效的SQL查询,甚至包括多表、多条件等复杂的查询,查询条件也常常从窗体取得
SQL = "select * from users"
'创建记录集rs
rs.Open SQL, cnn
'统计字段数及记录数
total_fields = rs.Fields.Count
total_records = rs.RecordCount
'步骤3:建立Word文档对象
Set mywdapp = CreateObject("word.application")
'调整Word窗口大小
mywdapp.WindowState = wdWindowStateNormal
'生成新的Word文档实例
mywdapp.Documents.Add
'设置视图为页面视图
'mywdapp.ActiveWindow.View.Type = wdPrintView
'转到Word视图,显示文档生成过程
mywdapp.Visible = True
mywdapp.Activate
'设置文档(表格)字体
mywdapp.ActiveDocument.Range.Font.Size = "11"
'步骤4:将记录集rs中的字段名称和字段内容输出到Word,各字段之间用制表符分隔
'输出字段名称
For i = 0 To total_fields - 2
mywdapp.Selection.TypeText Text:=rs.Fields(i).Name & vbTab
Next i
'最后一个字段名称后加回车符
mywdapp.Selection.TypeText Text:=rs.Fields(total_fields - 1).Name & vbCrLf
'逐条输出字段内容
Do While Not rs.EOF
For i = 0 To total_fields - 2
tmpstr = rs.Fields(i).Value
If rs.Fields(i).Name = "age" Then
tmpstr = Format(tmpstr, "####.00")
End If
mywdapp.Selection.TypeText Text:=tmpstr & vbTab
Next i
'一条记录的最后一个字段后加回车符
mywdapp.Selection.TypeText Text:=rs.Fields(total_fields - 1).Value & vbCrLf
rs.MoveNext
Loop
'步骤5:关闭记录集
rs.Close
Set rs = Nothing
mywdapp.Application.ScreenRefresh '刷屏
'转到Acdess视图,显示结束对话框
mywdapp.Visible = False
Msg = "数据提取完毕。" & vbCrLf & vbCrLf
Msg = Msg & "总记录数=" & total_records & " 条"
MsgBox Msg, vbOKOnly, "数据提取完毕"
'转到Word视图,显示文档
mywdapp.Visible = True
mywdapp.Activate
End Sub |
|