Exportar fichero de Excel a fichero prn

16/11/2004 - 12:42 por Joluco | Informe spam
Hola a todos,
He leído un mensaje de Fernando Arroyo para exportar un fichero xls con a
texto plano delimitado con "|" y me ha venido muy bien.
Ahora mi problema está en que he querido modificar las órdenes para exportar
otra hoja como texto delimitado por espacios (prn) y no consigo hacerlo bien
(soy novato en VB).
Alguien me puede ayudar.

Gracias.

Ah, y de paso quisiera saber si una vez exportado como prn puedo grabarlo
como txt directamente. Es para subirlo a la web y mi servidor no lee
ficheros prn. Por eso tengo que hacerlo dos veces: primero exportar como prn
y luego abrir el prn y grabarlo como txt.
Gracias de nuevo

Preguntas similare

Leer las respuestas

#1 Fernando Arroyo
16/11/2004 - 17:24 | Informe spam
"Joluco" escribió en el mensaje news:
Hola a todos,
He leído un mensaje de Fernando Arroyo para exportar un fichero xls con a
texto plano delimitado con "|" y me ha venido muy bien.
Ahora mi problema está en que he querido modificar las órdenes para exportar
otra hoja como texto delimitado por espacios (prn) y no consigo hacerlo bien
(soy novato en VB).
Alguien me puede ayudar.




Convendría que nos pusieras el código que estás intentando usar.

Gracias.

Ah, y de paso quisiera saber si una vez exportado como prn puedo grabarlo
como txt directamente. Es para subirlo a la web y mi servidor no lee
ficheros prn. Por eso tengo que hacerlo dos veces: primero exportar como prn
y luego abrir el prn y grabarlo como txt.
Gracias de nuevo





Me temo que no entiendo. Los ficheros que Excel graba con la extensión .prn son de texto delimitado con espacios. Si el servidor acepta el tipo de fichero (texto) pero no "le gusta" la extensión, pienso que lo único que tendrías que hacer es cambiarla.
Un saludo.


Fernando Arroyo
MS MVP - Excel
Respuesta Responder a este mensaje
#2 Joluco
16/11/2004 - 18:47 | Informe spam
Tienes toda la razón. Olvidé lo más importante. Para ser mi primer mensaje
al grupo me he lucido :-). Lo siento.
Este es el código que tengo para exportar como txt delimitado con "|":
Sub Exportar()
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 = 1 'Se empezará a exportar en la fila 1
intContC = 38 'Se exportarán las columnas 1 a 38

If Dir("C:\Archivo.txt") <> "" Then Kill ("C:\Archivo.txt") 'Si ya
existe C:\Archivo.txt, lo borra.
Open "C:\Archivo.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
-
¿Qué debo cambiar para exportar la hoja como ".prn."?
Muchas gracias de antemano y perdona las molestias.
Respuesta Responder a este mensaje
#3 Fernando Arroyo
17/11/2004 - 09:26 | Informe spam
"Joluco" escribió en el mensaje news:
Tienes toda la razón. Olvidé lo más importante. Para ser mi primer mensaje
al grupo me he lucido :-). Lo siento.



No pasa nada. Muchas veces no es necesario publicar todo el código, pero en este caso concreto sí convenía hacerlo porque hay varias formas de exportar texto y convenía saber cual estabas usando.

Este es el código que tengo para exportar como txt delimitado con "|":
Sub Exportar()
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 = 1 'Se empezará a exportar en la fila 1
intContC = 38 'Se exportarán las columnas 1 a 38

If Dir("C:\Archivo.txt") <> "" Then Kill ("C:\Archivo.txt") 'Si ya
existe C:\Archivo.txt, lo borra.
Open "C:\Archivo.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
-
¿Qué debo cambiar para exportar la hoja como ".prn."?



Creo que el código que necesitas quedaría así:


Sub Exportar()
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 = 1 'Se empezará a exportar en la fila 1
intContC = 38 'Se exportarán las columnas 1 a 38

If Dir("C:\Archivo.prn") <> "" Then Kill ("C:\Archivo.prn") 'Si ya existe C:\Archivo.prn, lo borra.
Open "C:\Archivo.prn" 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


La diferencia entre cómo quedará el fichero .prn al exportar los datos usando el código anterior y cómo quedarían usando el tipo .prn de Excel es que Excel "tabula" los datos añadiendo espacios para que todas las "columnas" tengan el mismo tamaño, mientras que el código anterior no lo hace: el único separador será un espacio.


Muchas gracias de antemano y perdona las molestias.




No es ninguna molestia. Si no te funciona bien, no dudes en seguir preguntando :-)
Un saludo.


Fernando Arroyo
MS MVP - Excel
Respuesta Responder a este mensaje
#4 Joluco
17/11/2004 - 10:09 | Informe spam
La diferencia entre cómo quedará el fichero .prn al exportar los datos


usando el código anterior y cómo quedarían usando el tipo .prn de Excel es
que Excel "tabula" los datos añadiendo espacios para que todas las
"columnas" tengan el mismo tamaño, mientras que el código anterior no lo
hace: el único separador será un espacio.

Perdona mi insistencia, pero precisamente era eso lo que buscaba: que el
código añadiese los mismos espacios que Excel para que las columnas fueran
del mismo tamaño. Eso es lo que no consigo averiguar... :-)

Gracias Fernando
Respuesta Responder a este mensaje
#5 KL
17/11/2004 - 10:19 | Informe spam
Solo en plan idea descabellada i sin haberla probado - ?y si es para output
y copiando todos los datos de las columnas 1 a 38 por que no usar el metodo
SaveAs habiendo limpiado la hoja previamente (p.ej: borrando las columnas 39
para arriba) y luego abrirlo para input y reemplazar el delimitador segun lo
q haga falta (de hecho no se si se podria hacerlo al hacer SaveAs, igual
si)?

KL

"Fernando Arroyo" wrote in message
news:
"Joluco" escribió en el mensaje
news:
Tienes toda la razón. Olvidé lo más importante. Para ser mi primer mensaje
al grupo me he lucido :-). Lo siento.



No pasa nada. Muchas veces no es necesario publicar todo el código, pero en
este caso concreto sí convenía hacerlo porque hay varias formas de exportar
texto y convenía saber cual estabas usando.

Este es el código que tengo para exportar como txt delimitado con "|":
Sub Exportar()
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 = 1 'Se empezará a exportar en la fila 1
intContC = 38 'Se exportarán las columnas 1 a 38

If Dir("C:\Archivo.txt") <> "" Then Kill ("C:\Archivo.txt") 'Si ya
existe C:\Archivo.txt, lo borra.
Open "C:\Archivo.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
-
¿Qué debo cambiar para exportar la hoja como ".prn."?



Creo que el código que necesitas quedaría así:


Sub Exportar()
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 = 1 'Se empezará a exportar en la fila 1
intContC = 38 'Se exportarán las columnas 1 a 38

If Dir("C:\Archivo.prn") <> "" Then Kill ("C:\Archivo.prn") 'Si ya
existe C:\Archivo.prn, lo borra.
Open "C:\Archivo.prn" 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


La diferencia entre cómo quedará el fichero .prn al exportar los datos
usando el código anterior y cómo quedarían usando el tipo .prn de Excel es
que Excel "tabula" los datos añadiendo espacios para que todas las
"columnas" tengan el mismo tamaño, mientras que el código anterior no lo
hace: el único separador será un espacio.


Muchas gracias de antemano y perdona las molestias.




No es ninguna molestia. Si no te funciona bien, no dudes en seguir
preguntando :-)
Un saludo.


Fernando Arroyo
MS MVP - Excel
Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaSiguiente Respuesta Tengo una respuesta
Search Busqueda sugerida