24/02/2011, 13:16
|
| | | Fecha de Ingreso: marzo-2007 Ubicación: Bs.As.
Mensajes: 1.103
Antigüedad: 17 años, 7 meses Puntos: 88 | |
Funcion para asignar Caracteres a un Texto con V B O sea que las respuestas a mis re-preguntas son:
-> Si, quise decir "dar formato" (numberformat no es una función sino una propiedad)
-> No tienes campos numéricos que multiplicar por 100
-> Todos los campos numéricos tienen una longitud especificada
-> Las tabulaciones son del archivo de texto generado
________________________
Para evitar entrar en el problema de generar un archivo de texto con tabulaciones innecesarias, pues -simplemente- no lo generamos así.
Una alternativa sería (considero que tu BD tiene sólo 3 columnas): Código PHP: Sub Grabar_fichero_de_texto() Dim misLong, i As Byte, miForm As String, Fichero As String misLong = Array(10, 6, 20) Application.ScreenUpdating = False
With ThisWorkbook ActiveSheet.Copy After:=.Sheets(.Sheets.Count) End With With Range([a1], [a1].SpecialCells(xlCellTypeLastCell)) .Value = .Value End With
For i = 0 To UBound(misLong) miForm = miForm & "&Te(" & _ Cells(1, i + 1).Address(False, False) & "," & _ CByte(misLong(i)) & ")" Next i With Range("AA1:AA" & [a1].End(xlDown).Row) .Formula = "=" & Right(miForm, Len(miForm) - 1) .NumberFormat = "@" .Value = .Value End With
[a:z].Delete ActiveSheet.Move
Fichero = ThisWorkbook.FullName Fichero = Left(Fichero, InStr(Fichero, ".") - 1) & ".txt" If Dir(Fichero) <> "" Then Kill Fichero ActiveWorkbook.SaveAs Filename:=Fichero, FileFormat:=xlText ActiveWorkbook.Close False
Application.ScreenUpdating = True End Sub
Function Te(rng As Range, Q As Byte) Te = Format(rng, String(Q, "0")) End Function
Como advierto que conoces del tema, será redundarte comentarte que el Variant "misLong" contiene las longitudes de los campos numéricos.
A tí te queda completar con las 10 restantes.
Además puedes constatar que para generar una sola columna con la información total, utilizo una función personalizada: "Te()".
¿Te sirve la idea?
Saludos, Cacho.
Última edición por mrocf; 24/02/2011 a las 13:22 |