[RESUELTO] convertir macro de excel a libre office

Desarrollo de Macros y programación en UNO, usar las API, llamar programas externos...

[RESUELTO] convertir macro de excel a libre office

Notapor senda678 » Lun Jul 27, 2020 1:49 pm

Hola buenas tardes, lo primero de todo MIL GRACIAS ya solo por leerme.
En el trabajo teníamos excel y ahora nos estan cambiando a libreoffice, y necesitaria ayuda para poder hacer que esa macro funcione en libreoffice.
No tengo mucha idea de macros, pero según lo que iba leyendo por internet iba probando pero no hay manera.
Estoy un poco desesperado porque esto tengo que ponerlo en marcha a primeros de septiembre y si no lo consigo tendria que mandar todos los dias unos 30 correos de manera individual.
De nuevo muchas gracias.
Espero vuestra respuesta.
Un saludo.

Código: Seleccionar todo   Expandir vistaContraer vista
Sub EnviarEmail()
   ' Declaramos variables
   Dim OutlookApp As Outlook.Application
   Dim MItem As Outlook.MailItem
   Dim cell As Range
   Dim Asunto As String
   Dim Correo As String
   Dim Destinatario As String
   Dim Clave As String
   Dim Msg As String

   Set OutlookApp = New Outlook.Application
   'Recorremos la columna EMAIL
   For Each cell In Range("B11:B40")
      'Asignamos valor a las variables
      Asunto = "Contraseña"
      Destinatario = cell.Offset(0, -1).Value
      Correo = cell.Value
      Clave= Format(cell.Offset(0, 1).Value, "###0")
      Fecha = Format(cell.Offset(0, 2).Value, "dd/mmm/yyyy")
      'Cuerpo del mensaje
      Msg = "Buenos días" & Destinatario & vbNewLine & vbNewLine
      Msg = Msg & "Su nueva contraseña es..... "
      Msg = Msg & Clave & vbNewLine & vbNewLine
      Msg = Msg & "Nota:" & vbNewLine
      Msg = Msg & "Las claves se generan de forma aleatoria."
      Set MItem = OutlookApp.CreateItem(olMailItem)
      With MItem
         .To = Correo
         .Subject = Asunto
         .Body = Msg
         .Send
      End With
   Next
End Sub
Última edición por senda678 el Jue Jul 30, 2020 1:36 pm, editado 2 veces en total
Libreoffice Versi??n: 6.4.4.2 (x64)
windows 10
senda678
 
Mensajes: 4
Registrado: Mié Jul 15, 2020 3:57 pm

Re: convertir macro de excel a libre office

Notapor PepeOooSevilla » Lun Jul 27, 2020 5:02 pm

Hola.
Te damos la bienvenida al Foro y, por favor, no dejes de leer la Guía de supervivencia.
No aseguro que la macro siguiente funcione. No trabajo ni tengo Outlook. Tienes que hacer pruebas y consultar los enlaces que escribo más adelante.

Código: Seleccionar todo   Expandir vistaContraer vista
Option Explicit
' >>>>>> ¡ATENCIÓN! NO HAY CONTROL DE ERRORES <<<<<<<<
Const NUEVA_LINEA As Integer = 13

Sub EnviarCorreoOutlook()
   Dim DocCalc As Object
   Dim HojaActiva As Object
   Dim oOLEService As Object
   Dim oOutlookApp As Object
   Dim oOutlookMail As Object
   Dim Fila As Long
   Dim Asunto As String
   Dim Correo As String
   Dim Destinatario As String
   Dim Clave As String
   Dim Msg As String

   DocCalc = ThisComponent
   HojaActiva = DocCalc.getCurrentController().getActiveSheet()
   oOLEService = createUnoService("com.sun.star.bridge.OleObjectFactory")
   oOutlookApp = oOLEService.createInstance("Outlook.Application")
   'Las FILAS comienzan por 0 (cero)
   For Fila = 10 To 39
      Asunto = "Contraseña"
      With HojaActiva
         Destinatario = .getCellRangeByName("A" & CStr(Fila)).getString()
         Correo = .getCellRangeByName("B" & CStr(Fila)).getString()
         Clave = Format(.getCellRangeByName("C" & CStr(Fila)).getValue(), "###0")
         Fecha = Format(.getCellRangeByName("D" & CStr(Fila)).getValue(), "dd/mmm/yyyy")
      End With
      'Cuerpo del mensaje
      Msg = "Buenos días" & Destinatario & Chr(NUEVA_LINEA)) & Chr(NUEVA_LINEA))
      Msg = Msg & "Su nueva contraseña es..... "
      Msg = Msg & Clave & Chr(NUEVA_LINEA)) & Chr(NUEVA_LINEA))
      Msg = Msg & "Nota:" & Chr(NUEVA_LINEA))
      Msg = Msg & "Las claves se generan de forma aleatoria."
      oOutlookMail = oOutlookApp.CreateItem(0)
      With oOutlookMail
         .To = Correo
         .Subject = Asunto
         .Body = Msg
         'Se puede adjuntar un archivo
         '.Attachments.Add("C:\ARCHIVO_ADJUNTO.TXT")
         'Se envía
         .Send()
      End With
   Next Fila
End Sub

La parte de enviar un correo la he extraído del apartado 5.28. Sending Email del libro de Andrew Pitonyak Useful Macro Information For OpenOffice.org (en formato ODT) y más concretamente de la página 113 Listing 5.78: Send email using Microsoft Outlook.

Para aprender a programar en OpenOffice/LibreOffice tienes que leer y estudiar el libro Aprendiendo OOo Basic de nuestro compañero mauricio. También lo puedes consultar aquí: Guía de introducción al uso de Apache OpenOffice > Temas Avanzados > Macros > StarBasic.

Además en las páginas Manuales de Apache OpenOffice en español: Basic y, Basic OpenOffice: Apache OpenOffice Basic en español de nuestro compañero SLV-es, encontrarás muy buena información.

Y, obviamente, en la página de Andrew Pitonyak.
Saludos cordiales.
LibreOffice 6.4.5. Windows 10. Java 8 rev. 261 (64 bits)
Por favor, utiliza el Foro para tus consultas, no los mensajes privados
Si usas OpenOffice/LibreOffice trabaja y guarda en ODT, ODS, ODP, ... Y haz copias de seguridad.
Avatar de Usuario
PepeOooSevilla
 
Mensajes: 1431
Registrado: Sab Abr 04, 2009 6:10 pm
Ubicación: Sevilla (España)

Re: convertir macro de excel a libre office

Notapor senda678 » Mié Jul 29, 2020 1:16 pm

Muchisimas gracias, no funciona del todo, pero esta muy bien, le doy a dar unas vueltas y a ver si consigo que corra bien.

Un saludo
Libreoffice Versi??n: 6.4.4.2 (x64)
windows 10
senda678
 
Mensajes: 4
Registrado: Mié Jul 15, 2020 3:57 pm

Re: convertir macro de excel a libre office

Notapor PepeOooSevilla » Jue Jul 30, 2020 7:36 am

Hola.
Ahora soy yo quien pide algo.
Por favor, si encuentras la solución publícala en este Foro para que le pueda servir a otras personas en tu misma situación, y después, ¿Cómo marcar como RESUELTO un tema?.
Saludos cordiales.
LibreOffice 6.4.5. Windows 10. Java 8 rev. 261 (64 bits)
Por favor, utiliza el Foro para tus consultas, no los mensajes privados
Si usas OpenOffice/LibreOffice trabaja y guarda en ODT, ODS, ODP, ... Y haz copias de seguridad.
Avatar de Usuario
PepeOooSevilla
 
Mensajes: 1431
Registrado: Sab Abr 04, 2009 6:10 pm
Ubicación: Sevilla (España)

Re: (RESUELTO)convertir macro de excel a libre office

Notapor senda678 » Jue Jul 30, 2020 1:38 pm

Hola al final haciendo mil pruebas he conseguido que funcione pero el código es totalmente distinto.
De todas formas MIl GRACIAS por la ayuda.

Sub CreerMail_SystemShellExecute()
Dim oShell As Object

oShell = createUnoService("com.sun.star.system.SystemShellExecute")

'%0D%0A te permite dar un salto de linea en el cuerpo del mensaje.
oShell.Execute("mailto:xxx@xxxxx.com" & _
"?subject=prueba" & _
"&Body=" & _
"%0D%0A" & Environ("") , "", 0)
End Sub
Libreoffice Versi??n: 6.4.4.2 (x64)
windows 10
senda678
 
Mensajes: 4
Registrado: Mié Jul 15, 2020 3:57 pm


Volver a Macros y API UNO

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 1 invitado