Jump to content

Galactico

Members
  • Content Count

    34
  • Joined

  • Last visited

Everything posted by Galactico

  1. muchísimas gracias, usted es un crack!
  2. buenas tardes, estoy trabajando con la siguiente macro, estoy aprendiendo a usar doble for, pero aun no logro ejecutarla como quiero, básicamente necesito que para un valor de y, utilice un valor único de x (que sea creciente en 1 unidad y no se vuelva a repetir en el siguiente valor de y) al ejecutar la macro paso a paso, para un valor y, me toma todos los valores de x en una misma casilla y al final solo me muestra el ultimo valor x, espero que se pueda entender, en el archivo adjunto, esta la macro con los datos y abajo esta a lo que quiero llegar Sub Prueba1() Dim x As Integer, y As Integer For y = 1 To 10 If Not (Cells(y, 4)) Like "Hola" Then For x = 1 To 10 On Error Resume Next Cells(y, 8).Value = Range("e" & CStr(x)) Next End If Next End Sub muchas gracias Prueba1.xlsm
  3. Muchas gracias, me ha ayudado mucho, no es posible usar las variables type o value para lograr encontrar el botón? Gracias, le daré un vistazo
  4. Muchísimas gracias, conseguí lo que quería a la perfección con el código que nos compartió, una ultima consulta para terminar con el proyecto que estoy realizando tengo que hacer click en un botón que tiene la siguiente forma, donde el boton se llama Go <span class="block labeledBlock"> <span class="lb_Label">&nbsp;</span> <br> <span class="lb_Content"> <input type="submit" value="Go"> </span> </span> estoy tratando de clickearlo con el siguiente linea de código .Document.getElementsByName("lb_Content")(0).hasAttribute("type").hasAttribute("value").Click pero no he dado con la solución, he probado de varias formas, también e intentado con GetElementsByTagName y GetElementsByName, pero nada aun, agradecería mucho una mano, necesito si o si agregar algun atributo ya que la pagina que estoy viendo tiene varias clases que se llama "lb_Content" saludos.
  5. muchas gracias por tu respuesta, me salio duda, que pasa si quiero copiar en una casilla de excel, el nombre del ID? en este caso, para dejar en la celda d4 como texto el SIvCob o el gNO89b? o específicamente necesito, que me traiga a una celda de excel el nombre de la id para usarlo después <table class="MKMTable wantsTable MKMSortable"> <thead> <tr>…<tr> </thead> <tbody> <tr> <td class="centered"> <input type="checkbox" name="a_WantedCards[5e0ba7f39565560cc15d296b]" class="massEditCB"> </td> <td class="centered"> entonces lo que necesito es que me copie como texto en una casilla de excel el nombre "a_WantedCards[5e0ba7f39565560cc15d296b]" , en este momento estoy tratando de obtener ese dato, pero no tengo resultados, seria posible realizarlo? muchas gracias gracias por su respuesta, que otro objeto utiliza? saludos
  6. buenas tardes, tengo el siguiente código para navegar por paginas web, pero navega en segundo plano, que debo agregar al código para que se pueda abrir y visualizar la pagina que abre la macro? Sub testnavegar() Dim htmlDeRespuesta As Object Set htmlDeRespuesta = CreateObject("htmlFile") With CreateObject("msxml2.xmlhttp") .Open "Get", "https://www.google.cl/", False .send htmlDeRespuesta.body.innerHTML = .responseText End With On Error Resume Next Range("d4").Value = htmlDeRespuesta.getElementsByid("gNO89b")(0).innerText On Error GoTo 0 End Sub muchas gracias
  7. Buenas, estoy tratando de automatizar un carro de compras para armarlo con macro, hasta el momento puedo abrir una web, seleccionar algún item por posición en el codigo fuente y agregarlo al carro, se que voy bien encaminado, Sub test() Dim IE As Object Set IE = CreateObject("InternetExplorer.Application") With IE .Top = 0 .Left = 0 .height = 1000 .Width = 1050 .Visible = True .Navigate "https://store.channelfireball.com/catalog/magic_singles-saga_block-urzas_saga/duress/17412" Do While .Busy Or Not .ReadyState = 4: DoEvents: Loop .Document.getElementsByClassName("add-to-cart-form")(0).getAttribute("NM-Mint, English")(0).getElementsByClassName("qty")(0).Value = "3" .Document.getElementsByClassName("utility-button add-to-cart")(0).getAttribute("NM-Mint, English")(0).Click End With End Sub pero no logro dar con el resultado que quiero. en el código, si elimino la parte ".getAttribute("NM-Mint, English")(0)" la macro se ejecuta utilizando la posición del botón en el código fuente, puede rellenar el campo de cantidad y apretar el botón para agregar al carro, pero necesito realizar un pequeño filtro por el texto que contiene el elemento (no utilizar la posición), en este caso "NM-Mint, English" o "Slightly Played, English," en algunos casos, el orden de estos varia, dependiendo de cada articulo que este mirando, por lo que no puedo utilizar posición, debo realizar algún filtro, agradecería mucho su ayuda. saludos
  8. @Antoni muchísimas gracias, funciono a la perfección. saludos
  9. Hola @Leopoldo Blancas gracias por tu respuesta, idealmente tengo que lograr realizar los reemplazos, sin cambiar el formato de la celda, si lo hago, solo se cambia el guion por un punto de forma visible, ya que si copio el valor de la celda, esta mantendrá los guiones saludos
  10. hola, estoy tratando de realizar reemplazos, todo bien hasta que estoy tratando de reemplazar una celda que corresponde a una fecha, tengo que cambiar el "-" por "." pero no logro realizarlo, puedo realizar cualquier cambio de otro texto, incluso en esas mismas casillas. agradecería cualquier tipo de ayuda. gracias Book1.xlsm
  11. Hola José_Santos gracias por tu respuesta que método me recomendarías para comenzar a incursionar en esto del web scrapping? por elmomento solo se utilizar lo que estoy mostrando. muchas gracias
  12. entiendo, pero como es un intranet, solo puedo abrir la web si estoy conectado al internet de mi empresa, pero tengo una situación idéntica buscando en cualquier web, por ejemplo Lentes de Sol como deberia utilizar el getelements, para hacer click en un color u otro en esos lentes de sol sin utilizar una posición numerica? muchas gracias nuevamente por tu ayuda
  13. hola, leí lo que sale en el blog, pero solo pude llegar a esto para reducir el campo de búsqueda .Document.getElementsByClassName("add-to-cart-form")(0).getElementsByClassName("qty")(0).Value = "1" no me resulta agregar mas cosas quedo atento, gracias por tu ayuda
  14. Hola! muchas gracias, funciono a la perfección. tengo una consulta adicional, para tratar de hacer funcionar la macro que quiero utilizar, en la parte .getElementsByName("q" )(0) como podría cambiar el valor (0), por una característica en la linea de código y no buscar por posición?. en especifico, necesito trabajar con el siguiente código: <form class="solicitar" data-vid="309827" data-name="HojaSeguridad" data-id="11968" data-variant="Rojo"> <div class="product-price-qty"> <span class="regular price">$1.99</span> </div> <div class="qty-submit"> <input class="qty" max="5" name="qty" size="1" tabindex="1" type="number" value="1"> <input class="utility-button add-to-cart" name="commit" type="submit" value=""> </div> </form> en la macro actualmente utilizo la siguiente linea para hacer click en el botón. .Document.getElementsByClassName("utility-button add-to-cart")(0).Click pero en este caso necesito filtrar por el color rojo (data-variant="Rojo"), ya que en la pagina donde quiero utilizar la macro (es una pagina de intranet de mi empresa para solicitar materiales) para un mismo material, me aparecen varios botones iguales, que solo difieren en el color del material a solicitar, he intentado de varias formas, pero he podido dar con algo que resulte. espero se entienda lo que quiero realizar y agradecería nuevamente su ayuda. saludos.
  15. Hola, como estan? estoy tratando de utilizar una macro para realizar búsquedas en internet (google específicamente), pero no logro dar con el texto del código fuente para insertarlo en la linea de código. agradecería mucho que me dieran una mano, gracias Sub LoginGOOGLE() Dim IE As Object Set IE = CreateObject("InternetExplorer.Application") With IE .Top = 0 .Left = 0 .Height = 1000 .Width = 1250 .Visible = True .Navigate "https://www.google.com/" Do While .Busy Or Not .ReadyState = 4: DoEvents: Loop .Document.getelementbyid("gLFyf gsfi").Value = "buscar lo que sea en google" .Document.getelementbyid("Buscar con Google").Click End With End Sub saludos
  16. buenas, tengo la siguiente macro para obtener los comentarios en los datos de una tabla, entiendo mas o menos como funciona, pero tengo problemas para obtener los comentarios de 2 tablas distintas en una misma hoja, solo me obtiene los comentarios de la primera tabla la macro crea un archivo nuevo con todos los comentarios, a partir de otro archivo que posee los datos y comentarios, comienza a analizar las celdas desde el rango E3, en resumen necesito que la macro recorra las filas hasta la ultima fila con dato de la hoja, para obtener los comentarios. Sub pasadatos() Dim detfec(60) As Date Range("B3").Select nomdir = ActiveCell.Value Range("C3").Select nomrec = ActiveCell.Value nomarc = nomdir & "\" & nomrec Range("d3").Select hojent = ActiveCell.Value Workbooks.Open Filename:=nomarc, UpdateLinks:=0 Sheets(hojent).Select ActiveCell.SpecialCells(xlLastCell).Select colpos = ActiveCell.Column filpos = ActiveCell.Row Range(Cells(filpos, 1), Cells(filpos, 1)).Select fiyrev = ActiveCell.Value filpos = filpos + 1 Range(Cells(filpos, colpos), Cells(filpos, colpos)).Select Selection.End(xlDown).Select filpos = ActiveCell.Row Range(Cells(filpos, 3), Cells(filpos, 3)).Select Selection.End(xlUp).Select lindej = ActiveCell.Row Windows("pasadatos.xlsm").Activate Range("B2").Select nomdir = ActiveCell.Value Range("C2").Select nomarc = ActiveCell.Value nomdir = nomdir & "\" & nomarc Range("d2").Select hojent = ActiveCell.Value Workbooks.Open Filename:=nomdir, UpdateLinks:=0 Sheets(hojent).Select Range("E3").Select fecrev = ActiveCell.Value colpos = ActiveCell.Column While fecrev <> "Mes" canfec = canfec + 1 detfec(canfec) = fecrev colpos = colpos + 1 Range(Cells(3, colpos), Cells(3, colpos)).Select fecrev = ActiveCell.Value Wend colpos = colpos - 1 Range("D4").Select defrev = ActiveCell.Value filpos = ActiveCell.Row While defrev <> "" Range(Cells(filpos, 3), Cells(filpos, 3)).Select carrev = ActiveCell.Value Range(Cells(filpos, 2), Cells(filpos, 2)).Select arerev = ActiveCell.Value Range(Cells(filpos, 1), Cells(filpos, 1)).Select equrev = ActiveCell.Value hordet = "" comdet = "" colpos = 5 For ind = 1 To canfec Range(Cells(filpos, colpos), Cells(filpos, colpos)).Select hordet = Range(Cells(filpos, colpos), Cells(filpos, colpos)).Value On Error Resume Next comdet = Range(Cells(filpos, colpos), Cells(filpos, colpos)).Comment.Text If Len(comdet) > 0 Then Windows(nomrec).Activate lindej = lindej + 1 Range(Cells(lindej, 14), Cells(lindej, 14)).Select ActiveCell.Value = comdet comdet = "" Range(Cells(lindej, 1), Cells(lindej, 1)).Value = fiyrev Range(Cells(lindej, 2), Cells(lindej, 2)).Value = Month(detfec(ind)) Range(Cells(lindej, 3), Cells(lindej, 3)).Value = detfec(ind) Range(Cells(lindej, 4), Cells(lindej, 4)).Value = equrev Range(Cells(lindej, 6), Cells(lindej, 6)).Value = hordet Range(Cells(lindej, 9), Cells(lindej, 9)).Value = arerev Range(Cells(lindej, 10), Cells(lindej, 10)).Value = carrev Range(Cells(lindej, 11), Cells(lindej, 11)).Value = defrev Windows(nomarc).Activate End If colpos = colpos + 1 Next ind filpos = filpos + 1 Range(Cells(filpos, 4), Cells(filpos, 4)).Select defrev = ActiveCell.Value Wend End Sub agradecería cualquier tipo de ayuda
  17. hola, tengo una columna con varias casillas con texto, necesito que cada casilla con varias palabras se desglose en casillas separadas, con una palabra por casilla por ejemplo https://imgur.com/a/I8qhVdV tengo el siguiente codigo para hacerlo Public Function SepararEnColumnas(Rango As Range, intPosicion As Integer, strSeparador As String) Dim vSeparar As Variant Application.Volatile vSeparar = Split(Rango.Value, strSeparador) SepararEnColumnas = Trim(vSeparar(intPosicion - 1)) End Function pero necesito que sea una macros, no una funcion, tampoco quiero usar separador (que sea un espacio esta bien) agradezco mucho su ayuda
  18. alguien que me pueda dar una mano? gracias
  19. hola, tengo el siguiente macros para obtener datos de una pagina web, pero no logro obtener los datos, necesito ambos precios si es posible (que serian en este caso "NM-M $0.49" y " PLD-SP $0.25") si no es posible obtener ambos datos, el primero también me sirve. desde ya muchas gracias. Sub test1() Dim htmlDeRespuesta As Object Dim o As Object Set htmlDeRespuesta = CreateObject("htmlFile") With CreateObject("msxml2.xmlhttp") .Open "Get", "https://www.abugames.com/magic-the-gathering/singles/product-detail/Cho%252DManno,-Revolutionary-%252D-FOIL/Mercadian-Masques/English/", False .send htmlDeRespuesta.body.innerhtml = .responsetext End With For Each o In htmlDeRespuesta.all If LCase(o.classname) = "row not-first" Then Range("c4").Value = o.innertext Exit For End If Next End Sub
  20. buenas, tengo el siguiente macros para obtener datos de internet Sub KaladeshCK1() Application.ScreenUpdating = False On Error Resume Next web = "http://www.cardkingdom.com/mtg/kaladesh/Torrential-Gearhulk" principio = "itemAddToCart NM active" Final = "<div class=""dropdown"">" Set XML = CreateObject("Microsoft.XMLHTTP") XML.Open "POST", web, False XML.send texto = XML.responsetext posicion1 = InStr(texto, principio) posicion2 = InStr(texto, Final) dato = Mid(texto, posicion1, (posicion2 - posicion1)) Range("k4") = "Torrential Gearhulk" If Err = 0 Then Cotizacion = Split(dato, "<span class=""stylePrice""> $") Range("l4") = Trim(Left(Cotizacion(1), 6)) Else Application.ScreenUpdating = False On Error Resume Next principio = "itemAddToCart outOfStock NM active" Final = "<div class=""outOfStockNotice"">" Set XML = CreateObject("Microsoft.XMLHTTP") XML.Open "POST", web, False XML.send texto = XML.responsetext posicion1 = InStr(texto, principio) posicion2 = InStr(texto, Final) dato = Mid(texto, posicion1, (posicion2 - posicion1)) If Err = 0 Then Cotizacion = Split(dato, "<span class=""stylePrice""> $") Range("l4") = Trim(Left(Cotizacion(1), 6)) 'cambiar color de celda 'Range("d4").Interior.ColorIndex = 3 Range("l4").Font.ColorIndex = 3 End If End If Set XML = Nothing Application.ScreenUpdating = True End Sub pero tengo problemas para obtener el valor que quiero de esta pagina (con otras paginas me anda bien) , y no se como arreglarlo, agradecería mucho si alguien me pudiera ayudar a obtener este valor (el precio) muchas gracias!
  21. gracias por tu respuesta, si al parece esta difícil la cosa, pero crees que se pueda lograr? de ser así, en que tipo de funciones o que cosa tendría que empezar a aprender? no se mucho de macros, pero leyendo y con youtube he aprendido mucho (ya estoy leyendo sobre que es OCR). muchas gracias
  22. buenas, tengo el siguiente macros para obtener datos de internet Sub scgget() Dim htmlDeRespuesta As Object Set htmlDeRespuesta = CreateObject("htmlFile") With CreateObject("msxml2.xmlhttp") .Open "Get", "http://sales.starcitygames.com/carddisplay.php?productids[]=1263992&productids[]=1264618", False .send htmlDeRespuesta.body.innerhtml = .responsetext End With On Error Resume Next Range("e8").Value = htmlDeRespuesta.GetElementsByTagName("span")(7).innertext Range("e8").Replace What:="Out of Stock", Replacement:="NS" On Error GoTo 0 End Sub pero tengo problemas para obtener el valor que quiero de esta pagina (con otras me anda bien) (el valor price), y no se a que se debe, agradecería mucho si alguien me pudiera ayudar a obtener este valor muchas gracias!
  23. gracias tu respuesta, me podrias ayudar con un ejemplo? no se como usar el objeto internet explorer, muchas gracias!
  24. buenas, alguien podría darme una mano? gracias!
  25. buenas, tengo el siguiente macros para importar tablas desde paginas web, estoy tratando de importar la primera y segunda tabla de la pagina que esta en el código sin éxito, al tratar de importar la primera tabla (que según yo seria la tabla 0(cero)) me importa al excel una tabla que esta mas abajo en la pagina, la cual no me sirve, agradecería mucho su ayuda. un saludo a todos Sub TABLA() Dim htmlDeRespuesta As Object Dim row As Long Dim col As Long Set htmlDeRespuesta = CreateObject("htmlFile") With CreateObject("msxml2.xmlhttp") .Open "Get", "https://www.mtgowikiprice.com/card/mm3/96/Goblin_Guide", False .send htmlDeRespuesta.body.innerhtml = .responsetext End With With htmlDeRespuesta.GetElementsByTagName("table")(0) For row = 0 To .Rows.Length - 1 For col = 0 To .Rows(row).Cells.Length - 1 ActiveSheet.Cells(2, 2).Cells(row + 1, col + 1).Value = .Rows(row).Cells(col).innertext Next col Next row End With End Sub
×
×
  • Create New...

Important Information

Privacy Policy


CTA Templates.png