Saltar al contenido

pedrosilv

Miembros
  • Contador de contenido

    212
  • Unido

  • Última visita

  1. Muchas gracias Haplox, tu aporte era lo que necesitaba. Seguramente en el proceso de copiado, perdí parte de la macro, pero con tu sugerencia se solucionó mi inconveniente. Muchas gracias por tu aporte Antoni, sin embargo, con el código que genera la grabadora de macros, la macro funcionaria sólo para el Escritorio de la persona que realice la macro, y en mi caso, lo que deseo es que la macro guarde el archivo en cualquier Escritorio de mis compañeros de trabajo. Un fuerte abrazo y feliz fin de semana
  2. Es un gusto saludarle a los foristas. Acudo a ustedes para solicitar su apoyo en encontrar un error en una macro. Lo que deseo es guardar un rango de información en el "Escritorio" de cualquier computadora, debido a que lo compartiré con varios compañero de trabajo. El archivo debe guardarse en formato de Texto delimitado por tabulaciones. Para ello, copio la información a un nuevo archivo y luego lo intento guardar en el Escritorio con un nombre predefinido. Encontré algunas macros que me indicaban cómo poder realizarlo, pero al ejecutar la macro, solo logro que copie el rango deseado al nuevo archivo, pero de allí surge un error. El código de la macro es la siguiente: Sub Macro1() Application.ScreenUpdating = False Dim PI As Long ' Declara las variables de tipo Long Nombre = "Plantacion Industrial menor a 15 ha" PI = Hoja1.Range("B" & Rows.Count).End(xlUp).Row ' Última fila con datos de la columna "B" Application.DisplayAlerts = False Hoja1.Range("A1:L" & PI).Copy ' Selecciona desde "B4" hasta la última con datos de la columna "FU" Workbooks.Add Range("A1").Select Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ :=False, Transpose:=False Application.CutCopyMode = False ActiveWorkbook.SaveAs Filename:=CreateObject("wscript.Shell").spe & Nombre, FileFormat:= _ xlText, CreateBackup:=False ActiveWorkbook.Save ActiveWindow.Close MsgBox "Se ha guardado el archivo en el Escritorio con el nombre de " & Nombre, _ vbOKOnly, "Información" Application.DisplayAlerts = False Application.ScreenUpdating = True End Sub Y el error me aparece en las siguientes líneas. ActiveWorkbook.SaveAs Filename:=CreateObject("wscript.Shell").spe & Nombre, FileFormat:= _ xlText, CreateBackup:=False Adjunto el archivo Ejemplo, por si alguno pudiera ayudarme, se lo agradecería. Saludos Ejemplo.xls
  3. Buen día foristas: Es un gusto saludarles por este medio. El motivo de la presente es para manifestarles un problema que tengo en el intercambio de correspondencia entre Word y Excel, y quiero solicitar su ayuda para ver si me pueden apoyar. Normalmente en el intercambio de correspondencia, he utilizado una sola fila en Excel para extraer la información de los campos, y pegarlos en word. Es decir que si hay 15 filas en la Base de Excel, tendré 15 documentos diferentes en Word. El problema que tengo, es que hay una Base de Excel con dos columnas llamadas "AÑO" y "CANTIDAD" que pueden tener varias filas de información, pero que su información debería ser pegada en un mismo documento en Word. El problema es que no se cómo hacer para que al momento de efectuar el intercambio de correspondencia en Word, permita hacer esta lectura adecuada y dar los resultados que necesito. Como me es difícil expresar lo que necesito, adjunto la forma de cómo está estructurado el archivo de Excel, y cómo está estructurado el formato de Word, así como los resultados que esperaría obtener con el intercambio de correspondencia. Desde ya, quedo muy agradecido con la ayuda que puedan brindarme. Saludos Libro1.xlsx INTERCAMBIO.docx
  4. Copiar valores y el formato de orígen

    Gracias por la información Dr Hyde. Funciona muy bien lo que me indicas. Al adaptarlo a mi proyecto, me doy cuenta que no me copia los formatos. Estaré buscando qué estoy haciendo mal. Además, me doy cuenta que el formato se pierde al copiar celdas combinadas, y tampoco me ajusta texto. De nuevo, muchas gracias por la información y el tiempo brindado Saludos
  5. Buena tarde a todos los usuarios del foro. Tengo inconveniente con algunas macros que me copian y pegan datos utilizando el formato de origen, lo que provoca lentitud en el proceso. Buscando en la web, encontré una macro que acelera el proceso, evitando el "parpadeo" en la pantalla a pesar de utilizar el comando "Application.ScreenUpdating = False". La macro es la siguiente: Sub CopyValues(rngSource As Range, rngTarget As Range) rngTarget.Resize(rngSource.Rows.Count, rngSource.Columns.Count).Value = rngSource.Value End Sub Lo que debo realizar es copiar el rango B4:B11 de la HOJA1 y pegarlo a partir de la celda A3 de la HOJA2 Luego realizo el llamado con lo siguiente: Sub Copiar() Call CopyValues(Hoja1.Range("B4:B11"), Hoja2.Range("A3")) End Sub Esto me permite un ahorro de tiempo y uso de la memoria. El inconveniente es que solo copia y pega como valores, y necesito que me copie no solo el valor, sino también el formato de origen. Adjunto un archivo ejemplo, sobre cómo debería funcionar la macro. Si alguien pudiera apoyarme a modificar la macro, desde ya, muy agradecido. Att. Pedro Prueba de ejemplo.xls
  6. Hola @[uSER=136970]Armando Montes[/uSER] . Lamentablemente no agregué una segunda consulta en la pregunta anterior, dicha pregunta era la siguiente: Dado que el número de filas que estará ocupada con información en la columna "A" es variable, hay forma de indicar que Excel utilice el rango "A1:A última fila"? Traté de adaptar con esta sentencia, sin embargo, no me funcionó: Range("E" & Rows.Count).End(xlUp).Row = "=IF(COUNT(SEARCH(""naturales"",A1)),A1,"""")"[/CODE] De nuevo, gracias por su atención.
  7. Buena tarde Armando Montes: Muchísimas gracias por el apoyo brindado, me ha servido un montón y esto será base para adaptarlo a mis necesidades. De acuerdo a lo que anotas, utilizas la función Si, Contar y Buscar. Dichas funciones las he utilizado alguna vez en excel, sin embargo no entiendo qué función tienen las dobles comillas, por ejemplo acá: IF(COUNT(SEARCH(""naturales"",A1)),A1,"""")[/CODE]. ¿Alguien podría indicarme dicha función? De nuevo, mil gracias por la ayuda. Felíz fin de semana.
  8. Buena tarde a todos los foristas, espero se encuentren bien. El motivo de este tema es el siguiente: En una hoja "BASE" tengo una serie de artículos y sus respectivos párrafos. Lo que deseo es que en la hoja "BUSQUEDA" pueda buscar una palabra o un artículo, de tal forma que me copie en esa hoja todos los resultados que encuentre en la hoja "BASE". Dado que con lo expuesto seguramente no me entenderán, adjunto un ejemplo, de cómo está estructurado el archivo y un ejemplo de los resultados que quisiera alcanzar. Si me pudieran ayudar, se los agradezco desde ya. De nuevo, muchas gracias por la atención y el apoyo brindado siempre. Feliz tarde. Att. Pedro BUSQUEDA.xls
  9. Muchísimas gracias johnmpl Revise el archivo y funciona a la perfección. Trataré de entender a la macro, porqué es genial para lo que necesito. No sabes cuánto me has ayudado con esto. Saludos y buen fin de semana. Eternamente agradecido contigo.
  10. Buena tarde a todos los foristas. Es un gusto saludarles nuevamente, y a la vez, solicitar su apoyo en un problema que no logro resolver. Resulta que tengo tres columnas llamadas "Expediente", "Del" y "Al". En la columna Expediente va el número de una papelería y las columnas "Del" y "Al" van anotadas el número de notas que tienen esos expedientes. Algunos expedientes, solo tienen una nota, un rango de notas o varios rangos de notas. Mi problema radica en que quiero unir en una sola celda la nota o los rangos de notas con que cuenta cada expediente y no sé como hacerlo ya que cada expediente puede tener diferentes rangos de notas. Adjunto un archivo donde indico lo que tengo y el resultado que quisiera tener de acuerdo a la cantidad de rangos de notas que tiene cada expediente para que se den una mejor idea. Desde ya agradezco la ayuda que pudieran brindarme para resolver este problema. Saludos y buen fin de semana. Concatenar.xls
  11. Combinar eventos en Private Sub Worksheet_Change

    Hola Gerson: Gracias por responder. El único inconveniente sucede cuando quiero hacer cambios en A2, allí no me oculta/visualiza columnas. Para las demás celdas de la columna A no tengo ningún problema. A qué podrá deberse? De nuevo, gracias por tu ayuda. Feliz noche Saludos PS: Gerson, ya ví cual era el inconveniente, era solo poner el número 2, en lugar del 3, en esta línea: Private Sub Worksheet_Change(ByVal Target As Range) Application.ScreenUpdating = False With Target If .Column > 83 Or .[COLOR="#FF0000"]Row < 2[/COLOR] Then Exit Sub If .Column = 1 Then[/CODE]
  12. Combinar eventos en Private Sub Worksheet_Change

    Buena noche Gerson: Que gusto encontrarte de nuevo de verdad, ojala todo esté bien por tierras catrachas. Antes de todo, gracias por tomarte el tiempo en responder la pregunta y por estar allí, del otro lado del computador siempre apoyando a los que necesitamos ayuda alguna. Respecto a la macro, me funciona bien en cierta medida. Resulta que las columnas solo se ocultan/visualizan cuando hago algún cambio en la última fila que tenga datos de la columna A. Habrá alguna forma de que se visualicen/oculten columnas cuando haga algún cambio en cualquier celda de la columna A, sin importar si es la última fila con datos, o cualquier otra? Desde ya, eternamente agradecido. Saludos
  13. Buen día a todos: Es un gusto saludarles y a la vez, solicitar su apoyo en lo siguiente: Resulta que quiero combinar dos acciones en Private Sub Worksheet_Change de la hoja BASEDATOS El primero hace que me copie los formatos de una fila a la siguiente fila en el que escribiré, siendo este el siguiente: Private Sub Worksheet_Change(ByVal target As Range) Application.ScreenUpdating = False With target If .Column > 80 Or .Row < 3 Then Exit Sub If .Column = 8 Then Range("A2:ca2").Copy Range(Cells(.Row, "A"), Cells(.Row, "ca")).Resize(2).PasteSpecial Paste:=xlPasteFormats .Offset(1).Select Application.CutCopyMode = False End If Application.ScreenUpdating = True End Sub[/CODE] El segundo hace que se visualicen o se oculten algunas columnas de acuerdo a una selección que se haga en cualquier fila de la columna A, siendo este el siguiente: [CODE]Private Sub Worksheet_Change(ByVal target As Range) If target.Column = 1 Then If Application.CountA(Rows(target.Row)) >= 1 Then Call Modificar(target) End If End If End Sub[/CODE] Sin embargo, no se cómo combinar para que se ejecuten las dos acciones. Alguien de ustedes podría indicarme ayudarme con esto, indicándome cómo podría combinarlos para que sucedan las dos acciones. Adjunto un archivo de ejemplo, para que puedan entenderme. De antemano agradezco desde ya cualquier ayuda que puedan brindarme. Saludos eJEMPLO.zip
  14. Control de saldos

    Mi estimado Gerson: Es un gusto saludarte nuevamente, esperando que te encuentres mucho mejor. Quiero agradecer todo tu tiempo y apoyo brindado en este y otros temas en las que me has apoyado siempre. Vas a disculpar que no habia contestado antes ya que he estado en la montana por estos dias. Revisando el archivo que adjuntas y ya probandolo me doy cuenta que cumple a cabalidad con lo que necesito. Te agrade9o siempre tu disposicion en apoyarme siempre y tu paciencia conmigo. Saludos mi estimado y que estes bien al lado de tu familia
  15. Control de saldos

    Buena tarde Gerson y demás compañeros foristas, es un gusto saludarles nuevamente. Luego de estar un tanto alejado del internet, logré avanzar mucho (puesto que me cuesta entender esto de VBA) y obtener resultados satisfactorios respecto al tema de control de saldos. Adjunto el archivo con la macro que utilizo para solventar este control de saldos, pero necesito saber sus opiniones y recomendaciones para ver cómo lo puedo mejorar. Además, deseo incluir en esta macro dos opciones: a) una opción para ejecutar en caso de que hubiera error (tipo GoTo) y otra opción que me indique que si busco un valor y éste no se encuentre en la hoja SALDOS "Valor no encontrado". Sin embargo estas dos opciones no se cómo incluirlas en dicho macro por lo que desde ya agradezcos sus recomendaciones. Att. Pedro Control de saldos1.zip
×