[RESUELTO] Macro para importar archivos txt a calc

Desarrollo de Macros y programación en UNO, usar las API, llamar programas externos...
Responder
alexisarteta
Mensajes: 23
Registrado: Mié Sep 20, 2017 2:11 pm

[RESUELTO] Macro para importar archivos txt a calc

Mensaje por alexisarteta »

Buenas de que manera puedo hacer una Macro importar un archivo txt, a una hoja de calc?
Última edición por fornelasa el Vie Sep 29, 2017 9:42 pm, editado 2 veces en total.
Razón: Agregar icono de resuelto.
OpenOffice 3.3.0 en Windows 7 Profesional
Avatar de Usuario
mauricio
Mensajes: 6092
Registrado: Sab Nov 22, 2008 5:36 am
Ubicación: CDMX
Contactar:

Re: Macro para importar archivos txt a calc

Mensaje por mauricio »

¿Has realizado una búsqueda en estos foros?, creo recordar se ha respondido varias veces esta pregunta.

Saludos
______________________________________________
"Todo cuanto no podemos dar nos posee". - André Gide
LibreOffice 6.2 | ArchLinux | Gnome3
No respondo preguntas privadas, por favor, usa el foro
alexisarteta
Mensajes: 23
Registrado: Mié Sep 20, 2017 2:11 pm

Re: Macro para importar archivos txt a calc

Mensaje por alexisarteta »

Hola Mauricio solo vi una, pero no esta RESUELTO, descargue el archivo que ahi utilizan como ejemplo pero no me funciona
OpenOffice 3.3.0 en Windows 7 Profesional
Avatar de Usuario
mauricio
Mensajes: 6092
Registrado: Sab Nov 22, 2008 5:36 am
Ubicación: CDMX
Contactar:

Re: Macro para importar archivos txt a calc

Mensaje por mauricio »

Por aquí resolví una importación especial de TXT:
https://forum.openoffice.org/es/forum/v ... portar+txt

Intenta aplicarlo, si no, mira el mismo tema para ver toda la información que requieres proporcionar a quien quiera ayudarte.

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
PepeOooSevilla
Mensajes: 1480
Registrado: Sab Abr 04, 2009 6:10 pm
Ubicación: Sevilla (España)

Re: Macro para importar archivos txt a calc

Mensaje por PepeOooSevilla »

Hola.
Como ha dicho mauricio, si pudieras dar más información y, mejor aún, subir un TXT de ejemplo, tal vez te podamos ayudar.
Saludos cordiales.
LibreOffice 6.4.6. 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.
alexisarteta
Mensajes: 23
Registrado: Mié Sep 20, 2017 2:11 pm

Re: Macro para importar archivos txt a calc

Mensaje por alexisarteta »

Bueno es simplemente importar este archivo TXT a una hoja de calc, si es posible programando un botón que busque el archivo que se desea importar, el archivo siempre tiene la misma estructura
Adjuntos
Datos Tablero Domicilio.zip
(67.86 KiB) Descargado 377 veces
OpenOffice 3.3.0 en Windows 7 Profesional
alexisarteta
Mensajes: 23
Registrado: Mié Sep 20, 2017 2:11 pm

Re: Macro para importar archivos txt a calc

Mensaje por alexisarteta »

mauricio escribió:Por aquí resolví una importación especial de TXT:
https://forum.openoffice.org/es/forum/v ... portar+txt

Intenta aplicarlo, si no, mira el mismo tema para ver toda la información que requieres proporcionar a quien quiera ayudarte.

Saludos
Mauricio es que Phyton no corre en mi openoffice, desconozco la razon
OpenOffice 3.3.0 en Windows 7 Profesional
Avatar de Usuario
mauricio
Mensajes: 6092
Registrado: Sab Nov 22, 2008 5:36 am
Ubicación: CDMX
Contactar:

Re: Macro para importar archivos txt a calc

Mensaje por mauricio »

Tu archivo es bastante estandar, agregar un botón queda exactamente igual que ir a Archivo -> Abrir y seleccionar en Aceptar... salvo que quieras automatizar más tareas con el, no le veo caso agregar la macro.

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
fornelasa
Mensajes: 3268
Registrado: Jue Feb 17, 2011 8:30 pm
Ubicación: Estado de México, México.

Re: Macro para importar archivos txt a calc

Mensaje por fornelasa »

También en base a tu archivo pudiera ser:
solo cambia tu ruta/carpeta ya que esta macro no busca el file, va directo al archivo (es más practico).
Archivo ejemplo
Saludos, Federico.
Adjuntos
ImportarTXT.ods
Importar datos
(9.99 KiB) Descargado 470 veces
lo 6.2.0 | aoo 4.1.6 | win 7/10
¡Un aplauso para todos los que luchan por proteger y promover la Web abierta!
alexisarteta
Mensajes: 23
Registrado: Mié Sep 20, 2017 2:11 pm

Re: Macro para importar archivos txt a calc

Mensaje por alexisarteta »

:bravo: Muchisimas gracias, es exactamente lo que necesitaba..., eres el mejor. :bravo:
OpenOffice 3.3.0 en Windows 7 Profesional
alexisarteta
Mensajes: 23
Registrado: Mié Sep 20, 2017 2:11 pm

Re: [RESUELTO] Macro para importar archivos txt a calc

Mensaje por alexisarteta »

hola el codigo funciona bien para una hoja activa, pero quiero hacerlo por el nombre de la hoja pero me da error, te indico cual linea modifique:

Código: Seleccionar todo

Sub AbrirTXT()
dim ctrl, marco,desti, oDoc, document, bctrl, orig, cursor, origen, sruta, dispatcher
 		ctrl = ThisComponent.CurrentController
       marco = ctrl.Frame  
       desti = ctrl.ActiveSheet.getCellRangeByName("A1")
        	 Dim mArg(1) As New com.sun.star.beans.PropertyValue
       		 sRuta = ConvertToURL("C:\Users\alarteta\Documents\Alexis Arteta\Domicilios 2017\datos tablero domicilio.txt") ' 
             mArg(0).Name = "FilterName"
             mArg(0).Value = "Text - txt - csv (StarCalc)"
             mArg(1).Name = "FilterOptions"
             mArg(1).Value = "59/9"
        oDoc = StarDesktop.loadComponentFromURL(sRuta, "_blank", 0, mArg())    
    document = oDoc.CurrentController.Frame  
       bctrl = ThisComponent.Sheets.getByName("detalle") 'document.Controller.ActiveSheet <----------- Cambie esta linea y da error
        orig = bctrl.getCellRangeByName ("A1")   
      cursor = bctrl.createCursorByRange(orig)
       			cursor.collapseToCurrentRegion   
      origen = bctrl.getCellRangeByName(cursor.absoluteName)   
		     document.Controller.select(origen)  <----------------------------------------------Linea donde se produce el error Type: com.sun.star.IlegalArgumentsException
             dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")
             dispatcher.executeDispatch(document, ".uno:Copy", "", 0, Array())
             document.Close(True)
    ctrl.Select(desti)
    dispatcher.executeDispatch(marco, ".uno:Paste", "", 0, Array())
End Sub
OpenOffice 3.3.0 en Windows 7 Profesional
Avatar de Usuario
fornelasa
Mensajes: 3268
Registrado: Jue Feb 17, 2011 8:30 pm
Ubicación: Estado de México, México.

Re: [RESUELTO] Macro para importar archivos txt a calc

Mensaje por fornelasa »

Únicamente debes modificar/cambiar la tercer linea aquí/así:

Código: Seleccionar todo

desti = ThisComponent.Sheets.getByName("tuHoja").getCellRangeByName("A1")
Saludos, Federico.
lo 6.2.0 | aoo 4.1.6 | win 7/10
¡Un aplauso para todos los que luchan por proteger y promover la Web abierta!
alexisarteta
Mensajes: 23
Registrado: Mié Sep 20, 2017 2:11 pm

Re: [RESUELTO] Macro para importar archivos txt a calc

Mensaje por alexisarteta »

Excelente Muchas, Muchísimas Gracias.

Comparto el codigo para quien pueda servirle, pero ahora con una modificación con otro que conseguí en el foro, y sirve para escoger cualquier archivo abriendo la ventana para escogerlo

Código: Seleccionar todo

Sub AbrirTXT()

'***************Esta seccion de codigo abre la ventana para escoger el archivo

Dim oDlgAbrirArchivo as Object
Dim mArchivo() As String
Dim mOpciones()
Dim sRuta As String
Dim oDoc As Object
dim sys

   'Creamos el servicio necesario
   oDlgAbrirArchivo = CreateUnoService ("com.sun.star.ui.dialogs.FilePicker")
   'Establecemos el título del cuadro de diálogo
   oDlgAbrirArchivo.setTitle("Selecciona el archivo a abrir")
   
   'Con el método .Execute() mostramos el cuadro de diálogo
   'Si el usuario presiona Abrir el método devuelve 1 que podemos evaluar como Verdadero (True)
   'Si presiona Cancelar devuelve 0
   If oDlgAbrirArchivo.Execute() Then
      'De forma predeterminada, solo se puede seleccionar un archivo
      'pero devuelve una matriz de todos modos con la ruta completa
      'del archivo en formato URL
      mArchivo() = oDlgAbrirArchivo.getFiles()
      'El primer elemento de la matriz es el archivo seleccionado
      sRuta = mArchivo(0)
      'Y lo abrimos
      'sys = CreateUnoService("com.sun.star.system.SystemShellExecute") <------- Si quieres abrir el archivo directamente debes activar esta linea
'------------------------------------------------------------------------------
'Abre el documento en el visor predeterminado
      'sys.execute( sRuta, "", 0)   <------- Si quieres abrir el archivo directamente debes activar esta linea
   Else
      'Si el usuario presiona Cancelar
      MsgBox "Proceso cancelado"
   End If


'*****************Esta seccion de codigo lo importa a una hoja en calc
dim ctrl, marco,desti,  document, bctrl, orig, cursor, origen,  dispatcher 'oDoc, sruta,
 		ctrl = ThisComponent.CurrentController
       marco = ctrl.Frame  
       desti = ThisComponent.Sheets.getByName("detalle").getCellRangeByName("A1") 'desti = ctrl.ActiveSheet.getCellRangeByName("A1")
        	 Dim mArg(1) As New com.sun.star.beans.PropertyValue
       		 'sRuta = ConvertToURL(mArchivo())' ConvertToURL("C:\Users\alarteta\Documents\Alexis Arteta\Domicilios 2017\datos tablero domicilio.txt") ' < ----- OJO txt
             mArg(0).Name = "FilterName"
             mArg(0).Value = "Text - txt - csv (StarCalc)"
             mArg(1).Name = "FilterOptions"
             mArg(1).Value = "59/9"
        oDoc = StarDesktop.loadComponentFromURL(sRuta, "_blank", 0, mArg())    
    document = oDoc.CurrentController.Frame  
       bctrl = document.Controller.ActiveSheet'ThisComponent.Sheets.getByName("detalle") 
        orig = bctrl.getCellRangeByName ("A1")   
      cursor = bctrl.createCursorByRange(orig)
       			cursor.collapseToCurrentRegion   
      origen = bctrl.getCellRangeByName(cursor.absoluteName)   
		     document.Controller.select(origen)  
             dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")
             dispatcher.executeDispatch(document, ".uno:Copy", "", 0, Array())
             document.Close(True)
    ctrl.Select(desti)
    dispatcher.executeDispatch(marco, ".uno:Paste", "", 0, Array())
    
    
    msgbox("El Archivo se Cargó Correctamente")
    
END SUB
OpenOffice 3.3.0 en Windows 7 Profesional
Responder