Ayuda con Macro QueryTables....

09/10/2007 - 02:43 por Murphy | Informe spam
La siguiente macro la grabe con el editor de Visual Basic.

Lo que haces es exportar a una hoja de Excel, determinada información
que se delimita mediante la herramienta: Obtener datos externos/ Nueva
consulta web.

La información la coloca desde "A1" hasta "A17"

A B C
D E F G
1 Tienda :
101-A Sku : 31545 Descripción : TARJETA DE VARIOS
2
3 Meses Unidades Ventas Existencia ActualCosto ActualConsumo D/PDias
Inventario
4 Vendidas Ult. 8 Sem
5 Octubre 0 Sem 1 0 1 478 0.07 14.29
6 Septiembre 7 Sem 2 2
7 Agosto 1 Sem 3 0
8 Julio 2 Sem 4 0
9 Junio 2 Sem 5 4
10 Mayo 1 Sem 6 1
11 Abril 3 Sem 7 0
12 Marzo 1 Sem 8 1
13 Febrero 2
14 Enero 1
15 Diciembre 3
16 Noviembre 3
17 Total 26 8


la fila A2 es una vacia que deberia eliminarse, el codigo que utiliza
es el siguiente:


With ActiveSheet.QueryTables.Add(Connection:= _
"URL;https://www.provedor.com.mx/FDSF/FDGFG.PGM?
Cuenta3&Loginid=MANT&Password=OTRO&Numpro2&NumTie1&NumArt121&XMiem=&Filler=A&"
_
, Destination:=Range("A1"))
.Name = _
"FDFD.PGM?
Cuenta3&Loginid=MANT&Password=OTRO&NumproU5&NumTie1&NumArt4511&XMiem=&Filler=A&_1"
.FieldNames = True
.RowNumbers = False
.FillAdjacentFormulas = False
.PreserveFormatting = True
.RefreshOnFileOpen = False
.BackgroundQuery = True
.RefreshStyle = xlInsertDeleteCells
.SavePassword = False
.SaveData = True
.AdjustColumnWidth = True
.RefreshPeriod = 0
.WebSelectionType = xlSpecifiedTables
.WebFormatting = xlWebFormattingNone
.WebTables = "6,9"
.WebPreFormattedTextToColumns = True
.WebConsecutiveDelimitersAsOne = True
.WebSingleBlockTextImport = False
.WebDisableDateRecognition = False
.WebDisableRedirections = False
.Refresh BackgroundQuery:=False
End With
End Sub

este es el caso para la tienda 101, como puedo hacer para que una vez
eliminada A2 (es decir en vez de 17 filas debe dejar solo 16 filas
para cada tienda), inmediantamente despues mediante la consulta en
Visual coloque la siguiente tienda 102, 103, 104, hasta la 523.

Espero me puedan ayudar, como se daran cuenta soy principiante con
esto de las Macros.

Por su atencion Gracias y hasta pronto

Preguntas similare

Leer las respuestas

#1 Héctor Miguel
09/10/2007 - 06:03 | Informe spam
hola, (...) ?

La siguiente macro la grabe con el editor de Visual Basic.
Lo que haces es exportar a una hoja de Excel, determinada informacion
que se delimita mediante la herramienta: Obtener datos externos/ Nueva consulta web.
La informacion la coloca desde "A1" hasta "A17"
la fila A2 es una vacia que deberia eliminarse, el codigo que utiliza es el siguiente:
este es el caso para la tienda 101, como puedo hacer para que una vez eliminada A2
(es decir en vez de 17 filas debe dejar solo 16 filas para cada tienda)
inmediantamente despues mediante la consulta en Visual coloque la siguiente tienda 102, 103, 104, hasta la 523.



es probable que lo siguiente sea relevante (o no), pero por si las dudas, convendria si aclaras estos puntos:

- que relacion existe entre el argumento: -> .WebTables = "6,9" <- y la tabla/tienda/nombre/... o lo que sea de cada consulta ?

- que relacion existe entre las -posibes- diferencias en las cadenas de la conexion y el nombre y los datos de la tabla a traer ?
Query...Connection: FDGFG.PGM? | Numpro2 | NumArt121
QueryTable...Name: FDFD.PGM? | NumproU5 | NumArt4511

- una vez eliminada la fila 2 (de la primer tabla), en cual celda debiera insertarse la tabla de la tienda siguiente ? (y las que siguen ?)

- siempre seran consultas que devuelven 17 filas (para eliminar siempre la segunda en cada una ?)

saludos,
hector.

__ el codigo expuesto __
With ActiveSheet.QueryTables.Add(Connection:= _
"URL;https://www.provedor.com.mx/FDSF/FDGFG.PGM?Cuenta3&Loginid=MANT&Password=OTRO&Numpro2&NumTie1&NumArt121&XMiem=&Filler=A&" _
, Destination:=Range("A1"))
.Name = _
"FDFD.PGM?
Cuenta3&Loginid=MANT&Password=OTRO&NumproU5&NumTie1&NumArt4511&XMiem=&Filler=A&_1"
.FieldNames = True
.RowNumbers = False
.FillAdjacentFormulas = False
.PreserveFormatting = True
.RefreshOnFileOpen = False
.BackgroundQuery = True
.RefreshStyle = xlInsertDeleteCells
.SavePassword = False
.SaveData = True
.AdjustColumnWidth = True
.RefreshPeriod = 0
.WebSelectionType = xlSpecifiedTables
.WebFormatting = xlWebFormattingNone
.WebTables = "6,9"
.WebPreFormattedTextToColumns = True
.WebConsecutiveDelimitersAsOne = True
.WebSingleBlockTextImport = False
.WebDisableDateRecognition = False
.WebDisableRedirections = False
.Refresh BackgroundQuery:=False
End With
End Sub

__ la tabla expuesta (obviamente en los foros pasan diferente de la intencion) :-(( __
A B C D E F G
1 Tienda : 101-A Sku : 31545 Descripción : TARJETA DE VARIOS
2
3 Meses Unidades Ventas Existencia ActualCosto ActualConsumo D/PDiasInventario
4 Vendidas Ult. 8 Sem
5 Octubre 0 Sem 1 0 1 478 0.07 14.29
6 Septiembre 7 Sem 2 2
7 Agosto 1 Sem 3 0
8 Julio 2 Sem 4 0
9 Junio 2 Sem 5 4
10 Mayo 1 Sem 6 1
11 Abril 3 Sem 7 0
12 Marzo 1 Sem 8 1
13 Febrero 2
14 Enero 1
15 Diciembre 3
16 Noviembre 3
17 Total 26 8
Respuesta Responder a este mensaje
#2 Murphy
09/10/2007 - 17:49 | Informe spam
- que relacion existe entre el argumento: -> .WebTables = "6,9" <- y la tabla/tienda/nombre/... o lo que sea de cada consulta ?
- que relacion existe entre las -posibes- diferencias en las cadenas de la conexion y el nombre y los datos de la tabla a traer ?
Query...Connection: FDGFG.PGM? | Numpro2 | NumArt121
QueryTable...Name: FDFD.PGM? | NumproU5 | NumArt4511
- una vez eliminada la fila 2 (de la primer tabla), en cual celda debiera insertarse la tabla de la tienda siguiente ? (y las que siguen ?)




-El argumento WebTables = "6,9" y la tabla tienda, es lo que hace
referencia a las tablas seleccionadas desde la pagina Web y siempre
seran constantes al igual que lo siguiente que expones
QueryConnection | Numpro, NumArt, Query TableName, Numpro
siempre son cosntantes.

corresponderia a la tienda 101), la siguiente tabla (que
corresponderia a la tienda 102) deberia insertase en A17, se debera
eliminar A18 y en A33 insertar la siguiente tabla (que corresponde a
la tienda 103), eliminar A34y asi sucesivamente.

- siempre seran consultas que devuelven 17 filas (para eliminar siempre la segunda en cada una ?) Es correcto.



Espero haber aclarado un poco mas la situacion, y quedo en espera de
su valiosa ayuda.
Respuesta Responder a este mensaje
#3 Héctor Miguel
10/10/2007 - 05:00 | Informe spam
hola, (...) ?

- El argumento WebTables = "6,9" y la tabla tienda, es lo que hace referencia a las tablas seleccionadas desde la pagina Web
y siempre seran constantes al igual que... QueryConnection | Numpro, NumArt, Query TableName, Numpro...

- Una vez eliminada la fila 2 de la primera tabla (que corresponderia a la tienda 101)
la siguiente tabla (que corresponderia a la tienda 102) deberia insertase en A17, se debera eliminar A18
y en A33 insertar la siguiente tabla (que corresponde a la tienda 103), eliminar A34... y asi sucesivamente.

- siempre seran consultas que devuelven 17 filas (para eliminar siempre la segunda en cada una ?) Es correcto.





de acuerdo con tus indicaciones, prueba con los siguientes agregados al codigo expuesto en tu consulta original...

1) el bloque With...End With lo metes dentro de un bucle For...Next precedido de dos variables *de avance* (Tienda y Fila)

2) la cadena de la conexion la *rompes* para insertar la variable con el numero de la tienda

3) la cadena para el nombre... (no estoy muy seguro de si te conviene hacer lo mismo del punto anterior o)...
por que no la reduces con solo el nombre de las tiendas ?

4) despues del *End With* y ANTES de la instruccion Next, eliminas la segunda linea de cada consulta y aumentas 16 (filas)

o sea, te debe quedar un codigo +/- como el ejemplo al final del presente...
si cualquier duda (o informacion adicional)... comentas ?
saludos,
hector.

Dim Tienda As Integer, Fila As Integer: Fila = 1
For Tienda = 101 To 523
With ActiveSheet.QueryTables.Add(Connection:= _
"URL;https://www.provedor.com.mx/FDSF/FDGFG.PGM?Cuenta3&Loginid=MANT&Password=OTRO&Numpro2&" & _
"NumTie=" & Tienda & "&NumArt121&XMiem=&Filler=A&", Destination:=Range("a" & Fila))
.Name = "FDFD.PGM?Cuenta3&Loginid=MANT&Password=OTRO&NumproU5&" & _
"NumTie=" & Tienda & "&NumArt4511&XMiem=&Filler=A&_1"
.FieldNames = True
.RowNumbers = False
.FillAdjacentFormulas = False
.PreserveFormatting = True
.RefreshOnFileOpen = False
.BackgroundQuery = True
.RefreshStyle = xlInsertDeleteCells
.SavePassword = False
.SaveData = True
.AdjustColumnWidth = True
.RefreshPeriod = 0
.WebSelectionType = xlSpecifiedTables
.WebFormatting = xlWebFormattingNone
.WebTables = "6,9"
.WebPreFormattedTextToColumns = True
.WebConsecutiveDelimitersAsOne = True
.WebSingleBlockTextImport = False
.WebDisableDateRecognition = False
.WebDisableRedirections = False
.Refresh BackgroundQuery:=False
End With
Range("a" & Fila + 1).EntireRow.Delete
Fila = Fila + 16
Next
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida