Ich habe Probleme beim Drucken von Werten in einer Textdatei. Wann immer ich ein Datum oder Zahlen habe, bekomme ich einen "Fehler 13" ... Ich denke, es ist mit meinen Variablen verknüpft, aber ich kann nicht verstehen, wo das Problem liegt.VBA - Drucken von Zeilen in eine TXT-Datei
Sub SX_Externe_Generate_TXT()
Dim WsCib As Worksheet
Dim LastCol, LastRow, i, j As Byte
Application.ScreenUpdating = False
Set Ws = ThisWorkbook.Sheets("Externe")
Set WsCib = ThisWorkbook.Sheets("SX_Externe")
LastCol = WsCib.Cells(1, 1).SpecialCells(xlCellTypeLastCell).Column
LastRow = WsCib.Cells(1, 1).SpecialCells(xlCellTypeLastCell).Row
WsCib.Activate
Open "C:\Users\xizx692\Desktop\SX_Externe_Temp.txt" For Output As #1 'Tu crées le fichier text
i = 1
For i = 1 To LastRow
j = 1
For j = 1 To LastCol
Print #1, WsCib.Cells(i, j).Value + ";"; 'Séparateur = ;
Next j
Print #1, WsCib.Cells(i, j + 1).Value 'pas de séparateur (Saut de ligne)
Next i
Close #1
Ws.Activate
Application.ScreenUpdating = False
End Sub
Der Fehler kommt an dieser Linie Print # 1, WsCib.Cells (i, j) .Value + ";" 'Séparateur =; immer wenn die Zellen (i, j) .value ist ein Datum oder eine Zahl Format.
Vielen Dank für Ihre Hilfe im Voraus.
BR,
Jean
Ash, vielen Dank für Ihre Antwort. Es hilft mir, mein Problem zu lösen und außerdem: Es bringt mir großartige Dinge bei. Der Grund, warum ich "Bytes" verwendet habe, ist, weil ich weiß, dass es weniger als 250 Zeilen geben wird und ich dachte, dass mein Code schneller wird ... Schande über mich? Ich kannte das j nicht und ich ging am Ende der Schleife zurück zu "1", deshalb wollte ich j = 1 erzwingen! Möchten Sie an einer anderen Frage teilnehmen, die ich gestellt habe? [Gehen Sie hier] (https://stackoverflow.com/questions/44592776/action-when-linked-cell-of-option-button-changes/44593266#44593266) wenn ja! ** Löse sie alle, D ** –
Dachte, warum LastCol, LastRow und ich als Variante definieren? Danke! –
@ Jean-FIC Ich meinte, dass Ihre ursprüngliche Aussage sie als Variante deklariert, nicht als Byte. Verwenden Sie "Long" für alle Ihre Integer-Variablen, da es 32 Bit lang ist und somit am schnellsten und weniger anfällig für Überlauf ist. Die einzige Stelle, an der Sie an "Integer" oder "Byte" denken würden, ist, wenn Sie * riesige Arrays * haben, die Speicherprobleme verursachen können. –