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)