程序员

ACCESS窗体数据导出及经典用法对话

2021-01-30  本文已影响0人  塔山梦境

经典用法_找到已打开的相同文件,就自动关闭它(多种语句搜索与提示)

在设计数据库窗体导出这步时,往往都已打开了相同的文件,但在工作中我们都会忘记,而重新打开或者已导出了数据时,设置了自动打开文件,临时有事外出回来后忘记了此事又重新打开,往往会替换掉原来的文件。出现这种情况非常不方便,所以就在网搜索了一下,找到一些判断语句,结合一些对话语法,完成了自动判断文件是不是已经打开,然后提示怎样操作。

为了让更多的人能理解,在语句处写下了注释,注释有错的地方,请看客给予提出宝贵意见。

Private Sub export_Click()

On Error GoTo 200  '此处是判别如果出现文件已打开了,就直接跳到200行处执行新的命令

Dim myxl As Object  '是声明myxl变量为Object 数据类型

  Set myxl = GetObject(, "excel.application") '获取一个对象

  For Each axls In myxl.Workbooks  '循环语句,获取对象文件

      If InStr(1, axls.Name, "柴油罐组采购检查表.xls", 1) Then  '此处是对已获取到的文件进行检测是否已经打开,如果打开了,就进行提示

      MsgBox "文档原已打开,现将提示您进行操作!"  '提示语句

'下面加入一条MSG人机对话,提示操作者是否想对原已经打开的文件进行关闭还是保留操作

  msg = "如果重新打开,请选择“是”,程序将为您关闭文件!,随后您重新点击按钮打开文件!" & vbCrLf & _

        "                            " & vbCrLf & _

        "如果不重新打开,请选择“否”,程序将为您保持现有打开状态!"

If MsgBox(msg, vbYesNo) = vbYes Then  '固化选择是,就关闭文件,另选择就保留打开状态。vbYes和vbNo的设置是要看您给对方一个怎样的操作,操作的结果就是紧接着后面的语句

        axls.Close '关闭文档

        myxl.Quit  '退出excel

      Exit For

    End If

    End If

Next axls

  Set myxl = Nothing  ''释放内存资源,让计算有更多的空间,通道顺畅。

GoTo 300

'下面是执行提示命令,提示操作者怎样进行操作,是人机对话

200: If MsgBox("文档没有打开, 或者不存在!" & vbCrLf & _

"                                          " & vbCrLf & _

"点击“是”,将为您创建文件。点击“否 ”,直接退出!", vbYesNo) = vbNo Then

Exit Sub

300: MsgBox "再见" '提示语句

Else  '此处是在上面如果都没有出现错误的情况下,转到这里开始执行下面一切语句命令

Dim fileA As String  '定义一个字符串类型的变量fileA

Dim fileB As String '定义一个字符串类型的变量fileB

fileA = CurrentProject.Path + "\柴油罐组采购检查表模板.xls " '指定文件名称

fileB = CurrentProject.Path + "\" & Format(Now(), "yyyy" & "年" & "mm" & "月" & "dd" & "日") & "柴油罐组采购检查表.xls " '指定文件名称变更成为以日期为前辍的文件名称

FileCopy fileA, fileB '执行复制文件另存为新的文件

Set rst = Nothing  '释放内存资源,让计算有更多的空间,通道顺畅。

MsgBox "已完成采购周报模板更名,您可以在新文件中插入数据了!"

Dim xlApp As excel.Application

Dim xlBook As Workbook, xlSheet As Worksheet '定义

Set xlApp = CreateObject("Excel.Application")

Set xlApp = New excel.Application

DoCmd.SetWarnings False '  执行下面查询时,屏蔽掉提示消息

'开始第一次的第1个文件数据导出

Set xlBook = xlApp.Workbooks.Open(CurrentProject.Path & "\" & Format(Now(), "yyyy" & "年" & "mm" & "月" & "dd" & "日") & "柴油罐组采购检查表.xls") '打开要输出的EXECL文件

Set xlSheet = xlBook.Worksheets(1) '这里是插入数据而需要打开上报数据文件中第1个工作表

xlSheet.Range("A3", "T60000").ClearContents '这里是标注插入数据从A列第3行至J列60000行之间

Me.checkList_export.Form.Recordset.MoveFirst  '从窗体上把数据导出,但窗体必须要打开

xlBook.Worksheets(1).Range("A3").CopyFromRecordset Me.checkList_export.Form.Recordset    '这里是完成第1个数据文件的导出

xlBook.Save

xlBook.Close '关闭工作薄

Set rst = Nothing  '释放内存资源,让计算有更多的空间,通道顺畅。

DoEvents

MsgBox "您选择的数据已完成导出,正在打开文件,请等待!"  '提示数据文件导出已完成,再提示后面操作

GoTo 120

120: MsgBox "祝您工作愉快"

FileName = CurrentProject.Path & "\柴油罐组采购检查表.xls "

Shell "excel.exe " & FileName, 3          '打开文件

End If

End Sub

上一篇下一篇

猜你喜欢

热点阅读