[RESUELTO] Macro para importar archivos txt a calc
Publicado: Jue Sep 28, 2017 3:04 pm
Buenas de que manera puedo hacer una Macro importar un archivo txt, a una hoja de calc?
Los foros en español de la comunidad de Apache OpenOffice (y LibreOffice). En tu idioma desde el 2008, ayudándote a usar tu libertad.
https://forum.openoffice.org/es/forum/
Mauricio es que Phyton no corre en mi openoffice, desconozco la razonmauricio 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
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
Código: Seleccionar todo
desti = ThisComponent.Sheets.getByName("tuHoja").getCellRangeByName("A1")
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