[RESUELTO]-Pegar Rango de Celdas en el cuerpo de un e-mail.

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

[RESUELTO]-Pegar Rango de Celdas en el cuerpo de un e-mail.

Notapor Chelo2 » Mié Nov 06, 2013 4:47 pm

Regularmente envío al fin del día un mail a disferentes áreas con una información en una tabla de Calc.

A través de código he logrado seleccionar un rango de celdas, darle formato, abrir un mensaje de correo electrónico con todos los destinatarios, asunto y cuerpo del mensaje. Luego, manualmente, ubico el cursor en una parte del cuerpo del mensaje y pego la tabla que antes había seleccionado.

Lo que quisiera hacer, y hasta ahora no he podido dar con la forma correcta, es que en lugar de pegar manualmente el rango antes seleccionado, lo haga autómáticamente también por código.

Se me ocurrió cargandolo en una variable, pero después de mucho "ensayo y error" no he podido concretar busqueda.

Agradezco cualquier ayuda que pueda obtener con este tema.


Un saludo desde Buenos Aires, Argentina.


Chelo2
Última edición por Chelo2 el Lun Nov 11, 2013 5:00 pm, editado 1 vez en total
OpenOffice 4.1.3 en Windows 7
Chelo2
 
Mensajes: 100
Registrado: Mié Ago 14, 2013 4:25 am
Ubicación: Lomas de Zamora, Buenos Aires, Argentina

Re: Pegar Rango de Celdas en el cuerpo de un e-mail.

Notapor mauricio » Mié Nov 06, 2013 6:22 pm

Hola...

Siempre es bueno mostrar el código del que uno esta pidiendo ayuda, así podemos orientarte mejor...

Ahora, manejar el correo desde macros, al menos desde AOO/LibO tiene sus bemoles, es decir, sus pro y sus contras... veo que usas Windows si tu firma es correcta, desde Windows yo he podido crear un nuevo mensaje de correo pero sin el cuerpo del mensaje... como ideas puestas sobre la mesa tienes como alternativas:
1.- Si usas Thunderbird se puede llamar desde línea de comandos con toda la información...
2.- Si usas MS Outlook se puede usar COM para automatizarlo...
3.- Se puede usar Python para enviar el correo directamente...

Saludos
______________________________________________
"Todo cuanto no podemos dar nos posee". - André Gide
LibreOffice 6.2 | ArchLinux | Gnome3
No respondo preguntas privadas, por favor, usa el foro
Avatar de Usuario
mauricio
 
Mensajes: 5991
Registrado: Sab Nov 22, 2008 5:36 am
Ubicación: CDMX

Re: Pegar Rango de Celdas en el cuerpo de un e-mail.

Notapor Chelo2 » Mié Nov 06, 2013 11:17 pm

Hola Mauricio:

El código que utilizo para enviar el mail es es siguiente:

Código: Seleccionar todo   Expandir vistaContraer vista
Sub Enviar_Mail()
   Dim oShell As Object
   Dim dispatcher as object
   Dim Destinatarios As String
   Dim CC As String
   Dim oDoc As Object

   dia1=Day(Now)
   mes=Month(Now)
   ano=Year(Now)
   fechai=Str(dia1)+"/"+Str(mes)+"/"+Str(ano)
   'msgbox fechai
   
   'SI HAY MAS DE UN ENVÍO EN EL DÍA PERMITE INGRESAR EL NÚMERO DE ENVÍO.
   sTexto1 = InputBox ("Entre Número de envio (Si es Único indique 1):","")
   Ne=Str(Stexto1)
   if Stexto1="1" then
   Num="Primer"
   endif
   if Stexto1="2" then
   Num="Segundo"
   endif
   if Stexto1="3" then
   Num="Tercer"
   endif
   if Stexto1="4" then
   Num="Cuarto"
   endif
   
   oDoc = ThisComponent

   'BUSCA LOS DESTINATARIOS EN LA HOJA DE PARÁMETROS
   H_Param = oDoc.getSheets.getByName("Param")
   Celda_Destina= H_Param.getCellRangeByName("B61")
   Destinatarios() = Celda_Destina.getFormula()
   'MsgBox "Los destinatarios son " &Destinatarios


   'BUSCA LOS CC EN LA HOJA DE PARÁMETROS   
   Celda_CC=  H_Param.getCellRangeByName("B62")
   CC= Celda_CC.getFormula()
   'MsgBox "Los CC son " &CC
   

    '(PEGA  "ESTO FUE PARTE DE UNA PRUEBA DE CARGAR EL CONTENIDO DEL PORTAPAPELES EN UNA VARIABLE PARA VER SI FUNCIONABA PERO NO   FUNCIONA. PRETENDO PEGAR EL RANGO DE CELDAS QUE PREVIAMENTE SELECCIONÉ)
   'contenido=dispatcher.executeDispatch(document, ".uno:Paste", "", 0, Array())
   
   'ABRE EL CORREO
    oShell = createUnoService("com.sun.star.system.SystemShellExecute")
   
   'GENERA UN CORREO PARA ENVIAR
   '%0D%0A Te permite agregar un saldo de línea en el mensaje
    oShell.Execute("mailto:"&Destinatarios & _
   "?Subject= Requisitos y Documentación - Marcas Domicilio - Envío del "+fechai+" Al "+fechai+ " ("+Num+" Envío)"& _
   "&CC="&CC & _
   "&Body=SECCIONES Y OFICINAS AGENCIA 13%0D%0A%0D%0ASe remite listado de contribuyentes que solicitaron la habilitación para efectuar el cambio de  domicilio por internet para su proceso en el sistema de Requisitos y Documentación.%0D%0A%0D%0A"+contenido+"%0D%0A%0D%0AEn caso de registrar algún tema pendiente en el área, se encarece devolver el presente mail con la indicación del motivo del rechazo.%0D%0A%0D%0AMuchas gracias.%0D%0A%0D%0D%0A%0D"+usu_largo+_
   "%0D%0ASección Servicios al Cxxxx0A" & Environ("username") , "", 0)
End Sub



Ante todo te pido disculpas porque seguramente verás horrores en esta programación, pero tiene en cuenta que no conozco de programación. Solo soy un empleado público que con las herramientas de que dispongo juego un poco con OpenOffice para administrar lo mas eficientemente que puedo y de manera doméstica, algunas cuestiones de oficina como entrada y salida de papeles y registros de trámites, y tratar de automatizarlos y minimizar los errores de capturas.

Los destinatarios, y CC los saco de datos que fueron almacenados en algunas celdas de una hoja llamada "Parámetros" donde se vuelcan todas las referencias a ruta de archivos y datos que se pueden cambiar con cierta frecuencia, sin necesidad de modificar el código.

El punto es que el rango de celdas en cuestión la quisiera pegar en el lugar donde se encuentra la variable "contenido" (que no funciona).

Respecto del programa de correo que utilizo, tengo en la mayoria de las PC Outlook Express y en algunas otras Thunderbird. Así como está abre bien el correo en ambos programas y lo envía correctamente. Solo que no sé como pegar ese rango de celdas.

Desde ya te agradezo el interés.

Un abrazo desde Buenos Aires.

Chelo2
OpenOffice 4.1.3 en Windows 7
Chelo2
 
Mensajes: 100
Registrado: Mié Ago 14, 2013 4:25 am
Ubicación: Lomas de Zamora, Buenos Aires, Argentina

Re: Pegar Rango de Celdas en el cuerpo de un e-mail.

Notapor SLV-es » Jue Nov 07, 2013 9:47 pm

No he probado tu código, pero algunas ideas que quizás te sirvan:

Código: Seleccionar todo   Expandir vistaContraer vista
   "&Body=SECCIONES Y OFICINAS AGENCIA 13%0D%0A%0D%0ASe remite listado de contribuyentes que solicitaron la habilitación para efectuar el cambio de  domicilio por internet para su proceso en el sistema de Requisitos y Documentación.%0D%0A%0D%0A" & contenido & "%0D%0A%0D%0AEn caso de registrar algún tema pendiente en el área, se encarece devolver el presente mail con la indicación del motivo del rechazo.%0D%0A%0D%0AMuchas gracias.%0D%0A%0D%0D%0A%0D" & usu_largo &_
"%0D%0ASección Servicios al Cxxxx0A" & Environ("username") , "", 0)


Siempre es preferible utilizar el operador & antes que el operador + a la hora de concatenar cadenas. Es posible que si utilizas + y las dos cadenas contengan números, las sume, en lugar de concatenarlas. No es el caso, pero como norma general, yo lo aplico así siempre.

---------------------
El problema lo tendrás con que se interprete correctamente el contenido del portapapeles y se añada al texto como una tabla, o un conjunto de números tabulados.
Creo que no va a ser posible.

Si el mensaje va a enviarse en formato HTML, una posible solución sería algo así:

Suponiendo que en las variables Celda01, Celda02, etc tengo los valores de las celdas:

Código: Seleccionar todo   Expandir vistaContraer vista
dim tabla as string
tabla ="<table><tbody>"
tabla = tabla & "<tr><td>" & Celda01 & "</td><td>" & Celda02 & "</td></tr>"
tabla = tabla & "<tr><td>" & Celda03 & "</td><td>" & Celda04 & "</td></tr>"
tabla = tabla & "<tr><td>" & Celda05 & "</td><td>" & Celda06 & "</td></tr>"
tabla = tabla & "</tbody></table>"

contenido = tabla


Si en cambio, utilizas un formato sólo texto para tu mensaje, una posible solución sería:


Código: Seleccionar todo   Expandir vistaContraer vista
dim tabla as string
tabla ="+-----------------------------------------------+"
tabla = tabla & "+ " & Celda01 & " - " & Celda02 & " +"
tabla = tabla & "+ " & Celda03 & " - " & Celda04 & " +"
tabla = tabla & "+ " & Celda05 & " - " & Celda06 & " +"
tabla = tabla & "+-----------------------------------------------+"

contenido = tabla


Espero te sirva :D

PD: ¿Código horrible? Si tuviera tiempo buscaría mis primeras macros, para que vieses que no eres la única.
Y dudo que nadie (ni siquiera aquí) pueda lanzar una piedra contra el tuyo
Pero con el tiempo, aprendemos a esforzarnos también en que se vea "bonito", además de en que funcione :D
+info en la web "no oficial" dedicada a OpenOffice en Español
AOO 4.1.2 y LibO 4.4.6 en W10 y en Lliurex
No respondo mensajes privados sobre AOO, por favor, utiliza el foro para tus preguntas
Avatar de Usuario
SLV-es
 
Mensajes: 4894
Registrado: Jue Ago 26, 2010 1:25 am
Ubicación: España

Re: Pegar Rango de Celdas en el cuerpo de un e-mail.

Notapor SLV-es » Jue Nov 07, 2013 9:56 pm

Por otro lado, si lo que quieres es extraer el texto de lo que hayas previamente copiado al portapapeles, esta función que he extraído de mi extensión BasicIDETools (y que la encontré ya no recuerdo donde) te puede servir

Código: Seleccionar todo   Expandir vistaContraer vista
Function GetClipboard() As String
'--------------------------------------------------------------------------------------------
   ' Devuelve el contenido del portapapeles. SOLO TEXTO
   ' Return the clipboard contents ONLY TEXT
   Dim oClip, oConv, oCont, oTyps, i As Integer
   oClip = CreateUNOService("com.sun.star.datatransfer.clipboard.SystemClipboard")
   oConv = CreateUNOService("com.sun.star.script.Converter")
   oCont = oClip.getContents()
   oTyps = oCont.getTransferDataFlavors()
   For i = LBound(oTyps) To UBound(oTyps)
      If oTyps(i).MimeType = "text/plain;charset=utf-16" Then
         GetClipboard() = oConv.convertToSimpleType(oCont.getTransferData(oTyps(i)), com.sun.star.uno.TypeClass.STRING)
         Exit For
      End If
   Next

End Function


Si has copiado algo al portapapeles, en tu macro pones:

Código: Seleccionar todo   Expandir vistaContraer vista
contenido = GetClipboard()
if contenido = "" then
  msgbox "el portapapeles está vacío"
else
  'resto del código para enviar el mensaje
endif



Pero como te dije, no sé que obtendrás del portapapeles al copiar las celdas.
+info en la web "no oficial" dedicada a OpenOffice en Español
AOO 4.1.2 y LibO 4.4.6 en W10 y en Lliurex
No respondo mensajes privados sobre AOO, por favor, utiliza el foro para tus preguntas
Avatar de Usuario
SLV-es
 
Mensajes: 4894
Registrado: Jue Ago 26, 2010 1:25 am
Ubicación: España

Re: Pegar Rango de Celdas en el cuerpo de un e-mail.

Notapor Chelo2 » Vie Nov 08, 2013 4:28 pm

El problema es que yo no conozco de antemano la cantidad de celdas que voy a pegar, ya que la selección se hace por código desde la primera fila hasta la última fila condatos. A esa selección se le aplican formatos de bordes y luego es lo que pego manualmente en el cuerpo del mensaje.

No obstante probé los dos métodos cargando como me indicaste algunas celdas en variables, y logré pegar los datos pero quedan desordenados, no respetando la forma de tabla.

Cuando pego manualmente, queda perfectamente la tabla con su formatos (colores y bordes).

No obstante te agradezco enormemente el aporte, ya que lo tendré en cuenta para otros usos.

Por si aparece alguna otra sugerencia, dejo abierto el tema por unos días, y luego sí, si no aparece nada doy por finalizada la consulta.

Te mando un abrazo grande desde Buenos Aires y nuevamente muchas gracias por tu aporte y tu paciencia para conmigo.


Chelo2
OpenOffice 4.1.3 en Windows 7
Chelo2
 
Mensajes: 100
Registrado: Mié Ago 14, 2013 4:25 am
Ubicación: Lomas de Zamora, Buenos Aires, Argentina

Re: Pegar Rango de Celdas en el cuerpo de un e-mail.

Notapor mauricio » Vie Nov 08, 2013 6:01 pm

Chelo2 escribió:Cuando pego manualmente, queda perfectamente la tabla con su formatos (colores y bordes).

¿Puedes mostrarte una captura de pantalla de como queda en tu cliente de correo?

He podido usar la línea de comandos para pegar algo más elaborado (como las tablas), pero solo si usa HTML y con Thunderbird... pero quiero ver si es posible hacerlo como te queda a ti...

Saludos
______________________________________________
"Todo cuanto no podemos dar nos posee". - André Gide
LibreOffice 6.2 | ArchLinux | Gnome3
No respondo preguntas privadas, por favor, usa el foro
Avatar de Usuario
mauricio
 
Mensajes: 5991
Registrado: Sab Nov 22, 2008 5:36 am
Ubicación: CDMX

Re: Pegar Rango de Celdas en el cuerpo de un e-mail.

Notapor Chelo2 » Vie Nov 08, 2013 8:07 pm

Hola Mauricio:

Te envío la captura de pantalla que me solicitaste. Quedó un poco acotada porque se me complicó al bajarle al maximo los pixeles, pero creo que igual se puede ver como queda cuando manualmente, después de abrir por código el mensaje a enviar, ubico el cursor en el medio del cuerpo del mensaje y con el botón derecho de mouse o con el botón del programa de correo le doy "Pegar".

Cabe recordar que aquí estoy utilizando el programa Outlook Express, y en otras PC Thunderbird, funcionando en los dos programas bien, siempre y cuando lo pegue manualmente.

Te mando un abrazo y espero se pueda ver bien desde la imagen enviada.

Chelo2
Adjuntos
Correo.JPG
OpenOffice 4.1.3 en Windows 7
Chelo2
 
Mensajes: 100
Registrado: Mié Ago 14, 2013 4:25 am
Ubicación: Lomas de Zamora, Buenos Aires, Argentina

Re: Pegar Rango de Celdas en el cuerpo de un e-mail.

Notapor SLV-es » Sab Nov 09, 2013 3:08 am

Chelo2 escribió:El problema es que yo no conozco de antemano la cantidad de celdas que voy a pegar, ya que la selección se hace por código desde la primera fila hasta la última fila condatos. A esa selección se le aplican formatos de bordes y luego es lo que pego manualmente en el cuerpo del mensaje.


Imaginemos este procedimiento:
Seleccionas las celdas, y pulsas un botón que envía el mensaje con el contenido de las celdas

No te resultará difícil que una macro recorra las celdas seleccionadas y construya una tabla en modo texto o HTML como dijimos
¿Cómo conozco las celdas seleccionadas? Libro de Mauricio (ver https://wiki.openoffice.org/wiki/ES/Man ... B3n_actual)
¿Cómo las recorro (y cómo conozco cuantas filas y columnas se han seleccionado)? En el mismo capítulo tienes la solución.

Bien, si no te atreves con lo de crear una tabla HTML a partir de la selección, aquí te dejo el código:

Código: Seleccionar todo   Expandir vistaContraer vista
Function Seleccion2TablaHTML() As String
' Devuelve las celdas seleccionadas en una tabla en formato HTML
   Dim oSel As Object
   Dim lSeguir As Boolean
   Dim col As Long, fila As Long
   Dim cFin As Long, fFin As Long
   Dim c As String

   oSel = ThisComponent.getCurrentSelection()

   lSeguir=False

   Select Case oSel.getImplementationName()
   Case "ScCellObj"
      MsgBox "Sólo has seleccionado una celda. Son necesarias más"
   Case "ScCellRangeObj"
      lSeguir = True
   Case "ScCellRangesObj"
      MsgBox "No se permite seleccionar varios rangos"
   Case Else
      MsgBox "Seleccione un rango de celdas, por favor"
   End Select

   ' Si es un rango de celdas, leemos sus límites
   If lSeguir Then
      cFin = oSel.getColumns().getCount() - 1
      fFin = oSel.getRows().getCount() - 1


      ' Recorremos las celdas y creamos la tabla
      c = "<table style='background-color:#eaeaea;border:2px solid #555;'><tbody>"
      For fila = 0 To fFin
         c = c & "<tr>"
         For col = 0 To cFin
            c = c & "<td style='border:1px solid #666;'>" & oSel.getCellByPosition(col,fila).getString & "</td>"
         Next ' col
         c = c & "</tr>"
      Next ' fila
      c = c & "</tbody></table>"


   EndIf
   
   Seleccion2TablaHTML = c

End Function


 Editado: He corregido ligeramente el código 10 minutos después de editar 



Luego, puedes agregar un botón que ejecute la macro en Calc. No es difícil (ver http://wiki.open-office.es/Asignar_una_ ... OpenOffice)



Chelo2 escribió: y nuevamente muchas gracias por tu aporte y tu paciencia para conmigo

Me motiva tu interés y tu constancia. No es paciencia, es un placer. Ojalá tuviera más tiempo que pudiera dedicar, y más conocimientos que pudiera aportar.
+info en la web "no oficial" dedicada a OpenOffice en Español
AOO 4.1.2 y LibO 4.4.6 en W10 y en Lliurex
No respondo mensajes privados sobre AOO, por favor, utiliza el foro para tus preguntas
Avatar de Usuario
SLV-es
 
Mensajes: 4894
Registrado: Jue Ago 26, 2010 1:25 am
Ubicación: España

Re: Pegar Rango de Celdas en el cuerpo de un e-mail.

Notapor Chelo2 » Dom Nov 10, 2013 5:36 pm

Hola SLV!! como estas??

Efectivamente tengo el código asignado a un botón que se encuentra dentro de un Cuadro de Diálogo a través de cual capturo los datos y los mando a una hoja auxiliar. Luego al utilizar el botón "Enviar correo", me abre un mensaje en el correo predeterminado con el mensaje ya incluído.

He probado el código que tan amablemente me aportaste y efectivamente pone los datos de la tabla en el lugar establecido del cuerpo del mensaje, pero de la forma que te muestro en la imagen de la captura de pantalla del correo (no se si se llega a ver ya que al reducir la imágen se perdió mucho de calidad).

Parece que lo pegara como texto y no como html, ya que se ve todo el código y no en forma de tabla. Cabe señalar que el programa de correo no se encuentra configurado para texto sino para HTML.

No se... no quiero complicarles la vida.. jeej.... pero si se puede encontrar una solución estaría muy bueno...sino.. estoy plenamente agradecido igualmente por su preocupación y compromiso.

Les mando un saludo desde Buenos Aires..

Chelo2
Adjuntos
correo.png
Espero que se vea porque al acotar la resolución a 450 x 500 mpx se achicó mucho.
OpenOffice 4.1.3 en Windows 7
Chelo2
 
Mensajes: 100
Registrado: Mié Ago 14, 2013 4:25 am
Ubicación: Lomas de Zamora, Buenos Aires, Argentina

Re: Pegar Rango de Celdas en el cuerpo de un e-mail.

Notapor mauricio » Dom Nov 10, 2013 7:58 pm

Chelo2 escribió:Efectivamente tengo el código asignado a un botón que se encuentra dentro de un Cuadro de Diálogo a través de cual capturo los datos y los mando a una hoja auxiliar. Luego al utilizar el botón "Enviar correo", me abre un mensaje en el correo predeterminado con el mensaje ya incluído.
¿alguna razón en especial para hacer esto, para usar una hoja auxiliar cuando puedes enviar los datos, si los capturas directamente al proceso de crear el correo?
Chelo2 escribió:captura de pantalla del correo (no se si se llega a ver ya que al reducir la imágen se perdió mucho de calidad).
Hace mucho que no uso windows pero no parece ni Outllok Express, ni Thunderbird, ¿que cliente de correo es?

Saludos
______________________________________________
"Todo cuanto no podemos dar nos posee". - André Gide
LibreOffice 6.2 | ArchLinux | Gnome3
No respondo preguntas privadas, por favor, usa el foro
Avatar de Usuario
mauricio
 
Mensajes: 5991
Registrado: Sab Nov 22, 2008 5:36 am
Ubicación: CDMX

Re: Pegar Rango de Celdas en el cuerpo de un e-mail.

Notapor Chelo2 » Dom Nov 10, 2013 10:43 pm

El cuadro de dialogo al que hago referencia no lo uso exclusivamente para enviar los datos por correo, sino que lo uso para la captura de diferentes datos que son enviados a diferentes libros, según el tema, que hace las veces de tablas de bases de datos.

A esta altura te preguntarás ¿porque uso Calc y no Base de datos??. Porque somos varios usuarios que interectuamos con esas bases, y Base sólo admite un usuario a la vez. Si bien he leído que podría hacerse con tablas en MySQL o María DB, la verdad es que no sé usar eso todavía, y preferí avanzar en lo que mediánamente podía llegar a manipular. Por tal motivo, encontré más práctico por ahora tener todo cargado en libros calc como si fueran Tablas, las que puedo consultar efectuando diferentes filtros que me dan la información que puedo necesitar.

¿como los uso?. Tengo un libro en cada PC que solo tiene las macros con cuadros de diálogo que me permiten, en primer lugar que el usuario ingrese una contraseña, la valida con datos del usuario que están en un libro llamado "Claves" (y que obviamente están protegidos y se accede a ellos a través de una clave de acceso por código).

Una vez validado el usuario, se habilitan los botones que permiten acceder a las diferentes funcionalidades. Una de ellas es la carga de datos. Principalmente cargo allí los diferentes trámites que ingresan en mi sección, los cuales se encuentran codificados por tipo de trámite. Y luego de registrados debo enviarlos a diferentes secciones que trabajarán esos trámites según el tipo de que se trate. Por lo tanto, los registro y genero un cargo o remito con un número correlativo e imprimo, quedando registrado el destino de ese trámite. Esa impresión va físicamente con los papeles al área de destino.

Esos datos cargados van primeramente a una hoja auxiliar, que luego de finalizada la carga (mas de un usuario puede estar cargando a la vez en su propio programa), mediante un botón "Cargar a Base" manda todos los datos a la base principal (tambien protegida por contraseña)que se encuantra en una PC que hace de servidor y borra los datos de la hoja auxiliar. De esta manera, lo que hago es que la base principal sólo se abra unos instantes para recibir los datos de diferentes usuarios, e inmediatamente se cierre. Si justo diera la casualidad que dos usuarios estuvieran entrando al mismo tiempo, el programa me avisa que la base se encuentra abierta y vuelva a intentar en unos instantes.

¿Por que no cargo lo datos directamente?? Porque como lo usan varias personas (en mi sección somos 12 personas trabajando) debo minimizar el ingreso de errores o que se registren trámites con datos faltantes. Por lo tanto, con el cuadro de diálogo valido que se carguen la totalidad de los datos y que los mismos sean correctos. En Argentina utilizamos para identificar a las personas físicas y jurídicas, un número de 11 dígitos llamado CUIT que significa Clave Única de Identificación Tributaria, y que es fundamental que se ingrese de manera correcta, ya que de lo contrario no se podría efectuar consultas y que sus resultados fueran certeros. Por eso una de las validaciones que hace es que el número sea correcto de acuerdo al cáculo de un dígito verificador. Además, en este caso particular del correo, uso también el mismo diálogo que te mencioné porque al ingresar el N° de CUIT me trae directamente el nombre de la persona, al estar conectado con una Tabla donde están todos los nombres de las personas que administramos. Se hace un poco lenta esa búsqueda porque tiene unos 200.000 registros, pero me da la seguridad que no hay errores en el CUIT y en los nombres.

Todo esto y mucho más yo lo tenía armado en macros de Excel, pero atento a la limitación en la cantidad de licencias, me propuse armar todo de nuevo directamente en Open Office, y si bien me está resultando bastante más dificil, de a poco voy encontrando las formas de materializar mi proyecto.

Seguramente te parecerá una locura todo esto, sobre todo por lo rudimentario de mi trabajo, pero tiene en cuenta que solo dirijo una sección administrativa que nada tiene que ver con sistemas, no sé nada de sistemas, pero le pongo mucha onda para mejorar el trabajo de mis dependientes y del mio propio minimizando la posibilidad de errores y haciendo más eficiente nuestra tarea y nos simplifica la vida, que de otro modo sería todo manual.

Por lo que estuve viendo, tu proyecto de factura libre se acercaría bastante a esto de los cargos, pero encuentro la limitación en que no podría ser usados por dos usuarios a la vez. Por eso desistí de hacerlo de esa manera.

Con respecto a la captura que mandé del correo, es cierto esa captura no es ni Outlook Espress ni Thunderbird, es Windows Live Mail, porque la prueba la hice ne mi casa desde mi PC, ya que mi ansiedad no me permitió esperar al lunes a hacerlo en la oficina.. jejee

Bueno, te pido mil disculpas por mi extensión, pero sino no se entiende el porque de algunas decisiones respecto de lo que estaba haciendo.

Te mando un abrazo grande desde Buenos Aires..y es un verdadero gusto interactuar contigo y con la totalidad de los miembros de este foro.

Chelo2
OpenOffice 4.1.3 en Windows 7
Chelo2
 
Mensajes: 100
Registrado: Mié Ago 14, 2013 4:25 am
Ubicación: Lomas de Zamora, Buenos Aires, Argentina

Re: Pegar Rango de Celdas en el cuerpo de un e-mail.

Notapor mauricio » Lun Nov 11, 2013 12:28 am

Chelo2 escribió:Se hace un poco lenta esa búsqueda porque tiene unos 200.000 registros, pero me da la seguridad que no hay errores en el CUIT y en los nombres.
Esta parte se puede mejorar mucho, dependiendo de como estén estructurados los datos, del método que se use y del lenguaje usado... dame una breve muestra con datos ficticios, yo los copio para tener el total de tus registros para hacer pruebas... esto por favor, publicalo en otro hilo como una nueva consulta y le damos seguimiento ahí...

Volviendo al tema de este hilo, definitivamente por medio del protocolo mailto no es posible agregar código HTML: http://www.ietf.org/rfc/rfc2368.txt

Pero con thunderbird si es posible hacerlo como te muestro en la siguiente imagen...
Pantallazo.png

si ya están en esto de la migración mira si es posible que usen Thunderbird...

Ahora, como se hace...
1.- Instalar la extensión UniversoLibreUtil.oxt: http://asociacioncivil.org/files/oxt/Un ... reUtil.oxt
2.- En Linux no es necesario, pero en Windows, debes de asegurarte de que la ruta de ejecución de Thunderbird esta en la variable de entorno Path, de otro modo la extensión no encontrará el programa: http://www.java.com/es/download/help/path.xml
3.- Probar primero el archivo anexo, si todo sale bien, entonces adaptar el código en tus macros (IMPORTANTE: ejecuta la macro desde la hoja de calculo, NUNCA desde el editor Basic)
Código: Seleccionar todo   Expandir vistaContraer vista
   util = CreateUnoService("org.universolibre.util.UniversoLibreUtil")   
   sel = ThisComponent.CurrentController.Selection
   cuerpo = util.cmd("range2html", Array("B18:E21", "Datos"))
   tmp = sel.getString()
   sel.setString(cuerpo)
   
   para = util.cmd("getCell", Array("B1", "Datos")).getString()
   copia = util.cmd("getCell", Array("B2", "Datos")).getString()
   copiaoculta = util.cmd("getCell", Array("B3", "Datos")).getString()
   tema = util.cmd("getCell", Array("B4", "Datos")).getString()
   anexos = util.cmd("getCell", Array("B5", "Datos")).getString()
   cuerpo = util.cmd("getRange", Array("B6:B12", "Datos")).getDataArray()
   cuerpo = util.cmd("join", Array(cuerpo, ""))
   sel.setString(tmp)
   
   data = Array( _
      Array("type", "thunderbird"), _
      Array("to", para), _
      Array("cc", copia), _
      Array("bcc", copiaoculta), _
      Array("subject", tema), _
      Array("body", cuerpo), _
      Array("attachment", anexos) _
   )
   util.createMail(data)

He tratado de hacerlo lo más autoexplicativo posible, pero si hay duda con alguna línea aquí la resolvemos...

Me da mucho gusto tu esfuerzo por migrar, yo pase por lo mismo y se que no es fácil, ahora tienes este foro para que sea más liviano...

Un abrazo

P.D. El ćodigo también funciona aun con mailto (pero claro, sin la tabla), de la siguiente manera:
Código: Seleccionar todo   Expandir vistaContraer vista
   util = CreateUnoService("org.universolibre.util.UniversoLibreUtil")   
   sel = ThisComponent.CurrentController.Selection    
   para = util.cmd("getCell", Array("B1", "Datos")).getString()
   copia = util.cmd("getCell", Array("B2", "Datos")).getString()
   copiaoculta = util.cmd("getCell", Array("B3", "Datos")).getString()
   tema = util.cmd("getCell", Array("B4", "Datos")).getString()
   cuerpo = util.cmd("getRange", Array("B6:B12", "Datos")).getDataArray()
   cuerpo = util.cmd("join", Array(cuerpo, ""))
   
   data = Array( _
      Array("type", "mailto"), _
      Array("to", para), _
      Array("cc", copia), _
      Array("bcc", copiaoculta), _
      Array("subject", tema), _
      Array("body", cuerpo) _
   )
   util.createMail(data)
Adjuntos
Pruebas Correo.ods
(11.72 KiB) 295 veces
______________________________________________
"Todo cuanto no podemos dar nos posee". - André Gide
LibreOffice 6.2 | ArchLinux | Gnome3
No respondo preguntas privadas, por favor, usa el foro
Avatar de Usuario
mauricio
 
Mensajes: 5991
Registrado: Sab Nov 22, 2008 5:36 am
Ubicación: CDMX

Re: Pegar Rango de Celdas en el cuerpo de un e-mail.

Notapor SLV-es » Lun Nov 11, 2013 8:44 am

Gracias por la aclaración, Mauricio, pues llevo horas buscando la forma de hacer un mailto con HTML y no lo he conseguido
+info en la web "no oficial" dedicada a OpenOffice en Español
AOO 4.1.2 y LibO 4.4.6 en W10 y en Lliurex
No respondo mensajes privados sobre AOO, por favor, utiliza el foro para tus preguntas
Avatar de Usuario
SLV-es
 
Mensajes: 4894
Registrado: Jue Ago 26, 2010 1:25 am
Ubicación: España

Re: Pegar Rango de Celdas en el cuerpo de un e-mail.

Notapor SLV-es » Lun Nov 11, 2013 11:49 am

Tercera entrega de este "culebrón" ;)

Si se dispone de Windows + MSO Outlook, podemos enviar el mensaje en formato HTML

He colgado un ejemplo en mi blog. Ver http://blog.open-office.es/basic/macro- ... openoffice

Espero te sirva :)

Saludos
+info en la web "no oficial" dedicada a OpenOffice en Español
AOO 4.1.2 y LibO 4.4.6 en W10 y en Lliurex
No respondo mensajes privados sobre AOO, por favor, utiliza el foro para tus preguntas
Avatar de Usuario
SLV-es
 
Mensajes: 4894
Registrado: Jue Ago 26, 2010 1:25 am
Ubicación: España

Re: Pegar Rango de Celdas en el cuerpo de un e-mail.

Notapor Chelo2 » Lun Nov 11, 2013 4:59 pm

Amigos!!

Les agradezco enormemente la dedicación que han tenido!!!

Lamentablemente, tengo todo en contra para aplicar las últimas sugerencias. Tengo Outlook Express en la mayoría de las PC y Thunderbird en otras, pero no puedo instalar extensiones ni ningún programa que no sea homologado por la organización, y se imaginarán ustedes lo difícil que es convencer y conseguir algo en una organización estatal grande.

Pero he aprendido un montón con todo lo que me han aportado y seguiré trabajando con todo lo que puedo sacar del libro, blogs y el foro. Lo que lamento es que los haya hecho trabajar tanto.. jeje

De acuerdo a la sugerencia de Mauricio, voy a consultar en otro hilo lo de la conexión con una base con muchos registros. Pero voy a dejar pasar un poco para que no me odien... jeje

Nuevamente Muchas gracias!! y les mando un saludo desde Buenos Aires, Argentina.

Chelo2
OpenOffice 4.1.3 en Windows 7
Chelo2
 
Mensajes: 100
Registrado: Mié Ago 14, 2013 4:25 am
Ubicación: Lomas de Zamora, Buenos Aires, Argentina

Re: [RESUELTO]-Pegar Rango de Celdas en el cuerpo de un e-ma

Notapor mauricio » Lun Nov 11, 2013 5:02 pm

Siempre queda tu maquina de casa para probar lo que quieras...

Saludos
______________________________________________
"Todo cuanto no podemos dar nos posee". - André Gide
LibreOffice 6.2 | ArchLinux | Gnome3
No respondo preguntas privadas, por favor, usa el foro
Avatar de Usuario
mauricio
 
Mensajes: 5991
Registrado: Sab Nov 22, 2008 5:36 am
Ubicación: CDMX

Re: [RESUELTO]-Pegar Rango de Celdas en el cuerpo de un e-ma

Notapor jmseran » Mié Nov 13, 2019 6:55 pm

Consulta se que es un hilo viejo este, pero el tema al que quiero abordar es el mismo... sólo cambiaría en algo, en mi laburo se trabaja con una WebMail, habría alguna forma de que se vincule lo que se quiere enviar desde esa WebMail?
Juan Manuel Serantes
OpenOffice 4.0.1 en Windows 10 (64bit)
jmseran
 
Mensajes: 1
Registrado: Mié Nov 13, 2019 6:53 pm


Volver a Macros y API UNO

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 5 invitados