Excel VBA, QueryTable fantasma... No se puede borrar

Extraigo datos de 5 archivos de texto en formato .csv. Cada uno en una PC distinta.
Cuando hago todo a mano, queda muy bien.
Cuando lo pongo en código obtengo un suceso muy interesante.
Al hacer la conexión (previamente he eliminado la conexión, el nombre del rango importado, y por código borro las querytables)
Me indica que el querytable ya existe y que le cambie de nombre.

El código que usé para generar la conexión es el mismo de la grabadora de macros. Salvo que una linea me daba error y la comenté.

Busco la querytable por código, y las borro todas. Y cuando quiero crear una nueva conexión a mano, me indica que la consulta con ese nombre ya existe.

1 respuesta

Respuesta

Hol.a

Trata de explicarlo un poco más ordenado ya que en un párrafo se entiende que el problema es cuando intentas hacer la conexión con la macro obtenida con la grabadora de macros y párrafos abajo dices que lo haces ¿a manos? O sea ¿con "obtener datos externos"? Por cierto, trata de volver a explicar porque crees que ya eliminaste todo lo relacionado a esa consulta obtenida. Todo en el orden en que lo haces.

Abraham Valencia

Buen día Abraham.

Bueno, disculpa.
Traté de ser conciso. Exageré.

Cuando digo a mano, sí, me refiero a que hago la conexión con el asistente de conexiones.

Para verificar que he borrado todos los querylist, uso una macro que va barriendo los querylist en el libro y los va borrando. Lo mismo para las referencia de rango. Lo mismo para las conexiones.
Además verifico en el administrador de nombres que no exista alguna referencia. Y también en la lista de conexiones.
No sé como ver los querytables en el excel (por eso uso la macro para enumerar y borrar).

El caso es que después de verificar que no haya NADA, y hago la conexión con el administrador de conexiones, en el momento de darle nombre al querytable, me indica que la conexión ya existe. Tengo que cambiar de nombre.

Espero haber sido un poco mas claro.
Gracias por tu tiempo Abraham.

Buen día.

¿Qué versión de Excel usas? ¿Usar Microsoft Query (DATOS - (Obtener datos externos) DESDE TEXTO...) o usas "Power Query"? Si es desde el último, no basta borrar los datos para que se borre la conexión por si acaso y no necesariamente va a aparecer el nombre de una conexión anterior en el administrador de nombres pero sí aparece en el Panel de la "consulta de libro" (Excel 2013).

Abraham Valencia

Buenos día Abraham.

Uso el botón que dice desde texto, en la pestaña conexiones. No uso Power Query.
La versión es 2013.

Como dije, usé el código de la grabadora y le hice unos retoques:

Al ejecutar la macro la parte de CommandType arroja error, la comenté.
Y el .name, pues con tanto problema, he dejado que se auto genere.


With ActiveSheet.QueryTables.Add(Connection:="TEXT;" & Cadena_Con, Destination:=Range(Celda_Ini))
' .CommandType = 1
' .Name = Rango_Data_Import ' rango de la querytable
Muchas gracias por tu tiempo.
Buen día Abraham.

Raro porque, si lo haces "manual" no te pide el nombre, y si lo haces por código (así provenga de la grabadora) aunque tengas la propiedad "Name" con un nombre ya existente, el Excel le da el nombre más un numeral justamente para que no ocurra eso. Haz una captura de pantalla del error y envíala. La verdad no recuerdo un caso así.

Abraham Valencia

Ahí se puede cambiar el nombre.
Y otro detalle, cuando creo la conexión de esta manera, respeta el nombre que coloco.
Cuando lo hago desde el código, siempre termina añadiendo "_1"
Por ahí va el asunto creo yo.

Gracias Abraham.

Buen día.

A ver, eso que colocas ahí son las propiedades de una "QueryTable" que ya existe, no es que esa sea la forma "manual" de crear una conexión u otra "QueryTable". Si tú entras a dichas propiedades e intentas cambiarla y te sale el mensaje "Ya existe una consulta con este nombre en esta hoja" es por eso, ya existe y no puede usar el nombre ya existente. Si ese es el error que comentabas (no lo llegaste a mostrar) pues sin duda existe la "QueryTable" así no veas los datos por si acaso.

Cuando todo lo haces con código/VBA/macros, así uses un mismo nombre, el Excel le agrega el numeral comentado.

Solo por si acaso, los nombres de las conexiones son otros

Abraham Valencia

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas