Jump to content

Guz Man

Members
  • Content Count

    17
  • Joined

  • Last visited

Everything posted by Guz Man

  1. Hola, ya pude resolver el tema en otro foro. Comparto la solución: Option Explicit Sub Login_ToMFS() ' *** LOGIN TO MFS WEBSITE *** Dim IE As New SHDocVw.InternetExplorer Dim URL As String URL = "https://www.mfs.com/wps/myportal/mfs/non-us-advisor/!ut/p/a1/04_Sj9CPykssy0xPLMnMz0vMAfGjzOL9A40C_c09jAzcjYOdDYxcTPyNTUONDS1NjPW99KPSc_KTgErDnYB6zXODk9OBuiId85KMLdL1o4pS01KLUov0MvKLS_QjysvL9XLTivWS83P1C7Kj3NIdFRUBBU7kpw!!/dl5/d5/L2dBISEvZ0FBIS9nQSEh/#" IE.Visible = True IE.Navigate URL Do While IE.Busy Or IE.ReadyState <> READYSTATE_COMPLETE Loop Dim HTMLDoc As MSHTML.HTMLDocument Set HTMLDoc = IE.Document ' *** Check credentials and autologin ' GET USER ID (HTML code) Dim UserIDCode As String UserIDCode = "userId" Dim HTMLInputUser As MSHTML.IHTMLElement Set HTMLInputUser = HTMLDoc.getElementById(UserIDCode) 'User ID If Not HTMLInputUser Is Nothing Then ' Check if user input exists ' USER ID Dim UserIDValue As String UserIDValue = "JohnWilliams" HTMLInputUser.Value = UserIDValue ' GET PASSWORD (HTML code) Dim UserPasswordCode As String UserPasswordCode = "paswordId" Dim HTMLInputPassword As MSHTML.IHTMLElement Set HTMLInputPassword = HTMLDoc.getElementById(UserPasswordCode) 'Password ' PASSWORD Dim UserPasswordValue As String UserPasswordValue = "John123qwe" HTMLInputPassword.Value = UserPasswordValue ' Login and submit Dim HTMLButtonLogin As MSHTML.IHTMLElement Dim HTMLButtonsLogin As MSHTML.IHTMLElementCollection Dim LoginButton As String LoginButton = "login_btn" Set HTMLButtonsLogin = HTMLDoc.getElementsByClassName(LoginButton) For Each HTMLButtonLogin In HTMLButtonsLogin Dim LoginValue As String LoginValue = "Login" If HTMLButtonLogin.getAttribute("value") = LoginValue Then HTMLButtonLogin.Click Exit For End If Next HTMLButtonLogin End If Application.Wait DateAdd("s", 20, Now) Call MFS_Global_HighYield(IE, "Absolute Return Fund") 'To look up for the specific fund End Sub Sub MFS_Global_HighYield(IE As SHDocVw.InternetExplorer, sval As String) Dim optCol As MSHTML.HTMLSelectElement Dim i As Long Set optCol = IE.Document.getElementById("select") For i = 0 To optCol.Length - 1 If InStr(optCol(i).innerText, sval) > 0 Then optCol(i).Selected = True Exit For End If Next 'Fire JS event optCol.FireEvent ("onchange") End Sub Se puede marcar como solucionado.
  2. Estimados, estoy intentando programar un código VBA en Excel para navegar por una página web y obtener información. En algunas secciones me encuentro con una ListBox (DropDown List, <select> tag en HTML, como quieran llamarle). No sé cómo seleccionar un ítem por nombre en ese listado. Utilizo referencia a estas librerías: 1. Microsoft Internet Controls 2. HTML Object Library Pongo un poco del código HTML de la página como referencia. <select onchange="redirect(this.value);" name="select" id="select" style="width: 165px;"> <option value="">Select a fund</option> <option value="/wps/myportal/mfs/non-us-advisor/products/meridian-funds/!ut/p/a1/04_Sj9CPykssy0xPLMnMz0vMAfGjzOL9A40C_c09jAzcjYOdDYxcTPyNTUONDS1NjPW99KPSc_KTwEojHfOSjC3S9aOKUtNSi1KL9DLyi0v0I8rLy_Vy04r1kvNz9cOd9aOSKjx88gL1C7KjkiodFRUBZk22dA!!/dl5/d5/L2dJQSEvUUt3QS80SmlFL1o2X09RMlFPN0gyMEczU0MwMkQ0TzM1VTMxRk8y/?clearPortletSession=true&productId=480&shareId=33&viewMode=profile"> <!-- Do Nothing --> Absolute Return Fund </option> <option value="/wps/myportal/mfs/non-us-advisor/products/meridian-funds/!ut/p/a1/04_Sj9CPykssy0xPLMnMz0vMAfGjzOL9A40C_c09jAzcjYOdDYxcTPyNTUONDS1NjPW99KPSc_KTwEojHfOSjC3S9aOKUtNSi1KL9DLyi0v0I8rLy_Vy04r1kvNz9cOd9aOSKjx88gL1C7KjkiodFRUBZk22dA!!/dl5/d5/L2dJQSEvUUt3QS80SmlFL1o2X09RMlFPN0gyMEczU0MwMkQ0TzM1VTMxRk8y/?clearPortletSession=true&productId=1466&shareId=33&viewMode=profile"> <!-- Do Nothing --> Asia Pacific Ex-Japan Fund </option> <option value="/wps/myportal/mfs/non-us-advisor/products/meridian-funds/!ut/p/a1/04_Sj9CPykssy0xPLMnMz0vMAfGjzOL9A40C_c09jAzcjYOdDYxcTPyNTUONDS1NjPW99KPSc_KTwEojHfOSjC3S9aOKUtNSi1KL9DLyi0v0I8rLy_Vy04r1kvNz9cOd9aOSKjx88gL1C7KjkiodFRUBZk22dA!!/dl5/d5/L2dJQSEvUUt3QS80SmlFL1o2X09RMlFPN0gyMEczU0MwMkQ0TzM1VTMxRk8y/?clearPortletSession=true&productId=139597&shareId=33&viewMode=profile"> <!-- Do Nothing --> Blended Research European Equity Fund </option> </select> Me gustaría poder seleccionar por el nombre, por ejemplo: Absolute Return Fund, Asia Pacific Ex-Japan Fund, Blended Research European Equity Fund. Tengo el Option Explicit habilitado, por lo que si no es molestia, agradezco que especifiquen el tipo de variable (de ser posible). No soy muy experiente programando, así que cualquier comentario por más básico que sea me ayudará.
  3. Hola Marco Antonio, sí, totalmente de acuerdo. En un comentario más arriba agradecí y puse que fue de ayuda. En el otro foro hice lo mismo. Saludos a todos y gracias nuevamente.
  4. @Toldeman Quise leer el vínculo de "Normas del Foro" pero el link está roto. Lo posteo aquí: https://ayudaexcel.com/foro/terms/
  5. Voy a simplemente comentar sobre el incidente de escribir en varios foros. Por favor indíquenme la regla donde se dice que no se puede escribir en varios foros con la misma consulta. "Pues simplemente que pones a tu servicio a todo el que te da la gana, unicamente por impaciencia." Tienes todo el derecho a no responder y yo todo el derecho a preguntar, siempre dentro de los términos de cada foro. No adminto tu criterio dictatorial, que tu tengas tus reglas, no significa que los demás tengamos que adoptarlas. Escribo en varios foros y nunca me importó responder preguntas múltiples. Los foros son una herramienta colaborativa y voluntaria. Si no entiendes eso, es tu problema. En los foros donde pregunté, siempre agradecí. No entiendo lo de "no ser agradecido". Te refieres a que no respondí en tiempo real agradeciendo la generosa colaboración? No todos estamos 100% frente a una PC. "perfil consultador": si, no tengo el dominio de Excel para estar ayudando a los demás, pero en mi campo de conocimiento, sí, y lo hago con gusto, en cualquier foro, tantas veces como ha sido necesario. Respondo en mis términos, tiempos y si lo deseo. Es tan difícil entender eso? En fin, esto se fue de tema.
  6. Hola @YoelMonsalve Gracias por tu respuesta. i=1 Sheets(i).Select ActiveWorkbook. Sheets(i). Range("A3").Select Este código funciona perfectamente. Ahora entiendo el problema. @ Cacho R dio justo en la tecla con su razonamiento. Muchas gracias!
  7. Hola!! Veamos si me pueden ayudar con esto. Tengo que seleccionar una celda, pero me da un error 1004 en tiempo de ejecución. (Error en el método Select de la clase Range). i = 1 ActiveWorkbook. Sheets(i). Range("A3").Select Si la ActiveSheet es diferente a Sheets(i), me da el error 1004, pero si es la misma, no pasa nada y me selecciona la celda. ¿Qué puede estar pasando? Utilizo Excel 2016. El libro no está protegido por contraseña, las sheets existen, no están ocultas. Muchas gracias!
  8. Hola! Gracias por tu comentario. Sí, tengo presente lo de Option Explicit, para forzar a la declaración de variables. Estaré revisando el artículo posteado. De todas maneras dejo el tema abierto para escuchar la opinión de la comunidad. Gracias.
  9. Estimados usuarios de Excel! La pregunta que tengo es sobre buenas prácticas al momento de programar, en este caso, respecto a la declaración de variables. Qué se estila más, es más práctico, es más eficiente, es mejor para el mantenimiento del código? Declarar las variables a nivel de: subrutina (Procedure only), de módulo (Module only), o acesible desde todos los módulos (All procedures in all modules) ? Supongo que dependerá de gustos, extensión del código, tipo de código, cuánta gente trabaja, etc. Ejemplo: Un desarrollo que tenga varios módulos, con varias rutinas y varios programadores trabajando simultáneamente. No sería más práctico tener en un módulo todas las variables a usar? Me interesa su opinión al respecto. Muchas gracias.
  10. Hola, muchísimas gracias por sus comentarios. Qué gran foro!! Estaré revisando sus consejos y ejemplos. No respondo ahora en mayor profundidad pues me tomará un tiempito entenderlo. PS. Se que no es la mejor manera para encontrar la celda vacía, ya había usado otro procedimiento. Este caso fue como un reto personal. Quería practicar el Do Until y fue lo único que se me ocurrió !!! jaja GRACIAS
  11. Quería saber si me podían ayudar con este codigo. (Lo tengo “resuelto”, pero tengo una duda) . IDEA: buscar en una columna de datos la última celda vacía y pegar un valor. Se que hay otros métodos para hacer esto, pero era un reto personal. Mi solución (Nota: soy principiante en programación, apenas dos meses). Sub ejercicio3() Dim i As Long i = 0 ‘Se loopea por un rango de celdas hasta que encuentre una celda vacía Do Until IsEmpty(Cells(i + 1, 1)) = True i = i + 1 If IsEmpty(Cells(i + 1, 1)) = True Then Cells(i + 1, 1).Value = “test” Exit Sub End If Loop End Sub[/CODE] MI PREGUNTA: No me queda claro el porqué cuando incorporo el contador (i = i + 1) al final (entre el END IF y el LOOP), en lugar de al principio (como está ahora, justo luego del DO UNTIL), no funciona el código. Casi siempre veo que en DO WHILE/UNTIL ponen el contador al final, y no al principio. No funciona así: [CODE]Sub ejercicio3() Dim i As Long i = 0 ‘Se loopea por un rango de celdas hasta que encuentre una celda vacía Do Until IsEmpty(Cells(i + 1, 1)) = True If IsEmpty(Cells(i + 1, 1)) = True Then Cells(i + 1, 1).Value = “test” Exit Sub End If i = i + 1 Loop End Sub[/CODE] Alguna idea? MUCHAS GRACIAS!
  12. Hola a todos !!! Quiero agradecer la enorme ayuda brindada y con la velocidad que lo hicieron. Da gusto ver que la comunidad online se presta para tal noble gesto. En una lectura preliminar, puedo decir que las dos soluciones planteadas (bfelix & jonetoja) funcionan perfectamente. Se me planteó la siguiente consulta adicional, en base al comentario de bfelix: "La función BUSCAR no es la más adecuada para este problema." Porqué? Cuándo se utiliza? GRACIAS
  13. Muchas gracias, acá lo adjunto. Comentario: lo pasé a .xls pq no me dejaba subirlo, pero aclaro que estoy trabajando con Excel 2013. Funcion BUSCAR.xls
  14. Quiero usar la función BUSCAR en una base de datos, necesito que busque una fecha y su correspondiente precio. Columna A: Fecha Columna B: Precio Columna C: fechas a buscar Columna D: ingreso función buscar, busca fecha y precio correspondiente Hice lo siguiente: " =BUSCAR(C1,A:A,B: " PERO ! No funciona, solo devuelve el valor (precio) de la última celda, sin importar la fecha. ¿Alguna idea? PD. en mi excel se usa coma y no punto-y-coma para separar argumentos de fórmula
  15. Estimados, es mi primer post en este foro y desde ya agradezco enormemente su ayuda. No se programar en ningún lenguaje, pero algo "entiendo" (ya se poner "Hola Mundo" con VBA jeje). Necesito su ayuda con lo siguiente: 1) Tengo un listado diario de precios de acciones, pero solo necesito usar el precio del útlimo día hábil del mes (lunes a viernes). Luego haré análsis en función de los precios mensuales (medias, desviaciones, etc). 2) Diferentes proveedores me pasan los precios con su correspondiente fecha en diferentes formatos: -- subo excel con un modelo indicativo -- Ejemplo: a) uno me pone formato: MM / DD / AA y otro me pone DD / MM / AA separan los decimales con coma (,) o con punto (.) c) ponen el precio hasta el viernes y luego saltan al lunes (en los fin de semanas no hay mercado); mientras que otro pone precio a sábado y domingo con el valor del viernes (sumándome dos celdas inútiles). Tipo: Jueves $8 Viernes $9 Sábado $9 Domingo $9 Lunes $10 ¿Qué es lo que necesito? Armar una nueva base de datos, solo con la fecha y precio del último día hábil del mes. Ej: Columna A: Fecha (en formato DD/MM/AA) Columna B: Precio (con separador de decimales en función configuración windows) No sería necesario que reconociera cuantos listados de precios de diferentes acciones haya, solo analizar la columna A y B. Y que se adapte a la cantidad de precios (puede ser 2 años o 10 años, etc) Alguien sabe cómo hacer esto? Desde ya muchas gracias por su gentil ayuda. Precios.xls
×
×
  • Create New...

Important Information

Privacy Policy


CTA Templates.png