Il testo formattato (con estensione prn) è limitato a 240 caratteri per riga in Excel
Sintomi
In Microsoft Excel, quando si salva un foglio di lavoro come file formattato di testo (delimitato da spazi) (con estensione prn), tutti i caratteri che superano i duecento fortieti vengono racchiusi nella riga successiva.
Nota
Se più righe dello stesso foglio contengono testo superiore a 240 caratteri, il testo inizia a capo alla riga dopo l'ultima riga che contiene testo.
Si consideri, ad esempio, il foglio seguente:
Cella | Numero di caratteri |
---|---|
A1 | 40 |
A2 | 255 |
A3 | 10 |
A4 | 21 |
A5 | 2 |
A6 | 52 |
A7 | 255 |
A8 | 5 |
A9 | 3 |
A20 | 13 |
Il file di testo formattato risultante contiene righe con il numero di caratteri seguente:
Numero di riga | Personaggi |
---|---|
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 |
Dopo l'ultima riga (in questo esempio, la riga 20), la numerazione della riga inizia da 1 per le righe di cui è stato eseguito il wrapping. In effetti, la riga 21 corrisponde alla riga 1, la riga 22 corrisponde alla riga 2 e così via.
Causa
Questo comportamento si verifica perché, per impostazione predefinita, i file formattati di testo (delimitato da spazi) (con estensione prn) hanno un limite di 240 caratteri per riga.
Soluzione alternativa
Microsoft fornisce esempi di programmazione a scopo puramente illustrativo, senza alcuna garanzia di qualsiasi tipo, sia espressa che implicita, ivi incluse, senza limitazioni, le garanzie implicite di commerciabilità o idoneità per uno scopo particolare. In questo articolo si presuppone che l'utente conosca il linguaggio di programmazione in questione e gli strumenti utilizzati per creare ed eseguire il debug delle procedure. Gli esperti Microsoft sono autorizzati a fornire spiegazioni in merito alla funzionalità di una particolare routine, ma in nessun caso a modificare questi esempi per fornire funzionalità aggiuntive o a creare routine atte a soddisfare specifiche esigenze. Per creare un file di testo delimitato da spazi che supera il limite di 240 caratteri per riga, utilizzare una macro simile alla macro di esempio seguente.
Nota
Prima di eseguire questa macro, eseguire le operazioni seguenti:
- Selezionare le celle da includere nel file di testo.
- Verificare che la larghezza della colonna sia sufficientemente ampia da visualizzare la stringa più grande in ogni colonna. La larghezza massima della colonna per una singola colonna di Excel è di 255 caratteri se formattata con un tipo di carattere a larghezza fissa.
- Usare i comandi di menu Stile per formattare il foglio di lavoro in modo da usare un tipo di carattere a larghezza fissa. Ad esempio, Courier è un tipo di carattere a larghezza fissa.
Il codice di esempio seguente può essere modificato per esportare i dati delimitati da caratteri diversi da uno spazio. È necessario selezionare l'intervallo di dati da esportare prima di eseguire questa macro di esempio.
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
Il file di output creato da questa routine è, per definizione, diverso da un file Formattato (*.prn). Per definizione, il file di testo formattato non può contenere più di 240 caratteri per riga. Inoltre, il file di testo formattato contiene anche informazioni sul tipo di carattere della stampante. Questa macro di esempio non lo fa. Questa soluzione è progettata per offrire flessibilità durante l'esportazione in file di testo.
Commenti e suggerimenti
https://aka.ms/ContentUserFeedback.
Presto disponibile: Nel corso del 2024 verranno gradualmente disattivati i problemi di GitHub come meccanismo di feedback per il contenuto e ciò verrà sostituito con un nuovo sistema di feedback. Per altre informazioni, vedereInvia e visualizza il feedback per