美文网首页程序员
ACCESS窗体数据导出及经典用法对话

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

作者: 塔山梦境 | 来源:发表于2021-01-30 22:53 被阅读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

    相关文章

      网友评论

        本文标题:ACCESS窗体数据导出及经典用法对话

        本文链接:https://www.haomeiwen.com/subject/lkqltltx.html