Exportar Excel a fichero plano (txt) con "|" como delimitador de c

03/11/2004 - 12:08 por Beatriz Ramos | Informe spam
Hola,
deseo exportar una hoja Excel a un fichero txt. Excel 2003 me separa los
campos por tabuladores y no encuentro manera de hacerlo cambiar ese
delimitador por el simbolo "|". A parte de usar ese delimitador quiero q me
entrecomille los datos. Es decir, que tenga el siguiente aspecto:
"4000000003"|"Proveedor Nacional 1"|"pepito"
"999999999"|"Acreedor Varios"|"ACREED"
"V00010"|"Proveedor 1"|"NAC"

En vez de:
Alcobendas 28100
Alcobendas 28108

Gracias
 

Leer las respuestas

#1 Fernando Arroyo
03/11/2004 - 16:11 | Informe spam
Lo puedes hacer usando VBA, algo parecido a:


Sub ExportarDelimitado()
Dim wksH As Worksheet
Dim intFich As Integer, lngNumReg As Long, strCad As String
Dim lngContL As Long, intContC As Integer, n As Long

Set wksH = Worksheets("Hoja1") 'Hoja donde están los datos

intFich = FreeFile(0)
lngContL = 2 'Se empezará a exportar en la fila 2 (se entiende que la 1ª es de títulos)
intContC = 3 'Se exportarán las columnas 1 a 3

If Dir("C:\Fichero.txt") <> "" Then Kill ("C:\Fichero.txt") 'Si ya existe C:\Fichero.txt, lo borra.
Open "C:\Fichero.txt" For Output As intFich

While Not IsEmpty(wksH.Cells(lngContL, 1))

For n = 1 To intContC
strCad = strCad & """" & wksH.Cells(lngContL, n) & """|"
Next n

strCad = Left(strCad, Len(strCad) - 1) 'Para quitar el último delimitador por la derecha

Print #intFich, strCad

lngContL = lngContL + 1
strCad = ""
Wend

Close intFich

Set wksH = Nothing
End Sub


Un saludo.


Fernando Arroyo
MS MVP - Excel


"Beatriz Ramos" escribió en el mensaje news:
Hola,
deseo exportar una hoja Excel a un fichero txt. Excel 2003 me separa los
campos por tabuladores y no encuentro manera de hacerlo cambiar ese
delimitador por el simbolo "|". A parte de usar ese delimitador quiero q me
entrecomille los datos. Es decir, que tenga el siguiente aspecto:
"4000000003"|"Proveedor Nacional 1"|"pepito"
"999999999"|"Acreedor Varios"|"ACREED"
"V00010"|"Proveedor 1"|"NAC"

En vez de:
Alcobendas 28100
Alcobendas 28108

Gracias


Preguntas similares