[RESUELTO] Copiar archivo de texto y enviar a portapapeles

Desarrollo de Macros y programación en UNO, usar las API, llamar programas externos...
Responder
ElTíoLaVara
Mensajes: 6
Registrado: Jue Mar 27, 2014 9:38 am
Ubicación: España

[RESUELTO] Copiar archivo de texto y enviar a portapapeles

Mensaje por ElTíoLaVara »

Hola a todos,

Es mi primer post en la comunidad y antes de continuar me gustaría darles las gracias por toda la ayuda que me ha aportado con todas y cada una de las respuestas en este foro. Me han sido (y siguen siendo) de muchísima utilidad en mi proceso de adaptación/aprendizaje de starbasic :)

Sin embargo, pese a buscar y buscar, no he sido capaz de encotrar una forma de hacer lo que necesito...
Tengo una macro que toma los valores de ciertas celdas, los combina con cadenas de texto y crea un archivo en C:\. El contenido de ese archivo no es más que texto con una serie de tags bbcode. Mi intención es crear una segunda macro que simplemente lea el contenido de ese archivo de texto y lo copie en el portapapeles para que el usuario sólamente tenga que hacer Ctrl+V en el campo de respuesta de un foro y postear el resultado con el formato que he yo he definido mediante la macro anterior.

En la versión en Excel del documento lo he hecho sin ningún problema usando MS Forms y el método putInClipBoard, pero soy incapaz de encotrar una forma de hacerlo en OpenOffice. Claro que mis conocimientos sobre oooBasic aún son muy limitados... Espero que me puedan ayudar o guiar en la búsqueda :)

Saludos!
Última edición por mauricio el Lun Mar 31, 2014 4:32 pm, editado 2 veces en total.
Razón: Marcar icono de resuelto
OpenOffice 4.0.1 - Windows 7 Profesional 64bits
Avatar de Usuario
SLV-es
Mensajes: 4894
Registrado: Jue Ago 26, 2010 1:25 am
Ubicación: España
Contactar:

Re: Copiar contenido archivo de texto y enviar a portapapele

Mensaje por SLV-es »

Hola

En mi extensión BasicIDETools utilizo un procedimiento que inserta-extrae texto hacia y del portapapeles.

¿Por qué no la instalas y le echas un vistazo? Seguro que puedes adaptarla fácilmente.

Además, seguro que aprecias cómo formatea el código basic, cómo lo indenta, y qué fácil es buscar información en internet desde el propio editor IDE con ella :)

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
ElTíoLaVara
Mensajes: 6
Registrado: Jue Mar 27, 2014 9:38 am
Ubicación: España

Re: Copiar contenido archivo de texto y enviar a portapapele

Mensaje por ElTíoLaVara »

Wow! Tiene una pinta excelente. Lo voy a probar ahora mismo :D ¡Muchísimas gracias!

Ahora me surge una pequeña duda, ya que no estoy familiarizado con el uso de este tipo de extensiones: ¿Será necesario que pida a los usuarios del documento que instalen también la extensión para que el documento funcione correctamente o la extensión es sólo un soporte para facilitar el desarrollo de las macros que no afecta al usuario final?

PD: Acabo de darme cuenta de que debería haber creado el hilo en la sección Macros y API UNO... Mil disculpas :oops:
OpenOffice 4.0.1 - Windows 7 Profesional 64bits
Avatar de Usuario
SLV-es
Mensajes: 4894
Registrado: Jue Ago 26, 2010 1:25 am
Ubicación: España
Contactar:

Re: Copiar contenido archivo de texto y enviar a portapapele

Mensaje por SLV-es »

Movido el tema a Macros y API UNO

En cuanto a tu pregunta, no. Lo que sugiero que hagas es que analices la parte que se encarga de copiar texto al portapapeles, la copies y pegues en tu propio código, lo adaptes a tus necesidades y lo hagas funcionar como tú deseas.

En cuanto a la extensión es sólo un apoyo al programador de macros. Y si parte de su código te sirve, utilízalo.
Yo mismo para generarla he utilizado código de otros, encontrado en foros, manuales, etc.

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
ElTíoLaVara
Mensajes: 6
Registrado: Jue Mar 27, 2014 9:38 am
Ubicación: España

Re: Copiar contenido archivo de texto y enviar a portapapele

Mensaje por ElTíoLaVara »

Okay, muchas gracias.
La extensión es una verdadera maravilla, por cierto. Es super fácil y rápido formatear el código. No sé cómo he podido vivir sin ella hasta ahora ;)

Con respecto a la macro que busco, sigo un poco (muy!) atascado... Creo que sé cómo utilizar tus macros para trabajar con el portapapeles, el problema es que no sé cómo leer el documento. La verdad es que soy bastante nuevo en este tipo de procedimientos, incluso en vba. Es la primera vez que hago uso de archivos externos, por lo tanto no entiendo demasiado bien cómo se trabaja con ellos :s

Estoy haciendo una prueba muy simple para probar. Buscando por ahí creo que he encontrado la forma de acceder al archivo:

Código: Seleccionar todo

Sub ReadFile

fPath = "C:\TestFile.txt"
fAccess = createUnoService("com.sun.star.ucb.SimpleFileAccess")
Tempfile = createUnoService("com.sun.star.io.InputStream")
Tempfile = fAccess.OpenFileRead(fPath)

End Sub
Pero no paso de ahí (y tampoco estoy seguro de que lo que estoy haciendo sea correcto...). No soy capaz de copiar el contenido del archivo :crazy: No necesito extraer datos concretos sino copiarlo todo tal y como está, como hacer un Ctrl+C, conservando el formato del texto que hay en el archivo. ¿Es posible?
OpenOffice 4.0.1 - Windows 7 Profesional 64bits
xiseme
Mensajes: 1918
Registrado: Lun Nov 24, 2008 1:13 pm

Re: Copiar contenido archivo de texto y enviar a portapapele

Mensaje por xiseme »

En este hilo se hace uso solo de la parte del código de la extensión de SLV-es que es justamente para copiar al portapapeles.

De como abrir* un archvo para extraer/copiar datos de él, hay abundantes hilos en el foro y desde luego por si no lo has visto aún, la wiki / Aprendiendo OOobasicseguro que te iluminan.

*a lo mejor, pudiera ser que ni siquiera haga falta abrirlo :mrgreen:
Todo es mejorable, estamos dispuestos a mejorar. ¿Yo? ... poco a poco.
Nunca hay acritud en mis comentarios, si lo pareciera, seguro que me he expresado mal.
ElTíoLaVara
Mensajes: 6
Registrado: Jue Mar 27, 2014 9:38 am
Ubicación: España

Re: Copiar contenido archivo de texto y enviar a portapapele

Mensaje por ElTíoLaVara »

Gracias por tu respuesta xiseme. Con el código para copiar al portapapeles no tengo problemas -en principio-. Lo que he probado hasta ahora ha funcionado bien, así que supongo que sé cómo utilizarlo. El problema sigue siendo que no doy con la forma de leer el contenido del archivo...

Todo lo que he podido encontrar en el foro o es para abrir "físicamente" el archivo (o eso he entendido yo), lo cual yo quiero evitar, o es para extraer sólo cierto contenido, etc... Pero no he sido capaz de sacar lo que necesito.

También conozco la wiki y el libro de Mauricio (de hecho lo leí e hice casi todos los ejercicios hace algunos meses) y tampoco he podido encontrar lo que busco... Créeme, no me gusta molestar al personal a la primera de cambio. Si pregunto es porque ya hecho todo lo posible por resolverlo yo mismo ;)
Probablemente se me está escapando algún detalle tonto, o es que últimente estoy más espeso de lo normal, o vete tú a saber :lol:

En fin, supongo que no queda otra que seguir buscando.

Saludos.
Última edición por ElTíoLaVara el Lun Mar 31, 2014 12:59 pm, editado 1 vez en total.
OpenOffice 4.0.1 - Windows 7 Profesional 64bits
ElTíoLaVara
Mensajes: 6
Registrado: Jue Mar 27, 2014 9:38 am
Ubicación: España

Re: Copiar contenido archivo de texto y enviar a portapapele

Mensaje por ElTíoLaVara »

Vale, creo que lo ya lo tengo. Por alguna razón estaba empeñado en hacer las cosas más complicadas de lo necesario... :knock:

Pero ahora tengo otro pequeño problema. Al leer el archivo de texto y copiarlo al portapapeles, no respeta los saltos de línea que he introducido al formatear el documento.
Esta es la macro que tengo para leer el archivo

Código: Seleccionar todo

Sub ReadFile

Dim i As Integer
Dim sLine, sTemp, sText As String

sTemp = "C:\TestFile.txt"
i = FreeFile

Open sTemp For Input As i
Do While Not eof(i)
Input #i, sLine
	sText = sText & sLine & Chr(10)
Loop
Close #i

BIT_SetClipboard(sText)
End Sub
Si el contenido del archivo de texto es, por ejemplo:

Código: Seleccionar todo

Celda A1 = 500

Celda B1 = 1000
Cuando pego el contenido del portapapeles la línea en blanco desaparece:

Código: Seleccionar todo

Celda A1 = 500
Celda B1 = 1000
¿Alguna idea de cómo solucionarlo?

Saludos
OpenOffice 4.0.1 - Windows 7 Profesional 64bits
Avatar de Usuario
SLV-es
Mensajes: 4894
Registrado: Jue Ago 26, 2010 1:25 am
Ubicación: España
Contactar:

Re: Copiar contenido archivo de texto y enviar a portapapele

Mensaje por SLV-es »

Creo recordar que los saltos de línea (lf) son Chr(10), y los intros (lf+ff) son Chr(10)+Chr(12)
+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
ElTíoLaVara
Mensajes: 6
Registrado: Jue Mar 27, 2014 9:38 am
Ubicación: España

Re: Copiar contenido archivo de texto y enviar a portapapele

Mensaje por ElTíoLaVara »

Recuerdas bien SLV-es, funciona a la perfección :D ¡Muchas gracias!

EDITO: He acortado un poco el título para poder añadir resuelto.
OpenOffice 4.0.1 - Windows 7 Profesional 64bits
Responder