Saltar al contenido

La conexión de datos de Excel bloquea la base de datos de acceso, evita la actualización de la segunda conexión

Solución:

Me enfrenté a otro problema con respecto a las conexiones de datos, ¡y la solución al final también terminó solucionando este problema de larga data!

Supongo que el secreto está en “MaintainConnection = False”:

Dim i As Integer
Dim awc As WorkbookConnection
Dim c As OLEDBConnection

For i = 0 to ActiveWorkbook.Connections.Count
    Set awc = ActiveWorkbook.Connections.Item(i)
    Set c = awc.OLEDBConnection
    c.EnableRefresh = True
    c.BackgroundQuery = False
    c.Reconnect
    c.Refresh
    c.MaintainConnection = False
Next i

Tu respuesta realmente me ayudó. Tuve el mismo problema, pero con archivos de Excel: un archivo de Excel que accede a otro Excel (al abrir) con Microsoft.ACE.OLEDB.12.0 y este archivo de origen de datos se bloquea (en uso).

Entonces, eliminé los “datos de actualización al abrir el archivo” y lo reemplacé con su código VBA en el evento Workbook_Open. Pero mejoré un poco su código, porque estaba obteniendo errores, ya que tengo otra conexión ODBC (no OLEBD) en mi libro de trabajo, tuve que agregar este IF. Ahora todo funciona bien.

Private Sub Workbook_Open()
    Dim i As Integer
    Dim awc As WorkbookConnection

    For i = 1 To ActiveWorkbook.Connections.Count
        Set awc = ActiveWorkbook.Connections.Item(i)
        If awc.Type = xlConnectionTypeOLEDB Then
            With awc.OLEDBConnection
                .EnableRefresh = True
                .BackgroundQuery = False
                .Reconnect
                .Refresh
                .MaintainConnection = False
            End With
        ElseIf awc.Type = xlConnectionTypeODBC Then
            With awc.ODBCConnection
                .EnableRefresh = True
                .BackgroundQuery = False
                .Refresh
            End With
        End If
    Next i
End Sub
¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *