Jump to content

Pirtrafilla

Members
  • Posts

    406
  • Joined

  • Last visited

  • Days Won

    2

Everything posted by Pirtrafilla

  1. Creo definitivamente que es una tornería. Modifico el .body del mensaje y no es necesario introducción. .body = "A/A: " & Me.ComboBox1.Value & vbNewLine & vbNewLine & "Adjunto se remite recibo de nómina desde PERIODO " & Me.TextInicio & " a PERIODO " & Me.TextFin & vbNewLine & vbNewLine & vbNewLine & vbNewLine & spie Os he hecho perder el tiempo, lo siento.
  2. Me estoy liando @Antoni, .Subject es el asunto no el texto como he dicho y .MailEnvelope es para pegar por ejemplo una hoja de un libro en el cuerpo del correo. Pero yo solo estoy enviando un correo con un texto y quería poner una introducción al principio pero sin pegar nada, y ahí es donde no me aclaro. Lo mismo ni se puede y es una tontería. Saludos.
  3. Hola @Antoni, en el código de arriba ya viene .Subject Eso es el texto del mensaje, pero con .Introduction se pone una pequeña introducción al texto del mensaje. Parece lo mismo pero no lo es. Creo que va ligado a esto, .MailEnvelope pero no acabo de encontrar como hacerlo. Voy a seguir buscando pero si alguien sabe le agradezco. Gracias @Antoni
  4. Buenas. Tengo un programa para enviar nóminas automatizadas desde el Excel, pero se me ha ocurrido que antes de poner el texto del cuerpo del correo podría añadir una introducción, por ejemplo pondría A/A: JOSE LOPEZ GARCIA. Para enviar el correo tengo este código en un bucle y funciona perfectamente, solo que no me añade la introducción. Pongo solo esta parte del código donde envío correos por si podríais decirme si he de añadir algo más para que el código funcione. 'Enviamos por mail Set OutMail = OutApp.CreateItem(0) On Error Resume Next spie = "Gracias." With OutMail .To = destino .CC = copia .BCC = "" .Introduction = "A/A: " & Me.ComboBox1.Value .Subject = Me.ComboBox1.Value & " - Nóminas PERIODO " & Me.TextInicio & " a PERIODO " & Me.TextFin .body = "Adjunto se remite recibo de nómina desde PERIODO " & Me.TextInicio & " a PERIODO " & Me.TextFin & vbNewLine & vbNewLine & vbNewLine & vbNewLine & spie .Attachments.Add Ruta3 .send End With ' Set OutMail = Nothing: Set OutApp = Nothing No añado ningún archivo porque solo necesito saber si la línea (.Introduction = "A/A: " & Me.ComboBox1.Value) funcionaría de alguna manera o es que esta instrucción no procede con OutMail O si me decís como puedo averiguarlo os lo agradezco. Gracias. Moisés.
  5. He probado esta fórmula pero tampoco me funciona: =SUMAR.SI($F$2:$F$8;A2&"*";$G$2:$G$8)
  6. Hola, buenas tardes. Os pido ayuda para este problema. Quiero hacer sin necesidad de macros, si es posible y no veo como hacerlo. Se trata de sumar los importes de un rango teniendo en cuenta que el valor que se busca de la celda es las 4 cifras de la izquierda. Envío un ejemplo con el resultado en amarillo. Por ejemplo todas las obras que empiecen por 1100 se refieren a la delegación 1100. La obra sería 11000001, 11000002 por ejemplo. Como digo es un ejemplo, no tiene nada que ver con el fichero original que tiene muchas otras celdas y obras. pero siempre coincide los primeros 4 dígitos de la obra con el numero de delegación. Gracias de antemano. CuotaDelegación.xlsx
  7. Gracias @Antoni. Mucho más corto y lógico.
  8. Hola de nuevo, ya lo solucioné. Dejo el código y si alguien sabe mejorarlo será un gusto aprender. Sub Convertir_Cells_en_Range() ' Dim rng1$, rng2$, rng3$, wdatos As Worksheet Set wdatos = ThisWorkbook.Sheets("Hoja1") uCol = Range("B2").End(xlToLeft).Offset(0, 1).Column + 1 For col = 2 To uCol rng1 = wdatos.Cells(3, col).Address(RowAbsolute:=False, ColumnAbsolute:=False) rng2 = wdatos.Cells(12, col).Address(RowAbsolute:=False, ColumnAbsolute:=False) rng3 = wdatos.Cells(22, col).Address(RowAbsolute:=False, ColumnAbsolute:=False) wdatos.Cells(13, col) = "=" & rng2 & "/" & rng1 wdatos.Cells(24, col) = "=" & rng3 & "/" & rng1 Next ' End Sub Cell to Range.xlsm
  9. Creo que ya lo tengo...... A ver si ceno y luego pruebo, y si lo consigo subo el código.
  10. Hola de nuevo. Envío un ejemplo de lo que necesito, no se si esto es posible. Tengo unos datos en una hoja y en una celda calculo el % entre dos celdas. Hasta ahí es sencillo, pero lo que necesito es que en la celda donde se hace el calculo aparezca la fórmula como si no estuviera hecho con VBA. Por ejemplo, Sub ejemplo() lColumn = Hoja1.Cells(13, Columns.Count).End(xlToLeft).Column For x = 2 To x Hoja1.Cells(13, x) = Hoja1.Cells(12, x) / Hoja1.Cells(3, x) Next End Sub Sub ejemplo() lColumn = Hoja1.Cells(13, Columns.Count).End(xlToLeft).Column For x = 2 To x Hoja1.Cells(13, x) = Hoja1.Cells(12, x) / Hoja1.Cells(3, x) Next End Sub Es un ejemplo sencillo. lo que quisiera es que en la celda "B13" pusiera la fórmula "=B12/B3" Tengo una hoja Excel que trae muchísimos datos de otras hojas, incluidos los % y necesito que aparezca la fórmula para poder "tocar" algunos datos y ver cual sería el resultado. Si es posible y me podéis ayudar lo agradezco, subo un archivo que no tiene nada que ver pero es un ejemplo. Gracias. Cell to Range.xlsm
  11. @AntoniGracias, ahora sí que sale. Un abrazo.
  12. Ahora he probado a ver si el error viene por aquí: nMes = Val(mMes) + 2 Y ahora solo uso nMes cuyo valor si me pongo encima del código cuando salta el error pone "7" Y cambio el código de antes. .Sheets("RES_Origen").Range(Cells(61, nMes), Cells(84, nMes)).Copy Pero me salta el mismo error. Como ves aquí el valor es 7. Pero da error.
  13. Antoni, no he subido el archivo porque lo que pongo es que no se si he escrito bien el código. Es una combinación de Range y Cells. No se si me he dejado algo por poner, porque si evito poner Cells y hago referencia a la celda con Range... Range("G61:G84") me funciona bien, pero si combino Range con Cells me da error. Range(Cells(61, Val(mMes) + 2), Cells(84, Val(mMes) + 2)) Es lo mismo que poner Range(Cells(61, 7), Cells(84, 7)). La columna "G" es la columna número 7. Pregunto si el código lo he escrito bien o el error viene provocado por otra cosa que debería buscar. No se mi he explicado bien.
  14. Hola de nuevo. Hace tiempo que no molestaba pero he retomado algun proyecto que tenía aparcado y ya tengo problemas. Creo que es fácil, pero no logro salvar el error. Es con la combinación de Range y Cells. .Sheets("RES_Origen").Range(Cells(61, Val(mMes) + 2), Cells(84, Val(mMes) + 2)).Copy wdatos.Cells(5, col + 2).PasteSpecial xlPasteValues Con este código me salta un error. Sin embargo si lo hiciera con Range no da error. .Sheets("RES_Origen").Range("G61:G84").Copy wdatos.Cells(5, col + 2).PasteSpecial xlPasteValues He de usar la combinación con Cells porque está dentro de un bucle que va copiando diversas coumnas y no puedo fijar el Range. Agradezco me ayudéis a ver donde estoy cometiendo el error. Gracias de antemano. Moisés.
  15. Hola @A.Maurizio. Prueba y si no lo consigues no dudes en preguntar, por aquí hay muchos maestros que nos ayudan mucho. Si está en mi mano hacerlo también, aunque yo soy mas novato. También en internet hay bastante información sobre añadir archivos o similar, por Outlook, Hotmail, Gmail... Moisés.
  16. @A.Maurizio, perdona no sepa ayudarte más. Me gustaría pero no se. Mira este link, a ver si te es de ayuda. https://www.lawebdelprogramador.com/foros/Excel/1696160-Adicion-de-archivo-a-una-macro-utilizando-thunderbird.html Saludos.
  17. @A.Maurizio, para enviar por Outlook yo uso esta macro adaptada a mi necesidad. Espero te sea de ayuda. Sub EnviarPDF() ' Dim OutApp As Object Dim OutMail As Object Set OutApp = CreateObject("Outlook.Application") OutApp.session.logon Set OutMail = OutApp.CreateItem(0) On Error Resume Next With OutMail .To = "destinatario@hotmail.com" 'añadimos el destinatario .CC = "destinatario@hotmail.com" 'añadimos el correo de copia .BCC = "" .Subject = "Asunto" 'añadimos el asunto del correo .body = "Cuerpo del correo" 'añadimos el cuerpo y el pié. .Attachments.Add "C:\Users\xxxxxx\xxxxxx\archivo.pdf" 'añadimos la dirección del archivo PDF .send End With Set OutMail = Nothing: Set OutApp = Nothing MsgBox "PROCESO FINALIZADO", vbInformation ' End Sub Te dejo un archivo de ejemplo. Saludos. Moisés. Enviar PDF por Outlook.xlsm
  18. Hola a todos, no me ha podido ayudar nadie de momento. Entiendo que el Office 365 es un poco reciente y no hay tanta información. De todos modos he conseguido que la empresa me ponga el Outlook en escritorio y me vuelve a funcionar con los códigos que ya tenía, pero si a alguien se le ocurre como hacer lo que solicito ayuda os lo agradezco, seguro que será útil. Gracias de todos modos, un abrazo. Moisés.
  19. Hola a todos. Envío un fichero de muestra, a ver si podéis ayudarme. Con O365 no encuentro la misma información que las versiones convencionales. Tengo O365 con aplicaciones en escritorio. Gracias. Moisés. EnviarCorreoRangoCeldas.xlsm
  20. Hola a todos. De nuevo por aquí pidiendo ayuda. Nos han cambiado las licencias de Office a Office 365. He revisado las macros y las que me fallan tienen que ver con las que envío correos automatizados. He podido arreglar todas, cambiando el código porque de Office 2013 a Office 365 cambia el código, se usa el objeto CDO.Message. Pero se me resiste esta macro, que envía un correo e incluye como parte del cuerpo del correo un rango de celdas donde hay un gráfico. Os pego el código para ver si me podéis ayudar. Después de la instrucción "ActiveWorkbook.EnvelopeVisible = True" el programa ya no ejecuta nada más. He probado con F8 paso a paso y ahí se detiene. Necesito que el cuerpo del correo inserte las celdas A2:T49 de la hoja "Tablero". Si veis que así no se me entiende puedo crear un archivo y pegar la macro, pero como el código no es muy largo lo he puesto así. Sub EnviarTableroInsertado() ApplicationOff 'variables Dim iMsg As Object, iConf As Object Dim cuerpo As String, schema As String, spie As String, mail As String Dim Flds As Variant Set iMsg = CreateObject("CDO.Message"): Set iConf = CreateObject("CDO.Configuration") iConf.Load -1 Set Flds = iConf.Fields schema = "http://schemas.microsoft.com/cdo/configuration/" With Flds Flds.Item(schema & "sendusing") = 2 Flds.Item(schema & "smtpserver") = "smtp.office365.com" Flds.Item(schema & "smtpserverport") = 25 Flds.Item(schema & "smtpauthenticate") = 1 Flds.Item(schema & "sendusername") = "micorreo" Flds.Item(schema & "sendpassword") = "micontraseña" Flds.Item(schema & "smtpusessl") = True Flds.Update End With Set tb = Sheets("Tablero") tb.Select mail = tb.Range("Y2") tb.Range("A2:T49").Select ' ActiveWorkbook.EnvelopeVisible = True ' With iMsg Set .Configuration = iConf .From = "micorreo" With ActiveSheet.MailEnvelope .Item.Subject = "Produccion Tablero - Personal Propio I+M - " & tb.Range("M2") .Item.To = mail '.Item.CC = "" '.Item.Introduction = "Adjuntamos Produccion Tablero - Personal Propio I+M -" & tb.Range("M2") .Item.Send End With End With Sheets("TOTAL").Select Set iMsg = Nothing: Set iConf = Nothing: Set Flds = Nothing Set tb = Nothing ' ApplicationOn End Sub Gracias. Moisés.
  21. De nada, no se merecen. Solamente he comentado la solución de @torquemada, la ayuda te la ha dado él. Un abrazo.
  22. Revisa bien como lo tienes, porque a mi me sale bien la fórmula de @torquemada. Seguramente sea una tontería, un error al transcribir, el formato de la celda... ERROR FORMULA DIVISON %.xlsx
×
×
  • Create New...

Important Information

Privacy Policy