[RESUELTO] Macro para importar archivos txt a calc

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

[RESUELTO] Macro para importar archivos txt a calc

Notapor alexisarteta » Jue Sep 28, 2017 3:04 pm

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
alexisarteta
 
Mensajes: 23
Registrado: Mié Sep 20, 2017 2:11 pm

Re: Macro para importar archivos txt a calc

Notapor mauricio » Jue Sep 28, 2017 3:05 pm

¿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
Avatar de Usuario
mauricio
 
Mensajes: 5827
Registrado: Sab Nov 22, 2008 5:36 am
Ubicación: CDMX

Re: Macro para importar archivos txt a calc

Notapor alexisarteta » Jue Sep 28, 2017 3:07 pm

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
alexisarteta
 
Mensajes: 23
Registrado: Mié Sep 20, 2017 2:11 pm

Re: Macro para importar archivos txt a calc

Notapor mauricio » Jue Sep 28, 2017 3:19 pm

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
mauricio
 
Mensajes: 5827
Registrado: Sab Nov 22, 2008 5:36 am
Ubicación: CDMX

Re: Macro para importar archivos txt a calc

Notapor PepeOooSevilla » Jue Sep 28, 2017 5:46 pm

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.1.5 en Windows 7 / 10
Por favor, utiliza el Foro para tus consultas, no los mensajes privados
Avatar de Usuario
PepeOooSevilla
 
Mensajes: 1066
Registrado: Sab Abr 04, 2009 6:10 pm
Ubicación: Sevilla (España)

Re: Macro para importar archivos txt a calc

Notapor alexisarteta » Jue Sep 28, 2017 5:54 pm

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) 116 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

Notapor alexisarteta » Jue Sep 28, 2017 6:02 pm

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
alexisarteta
 
Mensajes: 23
Registrado: Mié Sep 20, 2017 2:11 pm

Re: Macro para importar archivos txt a calc

Notapor mauricio » Vie Sep 29, 2017 1:08 am

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
mauricio
 
Mensajes: 5827
Registrado: Sab Nov 22, 2008 5:36 am
Ubicación: CDMX

Re: Macro para importar archivos txt a calc

Notapor fornelasa » Vie Sep 29, 2017 7:00 pm

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

Re: Macro para importar archivos txt a calc

Notapor alexisarteta » Vie Sep 29, 2017 9:31 pm

: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

Notapor alexisarteta » Vie Sep 29, 2017 10:59 pm

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   Expandir vistaContraer vista
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
alexisarteta
 
Mensajes: 23
Registrado: Mié Sep 20, 2017 2:11 pm

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

Notapor fornelasa » Sab Sep 30, 2017 12:45 am

Únicamente debes modificar/cambiar la tercer linea aquí/así:
Código: Seleccionar todo   Expandir vistaContraer vista
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!
Avatar de Usuario
fornelasa
 
Mensajes: 3216
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

Notapor alexisarteta » Sab Sep 30, 2017 2:42 pm

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   Expandir vistaContraer vista
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
alexisarteta
 
Mensajes: 23
Registrado: Mié Sep 20, 2017 2:11 pm


Volver a Macros y API UNO

¿Quién está conectado?

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