我现在设置的模版只有15号,如果超过15行后,数据会填下在下面的空白处,致使我明细下面的备注全部被占领,有什么办法能让它规定的模版的行数后会自动换页填写!请高手指点。下面为导出明细窗体的代码。
Private Sub Command78_Click()
Dim strTemplate As String '模板文件路径名
Dim strPathName As String '输出文件路径名
Dim objApp As Object 'Excel程序
Dim objBook As Object 'Excel工作簿
Dim rst As Object '子窗体记录集
Dim intN As Integer '循环计数器
Dim blnNoQuit As Boolean '此标记为True时不关闭Excel
Dim fx As String
Dim tel As String
' tel = DLookup("电话", "供应商", "供应商编号='" & Me.供应商编号 & "'")
' fx = DLookup("备注", "供应商", "收货单位='" & Me.供应商 & "'")
'当前是新记录则提示并退出
If Me.NewRecord Then
MsgBox "当前没有数据可导出!", vbExclamation, "提示"
Exit Sub
End If
'模板文件路径
strTemplate = CurrentProject.Path & "\report\网络配送委托单模版.xlt"
'通过文件对话框取得另存为文件名
With FileDialog(2) 'msoFileDialogSaveAs
.InitialFileName = CurrentProject.Path & "\stmp\网络委托书 " & _
Me.托运出库编号 & ".xls"
If .Show Then strPathName = .SelectedItems(1)
End With
'对话框被取消则退出过程
If strPathName = "" Then Exit Sub
'如果文件名后没有.xls扩展名则加上
If Not strPathName Like "*.xls" Then strPathName = strPathName & ".xls"
'如果文件已存在,先删除已有文件
If Dir(strPathName) <> "" Then Kill strPathName
'设置鼠标指针为沙漏形状
DoCmd.Hourglass True
'创建Excel对象
Set objApp = CreateObject("Excel.Application")
'打开模板文件
Set objBook = objApp.Workbooks.Open(strTemplate)
objBook.Sheets("Sheet1").Select
With objApp
'根据主窗体记录写入订单表头
.Range("B3") = Me.收货单位
.Range("H3") = Me.出库日期
.Range("H4") = Me.供应商
.Range("K3") = Me.配送单号
.Range("F24") = Me.件数
.Range("H24") = Me.重量
' .Range("B23") = Me.出库日期
Set rst = Me.sfrDetail.Form.Recordset
If rst.RecordCount > 0 Then rst.MoveFirst
intN = 5
Do Until rst.EOF
intN = intN + 1
'写入订单明细
.Range("B" & intN) = rst!货物名称
.Range("C" & intN) = rst!件数
.Range("D" & intN) = rst!目的地
.Range("E" & intN) = rst!收货单位
.Range("F" & intN) = rst!收货人
.Range("G" & intN) = rst!收货电话
.Range("H" & intN) = rst!收货地址
.Range("J" & intN) = rst!计费体积
.Range("K" & intN) = rst!计费重量
rst.MoveNext
Loop
'由于明细数据的行数不固定,这里通过在模板中设置好第一行的格式
'第一行明细以后就在这里直接复制第一行的格式就行了
.Range("A4", "L18").Copy
.Range("A4", "L" & intN).PasteSpecial -4122 'xlPasteFormats
'在订单明细最后写入总计
' .Range("C" & intN + 1) = "件数总计:"
' .Range("D" & intN + 1).Formula = "=SUM(D4:D" & intN & ")"
' .Range("D" & intN + 1).Select
End With
'保存Excel文件,因为模板是不能修改的,所以是另存为
objBook.SaveAs strPathName
DoCmd.Hourglass False
Beep
If MsgBox("导出已完成,是否打开导出的Excel文件?", vbQuestion + vbYesNo, "导出完成") = vbYes Then
objApp.Visible = True
objBook.Saved = True
blnNoQuit = True
'自动进入打印预览
objApp.ActiveWindow.SelectedSheets.PrintPreview
End If
End Sub