Ver Mensaje Individual
  #4 (permalink)  
Antiguo 24/02/2011, 13:16
Avatar de mrocf
mrocf
 
Fecha de Ingreso: marzo-2007
Ubicación: Bs.As.
Mensajes: 1.103
Antigüedad: 19 años, 6 meses
Puntos: 88
De acuerdo 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