Su dirección de correo electrónico no será publicada. Los campos obligatorios están marcados *
Lo sentimos, no pensé en cómo se vería el código en el comentario enviado. Elimine si lo desea y volveré a publicar en un formato mejor.
En cuanto a los comentarios sobre VBA siendo arcaico, lo he encontrado realmente útil. Me permitió convertir un proceso de una semana en mi equipo en un proceso de 10 minutos. Me permitió reducir la mayoría de las actividades que realiza mi equipo al automatizar casi todo.
Pude aplicar validaciones de AD, extraer datos de varias bases de datos de sistemas operativos y recortar todas las molestas consultas SQL y luego cortar y pegar.
Cambió un trabajo que requería múltiples consultas, generando manualmente múltiples correos electrónicos en un solo clic.
Me encanta, arcaico o no.
Encontré algo en este sentido hace algún tiempo y desarrollé una aplicación basada en Excel que me permitió rastrear el número de "Me gusta" en un conjunto de páginas específicas de Facebook. Desde entonces he extendido eso para usar VBA para obtener todo tipo de información en varios sitios web.
Mi problema en este momento es que tengo algunos problemas con IE y tiendo a usar Chrome.
¿Cómo traduzco el tipo de código que tienes arriba para que haga lo mismo pero usando Chrome como navegador? Puedo usar un comando de Shell para abrir el navegador Chrome e ir a una URL específica, pero no puedo descubrir cómo extraer información de esa página.
Como ejemplo, mi código de Facebook es:
Sub GetLikes () Dim IeApp como InternetExplorerDim sURL como StringDim IeDoc como ObjectDim i como Longdebugmode = False If debugmode Then Open "c: VBAoutputvbaOutput.txt "Para Anexar como # 1 'Crear nueva instancia de IE Set IeApp = New InternetExplorer' Hacerla visible: algunas cosas no funcionan a menos que es visible IeApp. Visible = debugmode Para cada mc En Selection'define la página para abrir sURL = mc 'Encuentre la columna chkDate = Date Set c = Range ("2: 2"). Find (chkDate) Si c no es nada, entonces myCol = Range ("2: 2"). Encuentre (what: = "*", searchdirection: = xlPrevious) .Column + 1 Cells (1, myCol) = "Status" Cells (1, myCol + 1) = Celdas "Me gusta" (1, myCol + 2) = Celdas "Enlaces" (2, myCol) = Celdas chkDate (2, myCol + 1) = Celdas chkDate (2, myCol + 2) = chkDate Else myCol = c. Fin de columna si 'mc. Offset (0, 1) .Value = Date isDown = mc. Offset (0, 3) .Value If isDown = "Page Down" Entonces pageDown = "Page Down" numlikes = "" numlinks = "" doNothing = True Else 'navegue a la página IeApp. Navegue sURL 'Pause la macro usando un bucle hasta que la página esté completamente cargada Do Loop Hasta IeApp. ReadyState = READYSTATE_COMPLETE 'almacena el objeto Document Set IeDoc = IeApp. Documento sobre error Reanudar Siguiente códigos = IeDoc. Body.innertext If Err. Número 0 Entonces Err. Borrar GoTo skiploop End si está en error GoTo 0 si debugmode Entonces escriba # 1, códigos y vbCrLf y vbCrLf numlinks = IeDoc. Enlaces. Longitud a = IeApp. LocationName 'Depuración. Imprimir códigos pageDown = True isPageStats = InStr (códigos, "placePageStatsNumber") isGroup = InStr (códigos, "uiButtonText> Join") isOldGroup = InStr (códigos, "Este grupo está programado para ser archivado ") isOpenGroup = InStr (códigos," Grupo abierto ") isEvent = InStr (códigos," Evento público ") isClosedGroup = InStr (códigos," Grupo cerrado ") IsOpen = InStr (códigos, a) isCommonInterest = InStr (códigos, "Interés común") isMovie = InStr (códigos, "Movieu003c") isNumberGiant = InStr (códigos, "uiNumberGiant") notFound = InStr (códigos, "No se encontró la página que solicitó") profileUnavailable = InStr (a, "Perfil no disponible") titlePos = InStr (códigos, "") Si titlePos> 0 Entonces titlePos2 = InStr (titlePos, códigos, "") Si titlePos> 0 Entonces titleName = Mid (códigos, titlePos + 7, titlePos2 - titlePos - 7) If isPageStats> 0 Then isPageStats = isPageStats + 23 pos2 = InStr (isPageStats, codes, "") pageDown = "Current" likeTxt = Mid (codes, isPageStats, pos2 - isPageStats) ElseIf isGroup> 0 Entonces likeTxt = "n.k." pageDown = "Group" ElseIf isOldGroup> 0 Entonces likeTxt = "n.k." pageDown = "Old Group" ElseIf isOpenGroup> 0 Entonces pos1 = InStr (isOpenGroup, códigos, "Miembros (") + 9 pos2 = InStr (pos1, códigos, ")") numMembers = Mid (códigos, pos1, pos2 - pos1) pageDown = "Grupo abierto" likeTxt = LTrim ( numMembers) ElseIf isEvent> 0 Entonces pos1 = InStr (1, códigos, "Centro de ayuda") pos2 = InStr (pos1 + 1, códigos, "Ver todo") + 9 pos3 = InStr (pos2, códigos, "Asistir") - 1 Si pos3 = -1 Entonces pos1 = InStr (códigos, "pagelet_event_guests_going") + 28 pos2 = InStr (pos1, codes, "> Going (") + 8 pos3 = InStr (pos2, codes, ")") numAttending = Mid (codes, pos2, pos3 - pos2) Else numAttending = Mid (códigos, pos2, pos3 - pos2) 'pos2 - pos1) End If likeTxt = LTrim (numAttending) pageDown = "Event" ElseIf isClosedGroup> 0 Then pageDown = "Closed Group" pos1 = InStr (isClosedGroup, códigos, "Miembros") + 9 pos2 = InStr (pos1, códigos, ")") likeTxt = Mid (códigos, pos1, pos2 - pos1) ElseIf isNumberGiant> 0 Entonces pos2 = InStr (isNumberGiant, códigos, ">") pos3 = InStr (pos2, códigos, "") likeTxt = Mid (códigos, pos2 + 1, pos3 - pos2 - 1) pageDown = "Current" ElseIf isCommonInterest> 0 Then pageDown = "Common Interest" likeTxt = "n.k." Si no está abierto> 0 y a "Facebook" Entonces pageDown = "Current" likeTxt = "n.k." ElseIf isMovie> 0 Then pageDown = "Movie" likeTxt = "n.k." End If If pageDown = True Then pageDown = "Av Pág" likeTxt = "n.a." numlinks = "n.a." End If End If mc. Offset (0, myCol - 2) .Value = pageDown mc. Offset (0, myCol - 1) .Value = likeTxt mc. Offset (0, myCol - 0) = numlinksskiploop: pageDown = "" likeTxt = "" numlinks = "" Siguiente mc'Clean up IeApp. Salga de Set IeApp = Nothing If debugmode Entonces cierre # 1 End Sub
Es torpe pero hace el trabajo.
Supongo que todo lo que busco es cómo extraer .Body.innertext de una instancia de Google Chrome.
Como dijo Jeff, no para reemplazar su navegador, sino para utilizarlo para una aplicación específica. He usado este método dos veces.
Pertenezco a un club de pasatiempos local, pero también debes ser miembro del club nacional. Solía usar una consulta web de Excel para recorrer nuestra membresía (por número de identificación de miembro nacional) y verificar que los miembros fueran pagados en la organización nacional. Pero hace unos años, la organización nacional cambió la forma en que funciona su sitio y la consulta web ya no funcionaría. Pero este método todavía me permite recorrer rápidamente la membresía y verificar visualmente la membresía nacional. (Incrusto el navegador en un formulario de Excel que muestra simultáneamente la información de los miembros de nuestro club local).
Luego, la semana pasada, en el trabajo, necesitábamos realizar una auditoría de precisión sobre la información contenida en aproximadamente 10,000 imágenes; comparando la información capturada en la imagen con la información relacionada en nuestra base de datos y asegurando que coincidan. Así que necesitaba una forma para que los usuarios miraran rápidamente una imagen, escribieran cierta información contenida en la imagen y repitieran esto una y otra vez 10.000 veces. Pusimos las imágenes en un servidor web y utilicé este método para extraer la imagen en una ventana del navegador en un formulario de entrada de datos de Excel. Los usuarios verían la imagen, escribirían la información requerida en el formulario de entrada de datos, presionarían la tecla Intro y pasarían instantáneamente a la siguiente imagen para su revisión.
Para aplicaciones como las que he descrito anteriormente, es bastante útil. Es probable que nunca me tome el tiempo para llegar a dominar un lenguaje de programación 'más serio', pero puedo grabar macros y buscar fragmentos en VBA lo suficientemente bien. La auditoría de precisión me llevó menos de un día para desarrollar, probar e implementar completamente. No necesitaba extraer recursos de desarrollador de sus tareas asignadas (y dudo seriamente que cualquiera de nuestros desarrolladores de Java o PL-SQL lo haya podido hacer más rápido que con Vanilla Excel y VBA.