** NORMAS DEL FORO **
Inicio del foro Inicio del foro > Otros de Microsoft: Windows y Office > Excel
  Mensajes nuevos Mensajes nuevos RSS - Borrar consulta datos externos
  Preguntas frecuentes Preguntas frecuentes  Buscar en el foro   Eventos   Registro Registro  Iniciar sesion Iniciar sesion

Tema cerradoBorrar consulta datos externos

 Responder Responder
Autor
Mensaje
elicio Ver desplegable
Habitual
Habitual


Unido: 15/Diciembre/2005
Localización: España
Estado: Sin conexión
Puntos: 155
Enlace directo a este mensaje Tema: Borrar consulta datos externos
    Enviado: 18/Febrero/2009 a las 20:12
Hola a todos:

Trato de automatizar la recogida de datos externos en un libro con varias hojas que se ejecuta en el momento de abrir el libro. Para ello y con la ayuda de la grabadora de macros he hecho este código.

------------------------------------------------------------------------------------------
'Selecciono la hoja "ABC Compras" e inserto datos compras mensuales
    Sheets("ABC Compras").Select
    With ActiveSheet.QueryTables.Add(Connection:= _
        "TEXT;" & Directorio & "compra mensual proveedores.txt" _
        , Destination:=Range("B10"))
        .Name = "compra mensual proveedores_1"
      ...
      ...

    End With
    
'Desvinculo la selección del archivo de origen
    Range("B10").Select
    Selection.QueryTable.Delete

------------------------------------------------------------------------------------------

Con ello trato de que al abrir el libro no haya posibilidad de actualizar los datos importados.

La primera parte de obtención de datos funciona perfectamente pero el borrado de la consulta no funciona.

Veo mediante  

MsgBox Selection.QueryTable.Name

que el nombre que asigna a la consulta no es el que yo he definido
sino otro de igual nombre con un dígito más alto "compra mensual proveedores_42" (distinto cada vez), supongo que como consecuencia de las muchas pruebas realizadas. La grabadora de macros no refleja ningún código en esta operación.

Podrias hecharme una mano.

Gracias de antemano
 


Editado por elicio - 18/Febrero/2009 a las 20:13
elicio
Arriba
Jordi-Albert Ver desplegable
Colaborador
Colaborador
Avatar

Unido: 06/Abril/2006
Localización: Alemania
Estado: Sin conexión
Puntos: 4315
Enlace directo a este mensaje Enviado: 18/Febrero/2009 a las 22:09
efectivamente en QueryTable se guardan todas las consultas...
 
tuve un problema parecido con el que el ordenador se quedaba saturado.
 
lo mejor en tu caso, creo, es borrar todas las queries
 
for each objQT in xxx.querytable
    objQT.delete
next
 
donde xxx puede ser "application" o "activeSheet"  (disculpa, esta escrito de memória y por ello no te lo puedo confirmar ahora... debería mirarlo mañana en la oficina)
 
Arriba
elicio Ver desplegable
Habitual
Habitual


Unido: 15/Diciembre/2005
Localización: España
Estado: Sin conexión
Puntos: 155
Enlace directo a este mensaje Enviado: 19/Febrero/2009 a las 09:14

Hola:

Gracias Jordi-Albert.
Con
For Each objQT In ActiveSheet.QueryTables
    objQT.Delete
Next
me funciona.
He comprobado que con el código que yo tenía funciona, salvo que hubiera una consulta previa que no hubiera borrado y que el código que yo tenía tampoco borra pero si con tu código.
 
Por cierto no podría,para simplificar el código, hacer ese bucle para que borrara todas las consultas del libro en lugar de hoja a hoja. He intentado con ActiveWorkBook pero me da error 'no admite esa propiedad'.
 
Gracias y un saludo
elicio
Arriba
Jordi-Albert Ver desplegable
Colaborador
Colaborador
Avatar

Unido: 06/Abril/2006
Localización: Alemania
Estado: Sin conexión
Puntos: 4315
Enlace directo a este mensaje Enviado: 19/Febrero/2009 a las 12:48

por el Help veo que QueryTables es un objeto de WorkSheet, por lo que no puedes borrar directamente todas las queryTables de un solo paso..

lo que si que puedes hacer es añadir un bucle anterior
 
dim objWS   as WorkSheet
dim objQT    as QueryTable
 
For each objWS in Worksheets
   For Each objQT In objWS.QueryTables
       objQT.Delete
   Next
Next
 


Editado por Jordi-Albert - 19/Febrero/2009 a las 12:48
Arriba
elicio Ver desplegable
Habitual
Habitual


Unido: 15/Diciembre/2005
Localización: España
Estado: Sin conexión
Puntos: 155
Enlace directo a este mensaje Enviado: 19/Febrero/2009 a las 14:11

Hola:

Lo aplicaré.
 
De paso, he aprendido algo más, veo, efectivamente, que en el examinador de objetos aparece como propiedad e WorkSheet y no de  Workbook. Normalmento me pierdo en esa ventana
 
Muchas gracias Jordi-Albert, por mi parte se puede cerrar.
 
Un saludo


Editado por elicio - 19/Febrero/2009 a las 14:12
elicio
Arriba
 Responder Responder
  Compartir tema   

Ir al foro Permisos de foro Ver desplegable