Ayuda con txt en Macro basic
-
- Mensajes: 6
- Registrado: Jue Mar 26, 2009 12:44 am
Ayuda con txt en Macro basic
Hola, necesito ayuda urgente, tengo una planilla en calc, la cual debe tomar datos de un txt (porcvta.txt), los datos del txt están separados por espacios.
Despues de eso, los tengo que ordenar, que eso ta, busco y veo como lo hago, pero bajé un ejemplo de tomar un txt y no me funciona.
Gracias por la ayuda, espero respuestas
Despues de eso, los tengo que ordenar, que eso ta, busco y veo como lo hago, pero bajé un ejemplo de tomar un txt y no me funciona.
Gracias por la ayuda, espero respuestas
Re: Ayuda con txt en Macro basic
Si no funcione este código, puede usted adjuntar un archivo txt?
Código: Seleccionar todo
Dim Propval(1) as New com.sun.star.beans.PropertyValue
Propval(0).Name = "FilterName"
Propval(0).Value = "Text - txt - csv (StarCalc)"
Propval(1).Name = "FilterOptions"
Propval(1).Value ="32,34,0,1,1" 'ASCII 32 = espacio
NombreArchivo = "C:\Documents and Settings\username\Desktop\Archivo.txt" 'Cambie al archivo correcto
ArchivoURL = convertToURL(NombreArchivo)
oCSV = StarDesktop.loadComponentFromURL(ArchivoURL, "_blank", 0, Propval())
-
- Mensajes: 6
- Registrado: Jue Mar 26, 2009 12:44 am
Re: Ayuda con txt en Macro basic
Muchas gracias FJCC-ES, anduvo impecable el código, si sabes tambien, te podria pasar el archivo, para ver como me queda.
Despues estoy buscando ordenarlo, se que es mas complicado, pero si tienes algun ejemplo que me sirva, te agradeceria.
Despues estoy buscando ordenarlo, se que es mas complicado, pero si tienes algun ejemplo que me sirva, te agradeceria.
Re: Ayuda con txt en Macro basic
Este código ordena A1:C16
Código: Seleccionar todo
Dim Hoja, Celda, Cellrange
Dim PropVal(4) as New com.sun.star.beans.PropertyValue
Dim aSortFields(1) as New com.sun.star.table.TableSortField
Doc = ThisComponent
Hoja = Doc.Sheets.getByName("Hoja1")
Cellrange = Hoja.getCellRangeByPosition(0,0,2,15) 'A1:C16 Columna A = índice 0, Fila 1 = índice 0
Celda = Hoja.getCellByPosition(0,20) ' A21
aSortFields(0).Field = 0 'Ordenar primero por la primera columna en CellRange
aSortFields(0).IsAscending = "True"
aSortFields(1).Field = 1 'y después ordena por la segunda columna en CellRange
aSortFields(1).IsAscending = "True"
PropVal(0).Name = "SortFields"
PropVal(0).Value = aSortFields()
PropVal(1).Name = "IsSortColumns"
PropVal(1).Value = False
PropVal(2).Name = "OutputPosition" 'pon el resultado en la posición de Celda
PropVal(2).Value = Celda.CellAddress
PropVal(3).Name = "CopyOutputData"
PropVal(3).Value = True
PropVal(4).Name = "ContainsHeader" 'La primera fila contiene títulos
PropVal(4).Value = True
Cellrange.sort(PropVal())
-
- Mensajes: 6
- Registrado: Jue Mar 26, 2009 12:44 am
Re: Ayuda con txt en Macro basic
Te envio el archivo que tengo que tomar en la macro...es un txt
Gracias
Gracias
- Adjuntos
-
- Macro.zip
- Va el archivo xls y el txt...También lo tengo guardado como odt
- (13.19 KiB) Descargado 334 veces
Re: Ayuda con txt en Macro basic
Ahora entiendo el problema. Los espacios en el archivo significan dos cosas
1.Separan columnas de datos
2.Separan palabras - MISTRAL BOXER CLASICO tiene dos espacios pero la intención es que permanezca en la misma columna
Es difícil escribir una macro que distingue entre los dos significados. ¿Se puede usar comas para separar los datos en el txt?
1.Separan columnas de datos
2.Separan palabras - MISTRAL BOXER CLASICO tiene dos espacios pero la intención es que permanezca en la misma columna
Es difícil escribir una macro que distingue entre los dos significados. ¿Se puede usar comas para separar los datos en el txt?
-
- Mensajes: 6
- Registrado: Jue Mar 26, 2009 12:44 am
Re: Ayuda con txt en Macro basic
Hola, gracias por ver el tema, los espacios en el txt son divisores de datos...
Podrias ayudarme, ya se que te he molestado, pero la verdad lo necesito.
Gracias nuevamente
Podrias ayudarme, ya se que te he molestado, pero la verdad lo necesito.
Gracias nuevamente
Re: Ayuda con txt en Macro basic
Aquí está una macro nueva. Está versión no usa espacios para separar los datos, usa la opción “Ancho fijo”. Dudo que los datos en otros archivos tengan el mismo ancho, pero mas que esto no puedo hacer.
Código: Seleccionar todo
Dim Propval(1) as New com.sun.star.beans.PropertyValue
Propval(0).Name = "FilterName"
Propval(0).Value = "Text - txt - csv (StarCalc)"
Propval(1).Name = "FilterOptions"
Propval(1).Value ="FIX,34,0,1,0/1/1/1/28/1/39/1/47/1/52/1/59/1/65/1/70/1"
'Fix = Ancho Fijo, 34 = el arácter " marca texto, 0 = juego de caracteres predeterminado, 1 = empezar con la fila primera
'0/1 significa que el dato primero empieza en posición 0 y es de el tipo predeterminado, Los otros datos empiezan en posiciones
' 1,28,39,47,52,59,65,70 y todos son de el tipo predeterminado
NombreArchivo = "C:\Documents and Settings\username\Desktop\porcvta.txt" 'Cambie al archivo correcto
ArchivoURL = convertToURL(NombreArchivo)
oCSV = StarDesktop.loadComponentFromURL(ArchivoURL, "_blank", 0, Propval())
'Ordenar Filas 1 y 2
Hoja = oCSV.Sheets.getByIndex(0)
Cellrange = Hoja.getCellRangeByPosition(1,0,4,0)
Cell1 = CellRange.getCellByPosition(0,0)
For i = 1 to 3
Cell2 = CellRange.getCellByPosition(i,0)
Cell1.String = Cell1.String + Cell2.String
Cell2.String = ""
Next i
CellRange.Merge(True)
Cell1 = Hoja.getCellByPosition(6,0)
Cell2 = Hoja.getCellByPosition(7,0)
Cell1.String = Cell1.String + Cell2.String
Cell2.String = ""
Cell1 = Hoja.getCellByPosition(2,1)
Cell2 = Hoja.getCellByPosition(3,1)
Cell1.String = Cell1.String + Cell2.String
Cell2.String = ""
-
- Mensajes: 6
- Registrado: Jue Mar 26, 2009 12:44 am
Re: Ayuda con txt en Macro basic
Muchisimas gracias...la verdad me salvaste.
Impecable el código.
Anda muy bien, el ancho fijo y los datos bien ordenados.
La verdad muy buena la ayuda
Impecable el código.
Anda muy bien, el ancho fijo y los datos bien ordenados.
La verdad muy buena la ayuda