Jump to content

mjrofra

Members
  • Content Count

    2,696
  • Joined

  • Last visited

  • Days Won

    13

Everything posted by mjrofra

  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.
  15. re: Solución al "sincronizar" Tablas Dinamicas "condicionadas" Así es. Como decía ST (uno de los grandes maestros de este foro), es matar moscas a cañonazos. No es la solución más elegante, pero soluciona el problema . Lo importante: tener cuidado, porque cualquier error al que de pronto le quieras prestar atención, será ignorado y ni te darás cuenta de que se presentó.
  16. re: Solución al "sincronizar" Tablas Dinamicas "condicionadas" Hola JaimeDavid, la verdad, no había descargado tu archivo. No sé si te entiendo bien, pero quizás con esto baste o al menos te ponga en camino: Sub PivotControl(Pivot, Filtro, Valor As String) Dim pt As PivotTable On Error Resume Next Application.ScreenUpdating = False For Each pt In ActiveSheet.PivotTables pt.PivotFields(Filtro).CurrentPage = Valor Next pt Application.ScreenUpdating = True End Sub Sub HomeFiltro_Anio() PivotControl "HomePivot_Año", "AÑO", Range("Home_PivotAño") End Sub Sub HomeFiltro_Mes() PivotControl "HomePivot_Mes", "MES", Range("Home_PivotMes") End Sub Sub HomeFiltro_Dia() PivotControl "HomePivot_Dia", "DIA", Range("Home_PivotDia") End Sub
  17. re: Solución al "sincronizar" Tablas Dinamicas "condicionadas" Hola, quizás esto te ayude: Vinculas los filtros de todas las tablas dinámicas de un libro de Excel
  18. ... o Excel Web App de Microsoft, en Skydrive. Igual, si vas a usar macros, como en Google Docs, deberás recurrir a JavaScript en lugar de VBA.
  19. Hola, lo más fácil puede ser publicar tu archivo de Google Docs como página Web y luego crear una conexión de datos en Excel a esa página web: Importar datos de Google Docs a Microsoft Excel
  20. Ahí va de nuevo . Espero funcione, lo subo en .xlsm y .xls. Mapas Roadmap.zip Mapas Roadmap.xls
  21. Hola, he pasado rápido y he visto el tema y me gustaría aportar algo, aunque no tengo mucho tiempo. Dejo un pequeña reelaboración de lo que ya está hecho. La api de staticmap de google devuelve una imagen (por defecto jpg) por lo que la puedes cargar directamente en un contenedor en tu hoja. Por favor, revisa la documentación de la API: https://developers.google.com/maps/documentation/staticmaps/#Paths Te dejo un adjunto, quizás te dé alguna idea más. Con la API de google maps (no staticmaps) seguro puedes hacer lo que quieres, debes registrarte para usar su API (es gratuito hasta no recuerdo cuántas llamadas a la api), aunque hay que decirlo, tendrás menos trabajo si cargas tus datos en google docs: http://gmaps-samples.googlecode.com/svn/trunk/spreadsheetsmapwizard/makecustommap.htm Con Microsoft, quizás te convenga más usar la API de bing maps: Excel Mashup Creating an Excel Services and Bing Maps Mashup for SharePoint 2010 Using the Excel Services ECMAScript Object Model Excel Blog - Create smashing mashups with Excel Lamentablemente no tengo el tiempo que quisiera para experimentar un poco con tu problema. Mapas Roadmap.xls
  22. Hola, aparte de lo que ya te menciona Nico, quizás esto también te pueda servir: Obtener cotizaciones del mercado de divisas FOREX Lo mejor sería saber si tienes alguna página en específico de donde quieras traer el dato para ver cuál puede ser la mejor forma de hacerlo.
  23. Hola, con el comando at puedes programar la ejecución de otro comando en la consola. Si omites el argumento t en el comando shutdown se apaga inmediatamente. Así, puedes programar el apagado inmediato a determinada hora: at 13:27 shutdown -s -f
  24. Hola, si tu pregunta guarda relación con este tema: Solucionado Como realizar .INI me parece que al final no necesitas un archivo de configuración para almacenar una sóla variable. En Excel puedes crear un nombre invisible que te permite hacer la comprabación de una o más variables sin la complejidad de un archivo de configuración (que como su nombre lo indica, te permite guardar toda la configuración de un programa, pero es más de lo necesario para verificar una, dos o cinco variables). Para crear un nombre oculto en tu Excel puedes usar algo como: thisworkbook.Names.Add name:="VariableTal", _ refersto:="Valor", _ visible:=False para leer el valor puedes usar algo como: [VariableTal] La ventaja, no hay ningún archivo por ahí que la gente pueda borrar y al estar oculto, es muy difícil que la gente sepa que la variable está ahí en algún lado y menos si proteges tu código. Bueno, es sólo una idea tras ver lo que al final necesitabas en el otro tema, quizás puedas tomar algo de ahí.
×
×
  • Create New...

Important Information

Privacy Policy