Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/kotlin/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ms access workbooks.close对我不起作用_Ms Access_Vba - Fatal编程技术网

Ms access workbooks.close对我不起作用

Ms access workbooks.close对我不起作用,ms-access,vba,Ms Access,Vba,希望有人能帮我解决以下问题 我想确保特定工作簿在更新之前已关闭。 我本来打算从这个开始 Private子命令1_Click() 工作簿(“workbookname.XLSM”)。关闭Savechanges=False 末端接头 我也试过了 工作簿(“workbookname.Xlsm”)。关闭 两个我都单独运行,都给我错误代码9 特定文件将始终位于用户的桌面上 我想这可能与我的参考资料有关,所以我检查并打开了以下参考资料。(有些是因为其他具体原因) Visual Basic For Appli

希望有人能帮我解决以下问题

我想确保特定工作簿在更新之前已关闭。 我本来打算从这个开始

Private子命令1_Click()
工作簿(“workbookname.XLSM”)。关闭Savechanges=False
末端接头

我也试过了

工作簿(“workbookname.Xlsm”)。关闭

两个我都单独运行,都给我错误代码9

特定文件将始终位于用户的桌面上

我想这可能与我的参考资料有关,所以我检查并打开了以下参考资料。(有些是因为其他具体原因)

  • Visual Basic For Applications
  • Microsoft Access 16.0对象库
  • OLE自动化
  • Microsoft DAO 3.6对象库
  • Microsoft Excel 16.0
  • 对象库Microsoft脚本运行时
真希望有人能帮我。我已经浏览了相当多的论坛,但没有找到相同的问题或解决方案


w、 k.r.Drac.

您必须检查它是否打开,并正确引用打开的对象。下面的函数(我在某处找到)返回一个关于文件的真/假值:

您可以这样使用它:

Private Sub Command1_Click()
Dim xls As Object

If IsWorkBookOpen("C:/Users/Desktop/Workbook.xlsm") = True Then
    Set xls = GetObject("C:/Users/Desktop/Workbook.xlsm")
    xls.Close True
Else
    'do stuff if closed
End If

End Sub
功能:

Function IsWorkBookOpen(FileName As String)
    Dim ff As Long, ErrNo As Long

    On Error Resume Next
    ff = FreeFile()
    Open FileName For Input Lock Read As #ff
    Close ff
    ErrNo = Err
    On Error GoTo 0

    Select Case ErrNo
    Case 0:    IsWorkBookOpen = False
    Case 70:   IsWorkBookOpen = True
    Case Else: Error ErrNo
    End Select
End Function

你好,艾琳,谢谢你为我调查这件事并提供一个可能的解决方案。我刚刚试过这个,你的代码正是它应该为我做的。但是,当我得到一个真值时,它在尝试执行我的行时仍然会给出错误。请尝试使用GetObject函数引用。还是运行时错误9?另一方面,这让我可以选择给用户一个警告,让用户自己关闭它:)我想我现在会这样做。谢谢你好,艾琳,这确实结束了一些事情。现在只有Excel仍处于打开状态,但其中没有工作簿。没有错误是的,它只会关闭引用的文件,而不会关闭excel应用程序,以防用户打开其他文件。如果此代码在Access中运行,则无法执行
工作簿(“foo”).bar
。您必须使用Excel应用程序对象,例如,
objExcel.Workboks(…)