Página 1 de 1

[RESUELTO] Macro para importar archivos txt a calc

Publicado: Jue Sep 28, 2017 3:04 pm
por alexisarteta
Buenas de que manera puedo hacer una Macro importar un archivo txt, a una hoja de calc?

Re: Macro para importar archivos txt a calc

Publicado: Jue Sep 28, 2017 3:05 pm
por mauricio
¿Has realizado una búsqueda en estos foros?, creo recordar se ha respondido varias veces esta pregunta.

Saludos

Re: Macro para importar archivos txt a calc

Publicado: Jue Sep 28, 2017 3:07 pm
por alexisarteta
Hola Mauricio solo vi una, pero no esta RESUELTO, descargue el archivo que ahi utilizan como ejemplo pero no me funciona

Re: Macro para importar archivos txt a calc

Publicado: Jue Sep 28, 2017 3:19 pm
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

Re: Macro para importar archivos txt a calc

Publicado: Jue Sep 28, 2017 5:46 pm
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.

Re: Macro para importar archivos txt a calc

Publicado: Jue Sep 28, 2017 5:54 pm
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

Re: Macro para importar archivos txt a calc

Publicado: Jue Sep 28, 2017 6:02 pm
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

Re: Macro para importar archivos txt a calc

Publicado: Vie Sep 29, 2017 1:08 am
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

Re: Macro para importar archivos txt a calc

Publicado: Vie Sep 29, 2017 7:00 pm
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.

Re: Macro para importar archivos txt a calc

Publicado: Vie Sep 29, 2017 9:31 pm
por alexisarteta
:bravo: Muchisimas gracias, es exactamente lo que necesitaba..., eres el mejor. :bravo:

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

Publicado: Vie Sep 29, 2017 10:59 pm
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

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

Publicado: Sab Sep 30, 2017 12:45 am
por fornelasa
Únicamente debes modificar/cambiar la tercer linea aquí/así:

Código: Seleccionar todo

desti = ThisComponent.Sheets.getByName("tuHoja").getCellRangeByName("A1")
Saludos, Federico.

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

Publicado: Sab Sep 30, 2017 2:42 pm
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