Недавно я столкнулся с проблемой в Excel 2016. После закрытия строки подключения в среде Excel 2016 система все еще блокирует Excel от редактирования (скажем, этот файл используется). но код отлично работает в среде Excel 2007 и 2010 (после закрытия соединения файл готов к открытию и редактированию моей следующей функции).
в среде Excel 2016 кажется, что файл должен быть заблокирован на 75 секунд, после чего он автоматически разблокируется, но это не произойдет в среде Excel 2007 и 2010
где я должен изменить его ?
Public Function gf_ExcelConnection(ByRef strLocation As String, ByRef sWorksheetName As String, _
ByRef lExcelDataset As DataSet, ByRef iLastRow As Integer, _
ByRef sColumn As String) As Boolean
Dim strExcelConn As String = "Provider=Microsoft.ACE.OLEDB.12.0; Data Source=" & strLocation & _
"; Extended Properties=""Excel 12.0 Xml;HDR=YES;IMEX=1;"""
Dim ExcelConn As New System.Data.OleDb.OleDbConnection(strExcelConn)
Dim ExcelCommand As OleDbCommand = New OleDbCommand
Dim ExcelDataAdapter As New OleDbDataAdapter
Try
gf_ExcelConnection = True
ExcelCommand.CommandText = "SELECT * FROM [" + sWorksheetName + "A1:" & sColumn & iLastRow & "] "
ExcelDataAdapter.SelectCommand = ExcelCommand
ExcelDataAdapter.SelectCommand.Connection = ExcelConn
MsgBox(103)
ExcelConn.Open()
ExcelDataAdapter.Fill(lExcelDataset, "ImportTable")
ExcelConn.Close()
ExcelConn.Dispose()
MsgBox(104)
Catch ex As Exception
gf_ExcelConnection = False
gclsError.gf_ErrorHandler("InvalidIncorrectFile", Windows.Forms.MessageBoxButtons.OK, Windows.Forms.MessageBoxIcon.Error, False)
ExcelConn.Close()
Finally
ExcelConn.Close()
ExcelConn.Dispose()
ExcelConn = Nothing
MsgBox(105)
End Try
End Function