El texto con formato (.prn) está limitado a 240 caracteres por línea en Excel
Síntomas
En Microsoft Excel, al guardar una hoja de cálculo como un archivo de texto con formato (delimitado por espacios) (.prn), los caracteres que superen los doscientos caracteres se ajustan a la línea siguiente.
Nota:
Si varias filas de la misma hoja contienen texto de más de 240 caracteres, el texto comienza a ajustarse en la fila posterior a la última fila que contiene texto.
Por ejemplo, tenga en cuenta la siguiente hoja:
Cell | Número de caracteres |
---|---|
A1 | 40 |
A2 | 255 |
A3 | 10 |
A4 | 21 |
A5 | 2 |
A6 | 52 |
A7 | 255 |
A8 | 5 |
A9 | 3 |
A20 | 13 |
El archivo de texto con formato resultante contiene líneas con el siguiente número de caracteres:
Número de línea | Characters |
---|---|
1 | 40 |
2 | 240 |
3 | 10 |
4 | 21 |
5 | 2 |
6 | 52 |
7 | 240 |
8 | 5 |
9 | 3 |
10-19 | 0 |
20 | 13 |
21 | 0 |
22 | 15 |
23-26 | 0 |
27 | 15 |
Después de la última línea (en este ejemplo, línea 20), la numeración de líneas comienza en 1 para las líneas que se ajustan. En efecto, la línea 21 corresponde a la línea 1, la línea 22 corresponde a la línea 2, etc.
Causa
Este comportamiento se produce porque, por diseño, los archivos de texto con formato (delimitados por espacios) (.prn) tienen un límite de 240 caracteres por línea.
Solución alternativa
Microsoft proporciona ejemplos de programación con fines ilustrativos únicamente, sin ninguna garantía, ya sea expresa o implícita. Esto incluye, entre otras, las garantías implícitas de comerciabilidad e idoneidad para un fin determinado. Se considera que está familiarizado con el lenguaje de programación que se muestra y con las herramientas para crear y depurar procedimientos. Los ingenieros de soporte técnico de Microsoft pueden explicarle la funcionalidad de un determinado procedimiento, pero no modificarán estos ejemplos para ofrecer mayor funcionalidad ni crearán procedimientos adaptados a sus necesidades específicas. Para crear un archivo de texto delimitado por espacios que supere la limitación de 240 caracteres por línea, use una macro similar a la siguiente macro de ejemplo.
Nota:
Antes de ejecutar esta macro, haga lo siguiente:
- Seleccione las celdas que se incluirán en el archivo de texto.
- Compruebe que los anchos de columna son lo suficientemente anchos como para ver la cadena más grande de cada columna. El ancho máximo de columna de una sola columna de Excel es de 255 caracteres cuando se le da formato con una fuente de ancho fijo.
- Use los comandos del menú Estilo para dar formato a la hoja de cálculo para que use una fuente de ancho fijo. Por ejemplo, Courier es una fuente de ancho fijo.
El código de ejemplo siguiente se puede modificar para exportar datos delimitados con caracteres distintos de un espacio. Debe seleccionar el intervalo de datos que se exportarán antes de ejecutar esta macro de ejemplo.
Sub ExportText()
Dim delimiter As String
Dim quotes As Integer
Dim Returned As String
delimiter = " "
quotes = MsgBox("Surround Cell Information with Quotes?", vbYesNo)
' Call the WriteFile function passing the delimiter and quotes options.
Returned = WriteFile(delimiter, quotes)
' Print a message box indicating if the process was completed.
Select Case Returned
Case "Canceled"
MsgBox "The export operation was canceled."
Case "Exported"
MsgBox "The information was exported."
End Select
End Sub
'------------------------------------------------------------
Function WriteFile(delimiter As String, quotes As Integer) As String
' Dimension variables to be used in this function.
Dim CurFile As String
Dim SaveFileName
Dim CellText As String
Dim RowNum As Integer
Dim ColNum As Integer
Dim FNum As Integer
Dim TotalRows As Double
Dim TotalCols As Double
' Show Save As dialog box with the .TXT file name as the default.
' Test to see what kind of system this macro is being run on.
If Left(Application.OperatingSystem, 3) = "Win" Then
SaveFileName = Application.GetSaveAsFilename(CurFile, _
"Text Delimited (*.txt), *.txt", , "Text Delimited Exporter")
Else
SaveFileName = Application.GetSaveAsFilename(CurFile, _
"TEXT", , "Text Delimited Exporter")
End If
' Check to see if Cancel was clicked.
If SaveFileName = False Then
WriteFile = "Canceled"
Exit Function
End If
' Obtain the next free file number.
FNum = FreeFile()
' Open the selected file name for data output.
Open SaveFileName For Output As #FNum
' Store the total number of rows and columns to variables.
TotalRows = Selection.Rows.Count
TotalCols = Selection.Columns.Count
' Loop through every cell, from left to right and top to bottom.
For RowNum = 1 To TotalRows
For ColNum = 1 To TotalCols
With Selection.Cells(RowNum, ColNum)
Dim ColWidth as Integer
ColWidth=Application.RoundUp(.ColumnWidth, 0)
' Store the current cells contents to a variable.
Select Case .HorizontalAlignment
Case xlRight
CellText = Space(Abs(ColWidth - Len(.Text))) & .Text
Case xlCenter
CellText = Space(Abs(ColWidth - Len(.Text))/2) & .Text & _
Space(Abs(ColWidth - Len(.Text))/2)
Case Else
CellText = .Text & Space(Abs(ColWidth - Len(.Text)))
End Select
End With
' Write the contents to the file.
' With or without quotation marks around the cell information.
Select Case quotes
Case vbYes
CellText = Chr(34) & CellText & Chr(34) & delimiter
Case vbNo
CellText = CellText & delimiter
End Select
Print #FNum, CellText;
' Update the status bar with the progress.
Application.StatusBar = Format((((RowNum - 1) * TotalCols) _
+ ColNum) / (TotalRows * TotalCols), "0%") & " Completed."
' Loop to the next column.
Next ColNum
' Add a linefeed character at the end of each row.
If RowNum <> TotalRows Then Print #FNum, ""
' Loop to the next row.
Next RowNum
' Close the .prn file.
Close #FNum
' Reset the status bar.
Application.StatusBar = False
WriteFile = "Exported"
End Function
Nota:
El archivo de salida que crea esta rutina es, por definición, diferente de un archivo de texto con formato (*.prn). Por definición, el archivo de texto con formato no puede contener más de 240 caracteres por línea. Además, el archivo de texto con formato también contiene información de fuente de la impresora. Esta macro de ejemplo no lo hace. Esta solución está diseñada para proporcionar flexibilidad al exportar a archivos de texto.
Comentarios
https://aka.ms/ContentUserFeedback.
Próximamente: A lo largo de 2024 iremos eliminando gradualmente GitHub Issues como mecanismo de comentarios sobre el contenido y lo sustituiremos por un nuevo sistema de comentarios. Para más información, vea:Enviar y ver comentarios de