Página 1 de 1
[RESUELTO] convertir macro de excel a libre office
Publicado: Lun Jul 27, 2020 1:49 pm
por senda678
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
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
Re: convertir macro de excel a libre office
Publicado: Lun Jul 27, 2020 5:02 pm
por PepeOooSevilla
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
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.
Re: convertir macro de excel a libre office
Publicado: Mié Jul 29, 2020 1:16 pm
por senda678
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
Re: convertir macro de excel a libre office
Publicado: Jue Jul 30, 2020 7:36 am
por PepeOooSevilla
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.
Re: (RESUELTO)convertir macro de excel a libre office
Publicado: Jue Jul 30, 2020 1:38 pm
por senda678
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.
Código: Seleccionar todo
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
Re: [RESUELTO] convertir macro de excel a libre office
Publicado: Jue Ago 13, 2020 9:49 pm
por DiegoGuio
Buenas tardes,
su apoyo tengo la siguiente macro en Excel y la verdad no se nada de OpenOffice, es posible que alguno me pueda guiar en como migrar el siguiente código, mil gracias.
Código: Seleccionar todo
Sub Iterar()
'
' Valor de Cuota para interes deudor
' Macro1 Macro
' Iteracion
'
ActiveWorkbook.Unprotect "DCGN"
'limite es el saldo de capital de la cuota posterior a la ingresada
Limite = Cells(6, 10).Value
Delta = Cells(10, 5).Value
'1ro
If Limite > 1000000 Then
While Limite > 1000000
Delta = Delta + 10000
Cells(10, 5).Value = Delta
Limite = Cells(6, 10).Value
Wend
ElseIf Limite < -1000000 Then
While Limite < -1000000
Delta = Delta - 10000
Cells(10, 5).Value = Delta
Limite = Cells(6, 10).Value
Wend
Else
Delta = Delta
End If
'2do
If Limite > 10000 Then
While Limite > 1000
Delta = Delta + 100
Cells(10, 5).Value = Delta
Limite = Cells(6, 10).Value
Wend
ElseIf Limite < -10000 Then
While Limite < -1000
Delta = Delta - 100
Cells(10, 5).Value = Delta
Limite = Cells(6, 10).Value
Wend
Else
Delta = Delta
End If
'3ro
If Limite > 1000 Then
While Limite > 1000
Delta = Delta + 1
Cells(10, 5).Value = Delta
Limite = Cells(6, 10).Value
Wend
ElseIf Limite < -1000 Then
While Limite < -1000
Delta = Delta - 1
Cells(10, 5).Value = Delta
Limite = Cells(6, 10).Value
Wend
Else
Delta = Delta
End If
Cells(10, 5).Value = Delta
MsgBox ("Simulación Terminada - Calculo del valor de la cuota")
ActiveWorkbook.Protect "DCGN"
'
End Sub
Re: [RESUELTO] convertir macro de excel a libre office
Publicado: Vie Ago 14, 2020 7:24 am
por PepeOooSevilla
Hola.
Te damos la bienvenida al Foro y, por favor, no dejes de leer la
Guía de supervivencia.
Las macros no son fáciles pero si te interesa la programación para OpenOffice/LibreOffice lee los párrafos citados en una respuesta anterior.
...Para aprender a programar en OpenOffice/LibreOffice...
Este es el código para LibreOffice Calc Basic. Si hay algún error es totalmente involuntario. Haz pruebas...
Código: Seleccionar todo
REM ***** BASIC *****
Option Explicit
'En BASIC prefiero declarar las variables explícitamente para prevenir errores
Sub Iterar()
'
' Valor de Cuota para interes deudor
' Macro para LibreOffice Calc
' Iteracion
'
'Declaración de variables
Dim HojaActiva As Object
'Si estas variables no son de Tipo MONEDA modificar por la que corresponda (DOUBLE, LONG, ...)
Dim Limite As Currency
Dim Delta As Currency
'Accedemos a la hoja activa
HojaActiva = ThisComponent.getCurrentController().getActiveSheet()
'En LibreOffice Calc Basic las variables objeto deben referenciarse siempre
With HojaActiva
'ActiveWorkbook.Unprotect "DCGN"
.unProtect("DCGN")
'limite es el saldo de capital de la cuota posterior a la ingresada
'Limite = Cells(6, 10).Value
'En LibreOffice Calc Basic el acceso a celdas por su posición es (columna, fila) y, además,
'comienzan en 0 (cero), no en 1
Limite = .getCellByPosition(9, 5).getValue()
'Delta = Cells(10, 5).Value
Delta = .getCellByPosition(4, 9).getValue()
'1ro
If Limite > 1000000 Then
'Aunque existe "While...Wend" es preferible usar "Do While...Loop"
Do While Limite > 1000000
Delta = Delta + 10000
'Cells(10, 5).Value = Delta
.getCellByPosition(4, 9).setValue(Delta)
'Limite = Cells(6, 10).Value
Limite = .getCellByPosition(9, 5).getValue()
Loop
ElseIf Limite < -1000000 Then
Do While Limite < -1000000
Delta = Delta - 10000
'Cells(10, 5).Value = Delta
.getCellByPosition(4, 9).setValue(Delta)
'Limite = Cells(6, 10).Value
Limite = .getCellByPosition(9, 5).getValue()
Loop
Else
Delta = Delta
End If
'2do
If Limite > 10000 Then
Do While Limite > 1000
Delta = Delta + 100
'Cells(10, 5).Value = Delta
.getCellByPosition(4, 9).setValue(Delta)
'Limite = Cells(6, 10).Value
Limite = .getCellByPosition(9, 5).getValue()
Loop
ElseIf Limite < -10000 Then
Do While Limite < -1000
Delta = Delta - 100
'Cells(10, 5).Value = Delta
.getCellByPosition(4, 9).setValue(Delta)
'Limite = Cells(6, 10).Value
Limite = .getCellByPosition(9, 5).getValue()
Loop
Else
Delta = Delta
End If
'3ro
If Limite > 1000 Then
Do While Limite > 1000
Delta = Delta + 1
'Cells(10, 5).Value = Delta
.getCellByPosition(4, 9).setValue(Delta)
'Limite = Cells(6, 10).Value
Limite = .getCellByPosition(9, 5).getValue()
Loop
ElseIf Limite < -1000 Then
Do While Limite < -1000
Delta = Delta - 1
'Cells(10, 5).Value = Delta
.getCellByPosition(4, 9).setValue(Delta)
'Limite = Cells(6, 10).Value
Limite = .getCellByPosition(9, 5).getValue()
Loop
Else
Delta = Delta
End If
'Cells(10, 5).Value = Delta
.getCellByPosition(4, 9).setValue(Delta)
'MsgBox (Simulación Terminada - Calculo del valor de la cuota)
MsgBox "Simulación Terminada - Calculo del valor de la cuota", MB_OK + MB_ICONINFORMATION, "¡Atención!"
'ActiveWorkbook.Protect "DCGN"
.Protect("DCGN")
End With
'
End Sub
Por cierto, modifica tu firma porque no existe "openoffice 6.3".
Saludos cordiales.
Re: [RESUELTO] convertir macro de excel a libre office
Publicado: Vie Ago 14, 2020 4:56 pm
por DiegoGuio
Pepe muy buen día.
Déjame decirte que eres un genio, definitivamente la practica hace la experiencia, acabo de probar el código y no hay falla alguna funciona correctamente.
Me salvaste la vida, Dios te bendiga y espero poder aprender de los mejores.
Cordialmente,
Diego Guio.