transferspreadsheet codigos vba ms-access excel-vba access-vba

codigos - Cambiar una propiedad tabledef.connect en VBA



codigos vba access (1)

Me encontré con un problema similar. Al intentar hacer esto directamente a través de CurrentDb (es decir, CurrentDb.TableDefs("foo").Connect ) no funcionó y no arrojó un error.

La razón es: cada vez que te refieres a CurrentDB , es una nueva instancia.

En su segundo método, creó un objeto de base de datos que estableció en CurrentDb y ese es su segundo método.

Larga historia corta: Bueno:

Dim Db as Database Set Db = CurrentDb Db.TableDefs("foo").Connect = "New connection string" Db.TableDefs("foo").RefreshLink

Malo:

CurrentDb.TableDefs("foo").Connect = "New connection string" CurrentDb.TableDefs("foo").RefreshLink

Estoy intentando hacer algo que he hecho cientos de veces, pero de repente no funcionará.

acc.AutomationSecurity = msoAutomationSecurityLow ''Remove Security Prompt acc.OpenCurrentDatabase path & "Year " & Range("yr") & "/" & Range("yr") & Range("mo") & "/Year " & Range("yr") & Range("mo") & " GENERIC DB NAME.mdb", True ''update link acc.CurrentDb.TableDefs("TABLE NAME").Connect = "MS Access;DATABASE=" & path & "Year " & Range("yr") & "/" & Range("yr") & Range("mo") & "/Year " & Range("yr") & Range("mo") & " OTHER DB.mdb" acc.CurrentDb.TableDefs("TABLE NAME").RefreshLink

No sé si esto está relacionado con el hecho de que hemos actualizado recientemente a Excel 2010 y el archivo db sigue siendo ACCESS 2003, pero esto debería ser un simple código para ejecutar. No pasa nada cuando ejecuto el código anterior. El archivo se abre de manera correcta, pero la cadena de conexión nunca se asigna al objeto de tabla def, es decir. Se ejecuta sin errores, pero la tabla no está enlazando a la nueva base de datos. Descubrí que el siguiente código funciona y lo he usado para solucionar el problema. Todavía tengo curiosidad de por qué no puedo asignar un valor a la propiedad .connect en el estilo ''application.currentdb.tabledef ("TABLE"). Connect'', pero si asigno el currentdb a un nuevo objeto de base de datos, puedo.

Así que no sé por qué, pero si uso esto, funciona

dim db as DAO.database set db = acc.CurrentDb db.TableDefs("TABLE NAME").Connect = "MS Access;DATABASE=" & path & "Year " & Range("yr") & "/" & Range("yr") & Range("mo") & "/Year " & Range("yr") & Range("mo") & " OTHER DB.mdb" db.TableDefs("TABLE NAME").RefreshLink

Gracias por cualquier ayuda que usted nos pueda proporcionar.