Formatierter Text (.prn) ist in Excel auf 240 Zeichen pro Zeile beschränkt
Symptome
Wenn Sie in Microsoft Excel ein Arbeitsblatt als Datei mit formatiertem Text (durch Leerzeichen getrennt) (.prn) speichern, werden alle Zeichen, die über das zweihundertzigste Zeichen hinausgehen, in die nächste Zeile umschlossen.
Hinweis
Wenn mehrere Zeilen auf demselben Blatt Text mehr als 240 Zeichen enthalten, beginnt der Text mit dem Umbruch an der Zeile nach der letzten Zeile, die Text enthält.
Betrachten Sie beispielsweise das folgende Blatt:
Cell | Anzahl der Zeichen |
---|---|
A1 | 40 |
A2 | 255 |
A3 | 10 |
A4 | 21 |
A5 | 2 |
A6 | 52 |
A7 | 255 |
A8 | 5 |
A9 | 3 |
A20 | 13 |
Die resultierende formatierte Textdatei enthält Zeilen mit der folgenden Anzahl von Zeichen:
Zeilennummer | 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 |
Nach der letzten Zeile (in diesem Beispiel Zeile 20) beginnt die Zeilennummerierung bei 1 für die Zeilen, die umschlossen werden. Tatsächlich entspricht Zeile 21 zeile 1, Zeile 22 entspricht Zeile 2 usw.
Ursache
Dieses Verhalten tritt auf, weil formatierte Textdateien (Durch Leerzeichen getrennt) (.prn) standardmäßig auf 240 Zeichen pro Zeile beschränkt sind.
Problemumgehung
Die Verwendung der hier aufgeführten Informationen, Makro- oder Programmcodes geschieht auf Ihre eigene Verantwortung. Microsoft stellt Ihnen diese Informationen sowie Makro- und Programmlistings ohne Gewähr auf Richtigkeit, Vollständigkeit und/oder Funktionsfähigkeit sowie ohne Anspruch auf Support zur Verfügung. Die zur Verfügung gestellten Makro- und Programmierungsbeispiele sollen lediglich exemplarisch die Funktionsweise des Beispiels aufzeigen. Die Microsoft Support-Spezialisten können bei der Erläuterung der Funktionalität bestimmter Prozeduren helfen, jedoch werden sie diese Beispiele nicht in Bezug auf eine erweiterte Funktionalität verändern, noch werden sie Prozeduren entwickeln, die auf Ihre besonderen Bedürfnisse zugeschnitten sind. Verwenden Sie ein Makro ähnlich dem folgenden Beispielmakro, um eine Textdatei mit Leerzeichentrennzeichen zu erstellen, die die Beschränkung auf 240 Zeichen pro Zeile überschreitet.
Hinweis
Bevor Sie dieses Makro ausführen, gehen Sie wie folgt vor:
- Wählen Sie die Zellen aus, die in die Textdatei eingeschlossen werden sollen.
- Stellen Sie sicher, dass die Spaltenbreiten breit genug sind, um die größte Zeichenfolge in jeder Spalte anzuzeigen. Die maximale Spaltenbreite für eine einzelne Excel-Spalte beträgt 255 Zeichen, wenn sie mit einer Schriftart mit fester Breite formatiert ist.
- Verwenden Sie die Menübefehle Formatvorlage, um das Arbeitsblatt so zu formatieren, dass es eine Schriftart mit fester Breite verwendet. Courier ist beispielsweise eine Schriftart mit fester Breite.
Der folgende Beispielcode kann geändert werden, um Daten zu exportieren, die mit anderen Zeichen als einem Leerzeichen getrennt sind. Sie müssen den zu exportierenden Datenbereich auswählen, bevor Sie dieses Beispielmakro ausführen.
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
Hinweis
Die Ausgabedatei, die von dieser Routine erstellt wird, unterscheidet sich per Definition von einer Formatierten Text(*.prn)-Datei. Definitionsgemäß darf die formatierte Textdatei nicht mehr als 240 Zeichen pro Zeile enthalten. Darüber hinaus enthält die formatierte Textdatei auch Informationen zur Druckerschriftart. In diesem Beispielmakro ist dies nicht der Fall. Diese Lösung wurde entwickelt, um Flexibilität beim Exportieren in Textdateien zu bieten.
Feedback
https://aka.ms/ContentUserFeedback.
Bald verfügbar: Im Laufe des Jahres 2024 werden wir GitHub-Issues stufenweise als Feedbackmechanismus für Inhalte abbauen und durch ein neues Feedbacksystem ersetzen. Weitere Informationen finden Sie unterFeedback senden und anzeigen für