Jump to content

mjrofra

Members
  • Content Count

    2,696
  • Joined

  • Last visited

  • Days Won

    13

About mjrofra

  • Rank
    Advanced Member

Profile information

  • Gender Array

Recent Profile Visitors

The recent visitors block is disabled and is not being shown to other users.

  1. En VBA asignas el valor que quieres devolver al nombre de la función, no usas return: function f(a, as string f = a & b end function
  2. Macro, he descargado tu archivo porque no entendía de qué hablabas. Al abrirlo entendí y me acordé inmediatamente de haberlo visto hace ya rato. Chandoo lo había publicado (Interactive Dashboard in Excel using Hyperlinks | Chandoo.org - Learn Microsoft Excel Online) y el autor-descubridor (o al menos el que lo publicó primero) parece que fue un tal Jordan Goldmeier (How to Create a Rollover Effect in Excel: Execute a Macro When Your Mouse is over a Cell | OPTION EXPLICIT VBA)
  3. Macro, pues creo que es lo segundo. Aunque seguro Pedro se refiere a juego / ajedrez (o dolor / cabeza), eso no quita que esté un poco "zumbao".
  4. Hola Pedro, lamento no contar con el tiempo para verificar con profundidad. He intentado reproducir tu error en mi máquina (win8 excel 2013-64 bits) y no lo he conseguido. En todo caso, quizás puedas hacer algunas pruebas con algo así: Sub prueba1() With ActiveSheet.Shapes("Diagram image") .CopyPicture With ActiveSheet.ChartObjects.Add(.Left, .Top, .Width * 2, .Height * 2).Chart .Paste .Export ThisWorkbook.Path & "/imagen_tal.gif" .Parent.Delete End With End With End Sub[/CODE] [CODE]Sub prueba2() Dim img As Excel.Shape Set img = ActiveSheet.Shapes("Diagram image") img.CopyPicture With ActiveSheet.Shapes.AddChart .Height = img.Height * 2 .Width = img.Width * 2 .Chart.Paste .Chart.Export ThisWorkbook.Path & "/imagen_tal.gif" .Delete End With End Sub[/CODE] Observa que estamos jugando con la forma de crear el gráfico, que es donde parece que está el error (¿?).
  5. Hola Pedro, Gran alegría poder saludarte. Seguro que tu manejas estos temas mejor que yo, pero por si vale de algo, te dejo mis dos centavos sobre el tema de los enlaces anticipados y tardias (en una discusión ya vieja en la que también participo el maestro neverdelimon1). No he descargado tu archivo ni revisado tu problema, sólo me acordé por tu pregunta de esa vieja discusión a la que te remito: Foro Excel • Ver Tema - VB 6 con Excel 2007 SOS SOS SOS
  6. El uso de winHttp puede resultar un poco complejo ya que no tienes interfaz gráfica para verificar lo que vas haciendo (esto mismo es uno de los puntos que los hace más liviano y rápido) y realmente no sé muy bien qué quieres hacer ni conozco más que lo que inidicas que no te funciona (que no es mucho). En todo caso, quizás esto te pueda servir como punto de partida: Sub loginWinHttp() Dim objWinHttpRequest As Object Set objWinHttpRequest = CreateObject("WinHttp.WinHttpRequest.5.1") objWinHttpRequest.Open "POST", "http://200.25.197.138:7778/axis/login/gep_login.jsp" objWinHttpRequest.send "user=tal&password=pascual" ' tienes que buscar la cadena que se envia cuando se hace la solicitud, debe ser algo así Debug.Print objWinHttpRequest.responsetext End Sub[/CODE]
  7. Hola, sería útil saber qué quieres decir cuando dices que no te funciona. ¿te sigue arrojando el mismo error? Ten en cuenta que el error era porque no existía elemento con ese Id como te indiqué. Quizás esto te ponga en camino (aunque no es más que lo que ya te dije): Sub Loguearse() Dim appIE As Object ' InternetExplorer Dim doc As Object 'HTMLDocument Dim URL As String Dim objIMG As Object ' HTMLImg Dim objAnchor As Object ' HTMLAnchorElement Set appIE = CreateObject("InternetExplorer.Application") URL = "http://200.25.197.138:7778/axis/login/gep_login.jsp" With appIE .Visible = True .navigate2 URL Do While .ReadyState <> 4 Or .Busy DoEvents Loop With .document .getElementsByName("user")(0).Value = "Usuario" 'Aquí se para la macro .getElementsByName("password")(0).Value = "Password" .parentWindow.execScript "ok()", "JavaScript" End With End With Set appIE = Nothing End Sub[/CODE]
  8. Hola novo34, me parece que la página a la que quieres acceder es un frame para esta otra: http://200.25.197.138:7778/axis/login/gep_login.jsp Por lo que quizás quieras probar mejor con esa directamente. Ya en esta última página, no veo ningún elemento con Id "user" ni "password", por lo que no vale de nada usar .getElementById. Existen los elementos de dicho nombre, por lo que quizás en su lugar quieras usar .getElementsByName. Ten en cuenta que a diferencia del Id, pueden existir varios elementos con el mismo nombre, por lo que dicho método te devolverá un array, de allí debes extraer el primer elemento: .getElementsByName("user")(0).value = "pascual". No he hecho pruebas ni he probado tu código, sólo he observado el DOM de la página que mencionas. Como sea, no soy muy partidario de interactuar de esta forma con una página Web, quizás mejor quieras enviar las solicitud POST directamente al servidor y quizás sea más conveniente usar algo más liviano y no dependiente de IE (a mi, personalmente, me gusta winHTTP).
  9. Hola, acá te dejo un borrador, no sé si algo así sea lo que buscas. Libro1.zip
  10. re: Solución al "sincronizar" Tablas Dinamicas "condicionadas" Hola, applicationi.caller es el nombre de quien llama a la macro. En este caso la macro la ejecutan los combobox (o cuadro combinado), por lo tanto application.caller devuelve el nombre del combobox que se ha cambiado y ejecutó la macro. Yo les he puesto lstYear, lstMonth y lstDay a cada combobox. Puedes ponerle el nombre que quieras y lo usas en tu select case. Si añades más filtros (combobox) sólo dales un nombre representativo y está. Es más, podrías simplificar aún más si homogenizas nombre. Por ejemplo, llamas al cuadro de combinado Año, al filtro Año y al rango con el valor Año, con esto, la macro se reduciría a: pivotcontrol filtro:=application.caller, Valor:=range(application.caller), tabla1, tabla2, etc. o algo así, estoy escribiendo de memoria.
  11. Hola, podrías indicarnos de qué página web es la tabla con los vínculos o subir un archivo de ejemplo de lo que tienes y de lo que quieres lograr.
  12. re: Solución al "sincronizar" Tablas Dinamicas "condicionadas" ... y acá dejo un archivo con una opción un poco más elaborada (puede parecer más compleja, pero resulta más fácil de mantener o modificar). Copia de Control TMP Mod.zip
  13. re: Solución al "sincronizar" Tablas Dinamicas "condicionadas" Hola, he vuelto a releer lo que dices y aún no estoy seguro de entender. En todo caso, sí lo que quieres es que sólo se actualicen ciertas tablas en tu hoja (que me parece que por ahí es) quizás puedas crear un colección que albergue las tablas dinámicas y luego las recorres actualizándolas, algo así: Sub PivotControl(Filtro, Valor As String) Dim pt As PivotTable Dim pts As Collection Set pts = New Collection With ActiveSheet pts.Add .PivotTables("HomePivot_Año") pts.Add .PivotTables("HomePivot_Mes") pts.Add .PivotTables("HomePivot_Dia") End With On Error Resume Next Application.ScreenUpdating = False For Each pt In pts pt.PivotFields(Filtro).CurrentPage = Valor Next pt Application.ScreenUpdating = True End Sub Sub HomeFiltro_Anio() PivotControl "AÑO", Range("Home_PivotAño") End Sub Sub HomeFiltro_Mes() PivotControl "MES", Range("Home_PivotMes") End Sub Sub HomeFiltro_Dia() PivotControl "DIA", Range("Home_PivotDia") End Sub[/CODE] Bueno, por si aún vale de algo la respuesta .
  14. re: Solución al "sincronizar" Tablas Dinamicas "condicionadas" Te respondo rápido para no dejar el tema. No entiendo muy bien, pero quizás puedas revisar la propiedad pivotcache para determinar la fuente de cada tabla. Es lo que se me ocurre con lo que dices. Por ahora ya no cuento con mucho más tiempo para hacer pruebas, en unos tres o cuatro días vuelvo... seguro para entonces ya lo has solucionado tú solo o con la ayuda de alguien más . Habrán muchas formas de hacerlo. Lamento no contar con el tiempo. En unos tres días vuelvo a ver qué ha pasado.
×
×
  • Create New...

Important Information

Privacy Policy

Ayuda Excel - Madrid, Madrid, ES - Valorada por 5112 personas - Aprender Excel - Total: 4.7 / 5