workbooks.close对我不起作用

时间:2018-04-25 13:03:08

标签: vba ms-access access-vba

希望有人可以帮助我解决以下问题。

我想确保特定工作簿在获得更新之前已关闭。 为此我打算开始。

Private Sub Command1_Click() workbooks("workbookname.XLSM").close Savechanges = False End Sub

我也试过

workbooks("workbookname.Xlsm").close

我已经单独运行,两者都给我错误代码9。

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

我认为它可能与我的参考文献有关,所以我检查并启用了以下参考。 (其他一些原因)。

  • Visual Basic For Applications
  • Microsoft Access 16.0对象库
  • OLE自动化
  • Microsoft DAO 3.6对象库
  • Microsoft Excel 16.0
  • 对象库Microsoft Scripting Runtime。

真的希望有人可以帮我这个。我一直在浏览相当多的论坛,但没有找到相同的问题或解决方案。

w.k.r。 DRAC。

1 个答案:

答案 0 :(得分:0)

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

您可以这样使用它:

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