EXCEL2003: Cambiar Origen de Datos Externos

15/11/2008 - 00:48 por MEG | Informe spam
Hola a todos,

Lo que quiero hacer es cambiar el origen de datos externo (Access) a través
de un código VBA pero no se como, aquí les indico los datos a ver si me
pueden ayudar.

Tengo lo siguiente:

1) Libro de Excel
Ubicación: C:\Users\usuarioX\Desktop\BD_Prueba\EX1.xls
Llamado: EX1
Contiene: solo una hoja llamada HDatos
Datos Externos: Origen de Datos ODBC (Access)
Pegar Datos Externos: a partir de la cela A1

2) BD Access
Ubicación: C:\Users\usuarioX\Desktop\BD_Prueba\BD_Access\BDA.mdb
BD Llamado: BDA
Contiene: la Consulta que se Conecta con Excel (EX1.xls)
Consulta llamada: CBD1
Campos de la Consulta: Nombres, Apellidos, Telefono.

Ahora con los datos anteriores como puedo hacer, con códigos, para cambiar
la Ruta de la Data de Access (BDA.mdb) que lee el Libro de Excel (EX1.xls).

Gracias por la ayuda.

NOTA: si me pueden dar un ejemplo con los datos anteriores seria estupendo.

Saludos,

MEG

Preguntas similare

Leer las respuestas

#1 Héctor Miguel
15/11/2008 - 04:08 | Informe spam
hola, !

en los datos que expones, no se "ve" cual es el cambio que mencionas necesitar -???-

(creo que) lo primero que deberias intentar, es activar la grabadora de macros y realizar tus acciones "normalmente"
(despues) revisa el codigo que hubiera generado la grabadora de macros y comenta que cambios necesitarias al mismo

y si cualquier duda (o informacion adicional)... comentas ?
saludos,
hector.

__ OP __
Lo que quiero hacer es cambiar el origen de datos externo (Access) a traves de un codigo VBA pero no se como
aqui les indico los datos a ver si me pueden ayudar.

Tengo lo siguiente:

1) Libro de Excel
Ubicacion: C:\Users\usuarioX\Desktop\BD_Prueba\EX1.xls
Llamado: EX1
Contiene: solo una hoja llamada HDatos
Datos Externos: Origen de Datos ODBC (Access)
Pegar Datos Externos: a partir de la cela A1

2) BD Access
Ubicacion: C:\Users\usuarioX\Desktop\BD_Prueba\BD_Access\BDA.mdb
BD Llamado: BDA
Contiene: la Consulta que se Conecta con Excel (EX1.xls)
Consulta llamada: CBD1
Campos de la Consulta: Nombres, Apellidos, Telefono.

Ahora con los datos anteriores como puedo hacer, con codigos
para cambiar la Ruta de la Data de Access (BDA.mdb) que lee el Libro de Excel (EX1.xls).

Gracias por la ayuda.

NOTA: si me pueden dar un ejemplo con los datos anteriores seria estupendo.
Respuesta Responder a este mensaje
#2 MEG
19/11/2008 - 17:18 | Informe spam
Gracias Héctor por tu respuesta,

En cuanto a tu pregunta “en los datos que expones, no se "ve" cual es el
cambio que mencionas necesitar -???-” vamos a colocarlo fácil y queremos
mover la carpeta Actual (BD_Prueba que contiene el Archivo de Excel y de
Access) a mis documentos entonces la ruta Nueva es: C:\Users\usuarioX\mis
documentos\BD_Prueba

Para Access quedaría así: C:\Users\usuarioX\mis
documentos\BD_Prueba\BD_Access\BDA.mdb y;

Para Excel así: C:\Users\usuarioX\mis documentos\BD_Prueba\EX1.xls

El código que utilizo Agrega en vez de “ACTUALIZAR” la Ruta nueva; ¿que
tengo que hacer o que debo cambiar para que solo actualice?:

With ActiveSheet.QueryTables.Add(Connection:=Array(Array( _
"ODBC;DSN=MS Access Database;DBQ=
C:\Users\usuarioX\Desktop\BD_Prueba\BD_Access\BDA.mdb;DefaultDir=
C:\Users\usuarioX\Desktop\BD_Prueba\BD_Access;Dri" _
), Array("verId%;FIL=MS
Access;MaxBufferSize 48;PageTimeout=5;")), _
Destination:=Range("A1"))
.CommandText = Array( _
"SELECT * FROM `
C:\Users\usuarioX\Desktop\BD_Prueba\BD_Access\BDA`.`CBD1`")
.Name = "BDA CBD1"
.FieldNames = True
.RowNumbers = False
.FillAdjacentFormulas = False
.PreserveFormatting = True
.RefreshOnFileOpen = False
.BackgroundQuery = True
.RefreshStyle = xlInsertDeleteCells
.SavePassword = False
.SaveData = True
.AdjustColumnWidth = True
.RefreshPeriod = 0
.PreserveColumnInfo = True
.Refresh BackgroundQuery:=False
End With
End Sub

Gracias de antemano por la ayuda que me puedas prestar.

Saludos,

MEG

.


"Héctor Miguel" escribió:

hola, !

en los datos que expones, no se "ve" cual es el cambio que mencionas necesitar -???-

(creo que) lo primero que deberias intentar, es activar la grabadora de macros y realizar tus acciones "normalmente"
(despues) revisa el codigo que hubiera generado la grabadora de macros y comenta que cambios necesitarias al mismo

y si cualquier duda (o informacion adicional)... comentas ?
saludos,
hector.

__ OP __
> Lo que quiero hacer es cambiar el origen de datos externo (Access) a traves de un codigo VBA pero no se como
> aqui les indico los datos a ver si me pueden ayudar.
>
> Tengo lo siguiente:
>
> 1) Libro de Excel
> Ubicacion: C:\Users\usuarioX\Desktop\BD_Prueba\EX1.xls
> Llamado: EX1
> Contiene: solo una hoja llamada HDatos
> Datos Externos: Origen de Datos ODBC (Access)
> Pegar Datos Externos: a partir de la cela A1
>
> 2) BD Access
> Ubicacion: C:\Users\usuarioX\Desktop\BD_Prueba\BD_Access\BDA.mdb
> BD Llamado: BDA
> Contiene: la Consulta que se Conecta con Excel (EX1.xls)
> Consulta llamada: CBD1
> Campos de la Consulta: Nombres, Apellidos, Telefono.
>
> Ahora con los datos anteriores como puedo hacer, con codigos
> para cambiar la Ruta de la Data de Access (BDA.mdb) que lee el Libro de Excel (EX1.xls).
>
> Gracias por la ayuda.
>
> NOTA: si me pueden dar un ejemplo con los datos anteriores seria estupendo.



Respuesta Responder a este mensaje
#3 Héctor Miguel
19/11/2008 - 18:48 | Informe spam
hola, !

... queremos mover la carpeta Actual (BD_Prueba que contiene el Archivo de Excel y de Access)
a mis documentos entonces la ruta Nueva es: C:\Users\usuarioX\mis documentos\BD_Prueba
Para Access quedaria asi: C:\Users\usuarioX\mis documentos\BD_Prueba\BD_Access\BDA.mdb y;
Para Excel asi: C:\Users\usuarioX\mis documentos\BD_Prueba\EX1.xls
El codigo que utilizo Agrega en vez de "ACTUALIZAR" la Ruta nueva
que tengo que hacer o que debo cambiar para que solo actualice?:



mientras sigas usando el metodo .Add no podras "atualizar", sino AGREGAR una nueva tabla cada vez :-((

una alternativa es modificar la ruta al archivo de origen por macros... o... (un truquillo +/- como el siguiente)...

-> si se trata de -solo- una tabla de consulta (o por cada una) sin escribir macros... prueba a hacer lo siguiente:
a) activa/selecciona/... la hoja donde esta ubicada la tabla y ve al editor de vba -> atajo = {Alt}+{F11}
b) (ya en el editor de vba) -> presenta la ventana de inmediato (menu) ver / ventana inmediato (o el atajo {ctrl}+G)
c) (en la ventana de inmediato) -> ejecuta la siguiente instruccion...
? activesheet.querytables(1).connection (y pulsa {enter})
-> nota el signo de cierre de interrogacion inicial <-
-> te devolvera en la siguiente linea la cadena con la conexion al origen de datos ;)
d) usa/aprovecha/... la linea anterior y... EDITA las partes que sean necesarias (driver/proveedor, archivo, tabla... etc.)
e) una vez EDITADA/corregida/actualizada/... la cadena de conexion... -> ejecuta una nueva instruccion (casi la misma)...
activesheet.querytables(1).connection = "pon aqui la cadena EDITADA y delimitada por comillas dobles"
-> pulsa {enter} -> regresa a excel -> hazle un refresco a la consulta y...

si cualquier duda (o informacion adicional)... comentas ?
saludos,
hector.

__ el codigo expuesto __
With ActiveSheet.QueryTables.Add(Connection:=Array(Array( _
"ODBC;DSN=MS Access Database;DBQ= C:\Users\usuarioX\Desktop\BD_Prueba\BD_Access\BDA.mdb;DefaultDir= C:\Users\usuarioX\Desktop\BD_Prueba\BD_Access;Dri" _
), Array("verId%;FIL=MS Access;MaxBufferSize 48;PageTimeout=5;")), _
Destination:=Range("A1"))
.CommandText = Array( _
"SELECT * FROM ` C:\Users\usuarioX\Desktop\BD_Prueba\BD_Access\BDA`.`CBD1`")
.Name = "BDA CBD1"
.FieldNames = True
.RowNumbers = False
.FillAdjacentFormulas = False
.PreserveFormatting = True
.RefreshOnFileOpen = False
.BackgroundQuery = True
.RefreshStyle = xlInsertDeleteCells
.SavePassword = False
.SaveData = True
.AdjustColumnWidth = True
.RefreshPeriod = 0
.PreserveColumnInfo = True
.Refresh BackgroundQuery:=False
End With
End Sub
Respuesta Responder a este mensaje
#4 Héctor Miguel
19/11/2008 - 18:48 | Informe spam
hola, !

... queremos mover la carpeta Actual (BD_Prueba que contiene el Archivo de Excel y de Access)
a mis documentos entonces la ruta Nueva es: C:\Users\usuarioX\mis documentos\BD_Prueba
Para Access quedaria asi: C:\Users\usuarioX\mis documentos\BD_Prueba\BD_Access\BDA.mdb y;
Para Excel asi: C:\Users\usuarioX\mis documentos\BD_Prueba\EX1.xls
El codigo que utilizo Agrega en vez de "ACTUALIZAR" la Ruta nueva
que tengo que hacer o que debo cambiar para que solo actualice?:



mientras sigas usando el metodo .Add no podras "atualizar", sino AGREGAR una nueva tabla cada vez :-((

una alternativa es modificar la ruta al archivo de origen por macros... o... (un truquillo +/- como el siguiente)...

-> si se trata de -solo- una tabla de consulta (o por cada una) sin escribir macros... prueba a hacer lo siguiente:
a) activa/selecciona/... la hoja donde esta ubicada la tabla y ve al editor de vba -> atajo = {Alt}+{F11}
b) (ya en el editor de vba) -> presenta la ventana de inmediato (menu) ver / ventana inmediato (o el atajo {ctrl}+G)
c) (en la ventana de inmediato) -> ejecuta la siguiente instruccion...
? activesheet.querytables(1).connection (y pulsa {enter})
-> nota el signo de cierre de interrogacion inicial <-
-> te devolvera en la siguiente linea la cadena con la conexion al origen de datos ;)
d) usa/aprovecha/... la linea anterior y... EDITA las partes que sean necesarias (driver/proveedor, archivo, tabla... etc.)
e) una vez EDITADA/corregida/actualizada/... la cadena de conexion... -> ejecuta una nueva instruccion (casi la misma)...
activesheet.querytables(1).connection = "pon aqui la cadena EDITADA y delimitada por comillas dobles"
-> pulsa {enter} -> regresa a excel -> hazle un refresco a la consulta y...

si cualquier duda (o informacion adicional)... comentas ?
saludos,
hector.

__ el codigo expuesto __
With ActiveSheet.QueryTables.Add(Connection:=Array(Array( _
"ODBC;DSN=MS Access Database;DBQ= C:\Users\usuarioX\Desktop\BD_Prueba\BD_Access\BDA.mdb;DefaultDir= C:\Users\usuarioX\Desktop\BD_Prueba\BD_Access;Dri" _
), Array("verId%;FIL=MS Access;MaxBufferSize 48;PageTimeout=5;")), _
Destination:=Range("A1"))
.CommandText = Array( _
"SELECT * FROM ` C:\Users\usuarioX\Desktop\BD_Prueba\BD_Access\BDA`.`CBD1`")
.Name = "BDA CBD1"
.FieldNames = True
.RowNumbers = False
.FillAdjacentFormulas = False
.PreserveFormatting = True
.RefreshOnFileOpen = False
.BackgroundQuery = True
.RefreshStyle = xlInsertDeleteCells
.SavePassword = False
.SaveData = True
.AdjustColumnWidth = True
.RefreshPeriod = 0
.PreserveColumnInfo = True
.Refresh BackgroundQuery:=False
End With
End Sub
Respuesta Responder a este mensaje
#5 MEG
19/11/2008 - 19:27 | Informe spam
Gracias Héctor por tu pronta respuesta,

Gracias por el Truquillo, lo voy a intentar, pero lo que quiero hacer es
exactamente lo que tu me indicas:

1.- “mientras sigas usando el metodo .Add”….. Exactamente quiero cambiar el
.add por un .Actualizar, pero no se como hacerlo.

2.- “una alternativa es modificar la ruta al archivo de origen por
macros”……. Esto seria fabuloso!! Pero como lo hago?

Realmente me interesa que me ayudes con el código o indicándome que paginas
Web puedo visitar donde pueda conseguirlo.

Gracias.

Saludos,

MEG

...


"Héctor Miguel" escribió:

hola, !

> ... queremos mover la carpeta Actual (BD_Prueba que contiene el Archivo de Excel y de Access)
> a mis documentos entonces la ruta Nueva es: C:\Users\usuarioX\mis documentos\BD_Prueba
> Para Access quedaria asi: C:\Users\usuarioX\mis documentos\BD_Prueba\BD_Access\BDA.mdb y;
> Para Excel asi: C:\Users\usuarioX\mis documentos\BD_Prueba\EX1.xls
> El codigo que utilizo Agrega en vez de "ACTUALIZAR" la Ruta nueva
> que tengo que hacer o que debo cambiar para que solo actualice?:

mientras sigas usando el metodo .Add no podras "atualizar", sino AGREGAR una nueva tabla cada vez :-((

una alternativa es modificar la ruta al archivo de origen por macros... o... (un truquillo +/- como el siguiente)...

-> si se trata de -solo- una tabla de consulta (o por cada una) sin escribir macros... prueba a hacer lo siguiente:
a) activa/selecciona/... la hoja donde esta ubicada la tabla y ve al editor de vba -> atajo = {Alt}+{F11}
b) (ya en el editor de vba) -> presenta la ventana de inmediato (menu) ver / ventana inmediato (o el atajo {ctrl}+G)
c) (en la ventana de inmediato) -> ejecuta la siguiente instruccion...
? activesheet.querytables(1).connection (y pulsa {enter})
-> nota el signo de cierre de interrogacion inicial <-
-> te devolvera en la siguiente linea la cadena con la conexion al origen de datos ;)
d) usa/aprovecha/... la linea anterior y... EDITA las partes que sean necesarias (driver/proveedor, archivo, tabla... etc.)
e) una vez EDITADA/corregida/actualizada/... la cadena de conexion... -> ejecuta una nueva instruccion (casi la misma)...
activesheet.querytables(1).connection = "pon aqui la cadena EDITADA y delimitada por comillas dobles"
-> pulsa {enter} -> regresa a excel -> hazle un refresco a la consulta y...

si cualquier duda (o informacion adicional)... comentas ?
saludos,
hector.

__ el codigo expuesto __
> With ActiveSheet.QueryTables.Add(Connection:=Array(Array( _
> "ODBC;DSN=MS Access Database;DBQ= C:\Users\usuarioX\Desktop\BD_Prueba\BD_Access\BDA.mdb;DefaultDir= C:\Users\usuarioX\Desktop\BD_Prueba\BD_Access;Dri" _
> ), Array("verId%;FIL=MS Access;MaxBufferSize 48;PageTimeout=5;")), _
> Destination:=Range("A1"))
> .CommandText = Array( _
> "SELECT * FROM ` C:\Users\usuarioX\Desktop\BD_Prueba\BD_Access\BDA`.`CBD1`")
> .Name = "BDA CBD1"
> .FieldNames = True
> .RowNumbers = False
> .FillAdjacentFormulas = False
> .PreserveFormatting = True
> .RefreshOnFileOpen = False
> .BackgroundQuery = True
> .RefreshStyle = xlInsertDeleteCells
> .SavePassword = False
> .SaveData = True
> .AdjustColumnWidth = True
> .RefreshPeriod = 0
> .PreserveColumnInfo = True
> .Refresh BackgroundQuery:=False
> End With
> End Sub



Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaSiguiente Respuesta Tengo una respuesta
Search Busqueda sugerida