Jump to content

neverdelimon1

Members
  • Posts

    899
  • Joined

  • Last visited

  • Days Won

    15

Everything posted by neverdelimon1

  1. Hola Lo que estas tratando de simular no es cosa menor, VBA no tiene soporte nativo para múltiples hilos, para ellos debes de recurrir a la API de Windows, coloco un enlace donde puedes ver como se maneja dicha API https://www.freevbcode.com/ShowCode.asp?ID=4029 Si usas C sharp ahí si lo tienes nativo y por tanto encontrarás bastantes ejemplos en la web saludos
  2. Re: Error en tiempo de ejecucion Hola verifica que en verdad exista una ventana con ese nombre, quizas en tu oficina SIMULACION GRAFICOS V 2 SIN en tu casa SIMULACION GRAFICOS V 2 SIN.xls o SIMULACION GRAFICOS V 2 SIN.xlsm (o algo que tenga de más la ventanta en el titulo que por eso no la localiza?) saludos
  3. Re: Hipervinculos desde Visual Basic a otros archivos de excel Hola Sin ver el archivo es dificil imaginarse como estan las macros, aqui va mi intento, prueba y nos platicas Private Sub CommandButton1_Click() Dim LibroPrograma As Workbook, LibroAbierto As Workbook 'libro donde esta tu macro Set LibroPrograma = ThisWorkbook With LibroPrograma .Worksheets("Hoja2").Activate .FollowHyperlink Range("a16").Value2 'verifica si el vinculo abrio un libro de excel If ActiveWorkbook.Name <> .Name Then Set LibroAbierto = ActiveWorkbook If Not LibroAbierto Is Nothing Then Me.Hide 'oculta el formulario LibroAbierto.Windows(1).WindowState = xlMaximized On Error Resume Next Do DoEvents 'permite que se ejecuten eventos Loop While LibroAbierto.Windows(1).WindowState = xlMaximized And Not LibroAbierto Is Nothing On Error GoTo 0 End If Me.Show .Worksheets("Hoja1").Activate End With Set LibroPrograma = Nothing Set LibroAbierto = Nothing End Sub[/CODE] saludos
  4. Re: Menu- Form - Celdas Flotantes Hola Para mover el form agrega este evento y las siguientes instrucciones Private Sub UserForm_MouseMove(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single) 'boton izquierdo If Button = 1 Then 'posicion relativa del form Me.Left = Me.Left + X Me.Top = Me.Top + Y End If End Sub[/CODE] Para que funcione lo que tienes que hacer es dar click izquierdo del raton (dejas oprimido el boton) y mueves el raton, el comportamiento seria muy similar a como cuando arrastras una imagen dentro de excel o word, bueno se asemeja pero no es exacto ya que no quice meter funciones api ya que con algo sencillo como esto se logra el cometido. prueba y nos comentas como te fue, dejo el adjunto de ejemplo Aprovecho para saludar al master [color=blue]gerson[/color] saludos Boton-Flotante-nvr2.zip
  5. hola jermmy intenta asi Sub reestablece() Application.CommandBars("Worksheet Menu Bar").Reset End Sub saludos
  6. Hola juaco77 Puedes leer por aca quizas te sirva http://support.microsoft.com/kb/940167 En tanto a mi entender tienes dos opciones, desde la pestaña de datos hay una alternativa en el grupo obtener datos externos, boton de otras fuentes ahi puede elegir -Desde Analisis Services -Desde Microsft Query (eliges luego la pestaña cubos olap) Entonces lo que puedes hacer es prender la grabadora de macros y usar los asistentes, y luego tambien modificar los parametros en la misma tabla dinamica ya generada (selecionando de forma manual) de tal forma que puedas ver el código que se genero y analizarlo y si puedes postearlo a efecto de que veamos el proceso. saludos saludos cordiales
  7. Hola Primero que todo felicitar al master pegones por su aporte, y al mismo tiempo saludar al master gerson. Por otra parte cuando lei. Me causo risa por la ironia de la vida, a decir de microsoft: FuenteY entonces me pregunto si añade mejor descripción MED que EXTRAE, en verdad que excel me gusta mucho, pero hay cambios que hicieron que no me parecen lógicos (obvio la lógica de ellos 'almenos la que emplearon' no es la del usuario), por ejemplificar si como usuario novato introduciendome en excel leo que hay una función que se llama EXTRAE a mi mente viene casi de inmediato que me puede servir para extraer datos de una cadena, texto, numero, etc, es decir por si sola se explica la función, pero si leo MED me puedo imaginar todo menos que funciona como extraer, es mas hasta suena como una funcion matemática o financiera jejejejeje. Bueno solo pasaba por aqui para comentar un poco mi impresión. saludos cordiales
  8. Re: celdas flotantes Hola Aqui tienes un ejemplo usando un userform flotante, modificado con funciones api, el ejemplo es muy simple solo es una idea mas saludos Boton-Flotante-nvr1.zip
  9. Re: Protección máxima a una Macro Hola Se me ocurren dos alternativas. 1.- Implica usar Visual_Studio_Tools_for_Office de esta forma el libro queda vinculado a un dll como complemento COM en vba no habra nada, solo que tal herramienta no es gratis hay que adquirir una versión de visual studio que la abarque (profesional, enterprise, ultimate). 2.- Receta casera, aqui la imaginacion es el limite, sin bien no tienes una seguridad al 100% por lo menos va tocar que le dediquen sus horas a buscar que sucede, para lograr lo que dices se tiene que hacer de forma literal 'que el archivo no tenga macro asociada', en el foro hace tiempo coloque un aporte de como vigilar una instacia de excel desde otra oculta, imaginate si lo hacemos desde word, o access (desde un mde) y asi podemos ir complicando el asunto. saludos cordiales
  10. Re: Web Service en excel Hola Me da mucho gusto saludar por aca al maste gerson y pegones Master pegones muy bueno tu aporte, ya lo conocia, pero te comento que a mi me sucede que unos parrafos me aparecen en español y otros en ingles (me imagino que se debe a una traducción automatica) por eso siempre le tengo mayor confianza a la versión en ingles, que si bien es un idioma que no domino, casi siempre es muy digerible la forma en la cual estan escritos y con ayuda del traductor incluido en IE 8 se me facilita el trabajo. No se si sea el caso de que solo aca en México aparezcan parrafos combinados en español e ingles. saludos
  11. Re: Web Service en excel Hola rvillegas No tengo forma de hacer pruebas, pero verifica la documentación http://msdn.microsoft.com/en-us/library/ms517343.aspx Nevega por los vínculos tienen bastante información. saludos cordiales
  12. Hola jejejejeje, ahora si me hice reir yo mismo, se nota que ya tengo hambre que hasta las letras me como. Bueno creo que hasta te rebautice antionio, quice decir antonio jejejejejeje, ofrezco mis disculpas cosas del hambruna que tengo saludos master
  13. Hola Solo para tener pretexto para saludarlos, en especial al master y moderador Macro antonio. Range("C5").ClearContents Range("C8:H8").ClearContents Range("C9:D16").ClearContents Range("C20:E22").ClearContents Range("B28:H30").ClearContents[/CODE] podria ser también: [CODE]Range("C5,C8:H8,C9:D16,C20:E22,B28:H30").ClearContents[/CODE] Saludos cordiales
  14. Hola Revisa este post https://www.ayudaexcel.com/foro/f10/%5Bcerrado%5D-%BFes-posible-que-la-password-general-de-un-proyecto-vba-apunte-una-celda-13868/ saludos
  15. Re: trabajar simultaneamente en un excel Hola Yu-K Existen diversas formas de compartir un libro, para que te des una idea lee por aca Por lo que leo la opción que te conviene es las de permitir que varios usuarios modifiquen un libro a la vez, en este caso hay varias limitaciones a saber las cuales copio del vínculo para que se queden en el foro Utilice la característica Compartir libro cuando: Desee que varios usuarios puedan modificar los datos de un libro al mismo tiempo y convenga en que los datos originales del libro se alteren, ya sea modificándolos, eliminándolos o incorporando nuevos datos. Tenga un recurso de red disponible en el que almacenar el libro y al que los usuarios tienen acceso. Nota Varios usuarios no pueden realizar cambios simultáneamente en un libro compartido que esté almacenado en un sitio de Windows SharePoint Services 3.0. Si desea almacenar el libro en un sitio de Windows SharePoint Services 3.0, sólo debe hacerlo una vez finalizadas las tareas de colaboración en el libro compartido. Desee conservar un registro de los cambios efectuados en el libro. No prevea que se vayan a modificar las siguientes características, que no se pueden cambiar después de compartir el libro: celdas combinadas, formatos condicionales, validación de datos, gráficos, imágenes, objetos (incluidos los de dibujo), hipervínculos, escenarios, esquemas, subtotales, tablas de datos, informes de tabla dinámica, protección de libros y de hojas de cálculo, y macros. Importante Al guardar un libro compartido de Office Excel 2007 en un formato de archivo de una versión anterior, se desactiva el uso compartido del libro y se pierde el historial de revisiones que describe los conflictos y las soluciones. Si necesita guardar el libro en un formato de una versión anterior, tal vez sea conveniente guardar primero una copia del historial de revisiones. Como autor original del libro, puede prepararlo para compartirlo escribiendo los datos que deben estar presentes y aplicándoles formato. Cuando termine, haga clic en Compartir libro en el grupo Cambios de la ficha Revisar, seleccione las opciones que desee y, a continuación, guarde el libro en un recurso compartido de red (no en un servidor Web) que esté disponible para los usuarios a quienes va dirigido. También puede hacer clic en Proteger y compartir libro en el grupo Cambios de la ficha Revisar para impedir que otros usuarios desactiven el seguimiento de cambios en el libro. Cada vez que guarde el libro compartido, se le avisará de los cambios realizados por los demás usuarios desde la última vez que lo guardó. Si desea dejar abierto el libro compartido para realizar un seguimiento de los progresos, puede hacer que Excel actualice los cambios automáticamente, a intervalos de tiempo determinados, tanto si guarda el libro personalmente como si no. Al guardar cambios en un libro compartido, puede que otra persona que esté modificando el libro haya guardado cambios que afecten a las mismas celdas. Si es el caso, los cambios entrarán en conflicto y aparecerá el cuadro de diálogo de resolución de conflictos, en el que podrá elegir qué cambios desea conservar. Para obtener más información sobre cómo configurar y utilizar libros compartidos, vea Utilizar un libro compartido para trabajar en colaboración. Saludos Fuentes Descripción general: compartir datos de Excel y trabajar en colaboración - Excel - Microsoft Office Utilizar un libro compartido para trabajar en colaboración - Excel - Microsoft Office
  16. Hola master pegones En excel 2010 funciona bien, hasta que comienza uno a dar clics sobre el mapa y se produce el evento mouse move, que es cuando se produce el error. Y las manecillas no se aprecian tampoco en excel 2010 Creo que me tendre que conformar en esperar si alguien da con el truco para que salga la estrella, ojala que aparezca un rey mago saludos cordiales
  17. Hola master pegones En mi caso se activa solito, lo cual resulta obvio puesto que esta asociado al evento activate del libro el cual se produce una vez abierto y cargado. Creo que me voy a tener que conformar con la respuesta medio contestada :-( lo que pasa que intente dando clics con el boton derecho y mas experimentos pero me sale el error de que la expresion es demasiada compleja y de ahi ya no puedo hacer nada. saludos cordiales
  18. Hola Master pegones Acabo de decubrir algo jejejejeje, recuedas que te consulte sobre el comportamiento que me sucedia en la macro? en el que al momento de abrir el libro se movian en el norte los botones de opcion, entrando y saliendo, bueno pues ya le vi la forma y es la estrella de la que hablas, jejejejejeje, tiene asociado un sub, en mi caso no tengo que hacer nada porque desde la apertura con el evento se desencadena. Sub ArrancaEstrella()... Saludos cordiales
  19. Hola Como bien lo comenta el master ioyama a quien aprovecho para saludarlo, la precisión de excel esta limitada a 15 digitos Sin embargo desde VBA podemos usar el tipo de dato decimal, que transcribo de la misma ayuda de vba excel Entonces podemos crear una UDF y dale salida string (texto) a efecto de visualizar, aqui el problema es que en excel ya sera un texto y no un dato numerico si deseas realizar más operaciones entonces tendrás que tratar todos los datos desde vba y devolverlos a excelEn un módulo estandar pega este código Public Function Dividir2(Dividendo, Divisor) As String ''le damos salida de texto Dividir2 = CDec(CDec(Dividendo) / CDec(Divisor)) End Function[/PHP] La funcion se llamda Dividir2 tiene dos argumentos, el dividendo y el divisor segun tu ejemplo la deberias llamar asi =Dividir2(1234;2,345678) el resultado que me da a mi es 526,07391125295117232629542503 Otras alternativas -Usar funciones api para manipular la calculadora de excel y traer el resultado -Reiventar la rueda, tomando como base lo que hay, y crear una rueda mas grande, es decir tratar como string todos los números y simular una división semimanual a efecto de obtener hasta los digitos deseados saludos cordiales
  20. Hola Bertodmula En VBA existen dos formas de crear referencias, que son conocidas en inglés como referencia temprana y refrencia tardia La referencia temprana se crea en modo diseño, es decir entras en el editor de visual basic luego en menu Herramientes y luego Referencias y ahi marcas en el listbox la referencia al objeto que deseas (en este caso MS word), la principal ventaja de este método a decir del propio microsoft es que se ejecuta mas rápido el código y además dispones del intellisence en el editor de VBA (el autocompletado) asi como el poder usar las constantes por nombre definidas para tal objeto, dicha referencia se queda guardada en el proyecto al guardarlo. Igual puedes crear la referencia mediante programacion manipulando los objetos del VBA pero en este caso debes tener habilitado el acceso de confianza mediante programación (en este caso estamos hablando igual de un tipo de referencia temprana). La referencia tardia se crea mediante las funciones GetObject y CreateObject, tal como la estas utilizando, la ventaja de este método es que la referencia se crea en tiempo de ejecución con base al registro de windows y por tanto cuando se crea la referencia (se enlaza, vincula) con el Objeto(en este caso programa) predeterminado (imaignate si en una pc tienen word 2000, 2003, 2007..etc) en este caso usa la predeterminada pero también puedes especificar la versión que deseas usar por ejemplo Set aObExcel = CreateObject("Excel.application.14") crea un objeto de excel 2010 (claro para ello es necesario tenerlo instaldado, sino se produce un error en tiempo de ejecución) y por compatibilidad usa mejor Set aObExcel = CreateObject("Excel.application") o word para tu caso concreto, con ello se enlaza con la versión que tenga instalada el usuario como predeterminada; si usas este método es recomendable usar las constantes númericas directamente, al pasarle los parametros a los métodos y propiedades tal como lo hice arriba wDOC.SaveAs2 GuardarComo, , si notas use el 0 en lugar de la constante predefina de wdFormatDocument de MS Word. Si usas este método la mejor forma de abstraer (comprender) la variable aObExcel es que es equivalente a Application, es decir ObExcel represente la aplicacion que creaste y de ahi en forma jerarquica accedes a los objetos, propiedades y metodos, por ejemplo para acceder a un rango seria ObExcel.workbooks(1).Sheets(1).Range("A1") Cuando creas una referencia temprana, vba reconoce los metodos, funciones, constantes, etc que tal objeto expone desde el modo diseño y por lógica internamente debe tener declarado algo como Const wdFormatDocument=0 (bueno que muy seguramente es en lenguaje C o C++ pero bueno sólo es de alguna forma ejemplificar y abstraer la lógica que se usa). Si no creamos la referencia temprana Vba cosiderara que wdFormatDocument es una variable y por tanto provocara error, es por ello mejor pasale el valor númerico equivalente de la constante al parametro directamente, o en su defecto tu mismo declara la constante por ejemplo const wdFormatDocument=0 If GuardarComo<>False then 'Si presiono aceptar wDOC.SaveAs2 GuardarComo,wdFormatDocument end if En este caso a pesar de que usamos la referencia tardia, nosotros mismos asignamos el valor a la constante y por tanto vba pasa como parametro el esperado por dicho método, en la misma ayuda de MS word puedes econtrar las equivalencias de las constantes. En conclusion con ambos métodos puedes usar/modificar los métodos y propiedades que exhibe el objeto, solo que en caso de la referencia tardia ten cuidado con el uso de las constantes. Mi recomendación personal es usar la referencia tardia, ya que en la páctica el retraso ni se nota el retraso y lo que si ganamos es compatibilidad. Saludos cordiales
  21. Hola Bertoldmula Lo que te recomiendo es que primero guardes en una variable el nombre de como deseas se guarde el archivo y luego le pasas la variable al metodo de word que guarda el documento seria algo mas o menos asi. Declaras la variable tipo variant Dim GuardarComo GuardarComo=Application.GetSaveAsFilename("") If GuardarComo<>False then 'Si presiono aceptar wDOC.SaveAs2 GuardarComo,0 end if Solo faltaria que antes de guardar validaras que se trata de una cadena que no incluye caracteres no validos y que no estuviese vacia saludos
  22. Hola He seguido haciendo pruebas y basto con parar el timer y volverlo a iniciar en cuanto abre el libro es decir paro el timer cuando se termina de cagar el libro y lo reinicio y listo ya no me dio ningun problema, lo deje trabajando mas de dos horas y todo bien, en cuanto al consumo de memoria lo más que me alcanzo a consumir fueron 36 000 KB y de ahi bajaba por ejemplo hasta el rango de 29 000 kB volvia a subir pero nuevamente no rebasaba los 36 000 KB, por mi parte me parece que el timer es el que le esta pesando a excel, ya que por experiencia en versiones anteriores cuando se usa muy recursivamente tal método Excel se torna muy inestable, quizás si usamos el timer de las funciones api podremos evitar los colapsos, voy a intentar con ese cambio y posteriormente comento. Aprovecho para saludar a mi buen amigo verzulsan. saludos cordiales
  23. Re: Calendario para dos userform Hola wespina Cito fuente Es decir el control mscal.ocx es un control que era nativo de Microsoft access (y el cual podiamos usar en excel), derivado de que fue retirado de Access 2010 ya no lo tenemos disponible tampoco en Excel 2010, lo puedes buscar y descargar en la web (me parece que microsoft lo permite siempre que sea desde sus servidores) el problema es que si quieres correr la macro en otra pc que tenga excel 2010 no tendra dicho control y te provocara el mismo error, lo que podemos usar es el Date Picker como nos lo recomienda el mismo microsoft, para ello es recomendable que subas un archivo para trabajar directamente ahi. También date una vuelta por el aporte del master y moderador Macro antonio https://www.ayudaexcel.com/foro/f64/calendario-con-selecci%F3n-multiple-13161/ saludos
  24. Hola master Pegones Primero que todo felicitarte doblemente, una felicitacion es por el magnifico trabajo que haz hecho y la otra pues una cordial felicitación de año nuevo. Como casi no habia entrado al foro por eso apenas he podido postear mi test. Lo he probado en excel 2010 y funciona correctamente por un rato, después de unos 10 min. a veces + a veces -, aparece un error que dice expresión demasiado compleja, error 16 en tiempo de ejecución. Application.ScreenUpdating = False With RelojDigital .Top = Y + Mapa.Top voy al depurador oprimo F8 y eureka avanza a la siguente linea, quizás se debe efectivamente a los procesos que tiene y que se le hace un poco 'pesado a excel' si bien desde vba poco o nada podemos hacer de forma nativa, quizás haciendo uso de funciones api podemos implementar lo que comenta nuestro amigo verzulsan a quien aprovecho para saludar. Otra cosa que ocurre es que los botones de opción, entran y salen del mapa todos en la parte norte, no se si sea el comportamieno predefinido, recuerdo que la primera vez que abri el archivo no ocurria eso,pero ahora me he topado con ello. Me voy a meter en detalle al código y ya te expondre si hay algo en lo que te pueda aportar. saludos, un abrazo de año nuevo
  25. Hola En teoria al estar indicando el parametro BackgroundQuery:=False el control se devuelve hasta que se termina de actualizar la consulta. intenta quitando dicho parametro para que solo quede asi .Refresh saludos
×
×
  • Create New...

Important Information

Privacy Policy