korrektes Zellformat in einer csv
09.12.2020 14:14:34
EasyD
ich scheitere gerade daran, eine csv zu erstellen, und dabei die einzelnen Felder im richtigen Format auszugeben.
1.Schritt SBS_import - eine csv auf Blatt1 importieren funktioniert
2.Schritt writeData - die importierten Daten ändern und auf Blatt 2 (navi) schreiben - hier muss dann das richtige Format erstellt werden
3.Schritt Export - Blatt2 als csv abspeichern
4.Schritt Emptydata - beide Blätter wieder leer machen
Zuerst wollte ich für jeden einzelnen Vorgang des Schreibens auf Blatt2 das Format festlegen und bin gescheitert.
Nun wollte ich nach Abschluss der Prozedur die ganze Spalte formatieren, klappt aber ebenfalls nicht.
Mein erster Versuch dabei war die erste Spalte, die ein Datum enthält. Das Ziel soll sein:
"TT.MM.JJ" - INKLUSIVE der Anführungszeichen - das Datum soll also ein Text sein!
Wie kriege ich das hin?
Mein bisheriger Code:
Sub SBS_import()
'.... wegrationalisiert, der Import funktioinert
Call writeData
Call Export
Call Emptydata
ActiveWorkbook.Close savechanges:=False
Application.Quit
End Sub
Function LetzterTag(inputdate As Date) As Date
'Funktion zur Ermittlung des Monatsletzten (Datumsspalte auf dem Blatt Navi)
LetzterTag = DateSerial(Year(inputdate), Month(inputdate) + 1, 0)
End Function
Sub writeData()
'Die Daten von dem Blatt1 umwandeln und auf das Blatt2 schreiben
Dim i As Integer
Dim letzte As Integer
letzte = Cells(1048576, 1).End(xlUp).Row
For i = 1 To letzte
Tabelle2.Cells(i, 1) = LetzterTag("1." & Tabelle1.Cells(i, 1).Value & "." & Tabelle1.Cells( _
i, 2).Value)
Tabelle2.Cells(i, 2) = 0
If Tabelle1.Cells(i, 8) = 186000 Then
Tabelle2.Cells(i, 3) = 186000
Tabelle2.Cells(i, 4) = ""
Else
Tabelle2.Cells(i, 3) = ""
Tabelle2.Cells(i, 4) = Tabelle1.Cells(i, 8).Value
End If
Tabelle2.Cells(i, 5) = Tabelle1.Cells(i, 9).Value
If Tabelle1.Cells(i, 4).Value = 0 Then
Tabelle2.Cells(i, 6) = Tabelle1.Cells(i, 12).Value 'Betrag im Haben
Tabelle2.Cells(i, 7) = 0 'Spalte 7 = SH Kennzeichnung, Haben
Else
Tabelle2.Cells(i, 6) = Tabelle1.Cells(i, 4).Value 'Betrag im Soll
Tabelle2.Cells(i, 7) = 1 'Spalte 7 = SH Kennzeichnung, Soll
End If
If Len(Tabelle1.Cells(i, 5)) = 5 Then
Tabelle2.Cells(i, 8) = Tabelle1.Cells(i, 5).Value
Tabelle2.Cells(i, 9) = ""
Else
Tabelle2.Cells(i, 8) = ""
Tabelle2.Cells(i, 9) = 0 & Tabelle1.Cells(i, 5).Value
End If
Tabelle2.Cells(i, 10) = Tabelle1.Cells(i, 9).Value
If Tabelle1.Cells(i, 5).Value = 955400 Then
Tabelle2.Cells(i, 11).Value = 16
Else
End If
Tabelle2.Cells(i, 12) = " " & Tabelle1.Cells(i, 11).Value
Next i
'Spaltenformate festlegen - Versuch für die erste Spalte
Tabelle2.Columns("A").NumberFormat = "dd.mm.yy"
End Sub
Sub Export()
'eine eigene csv-Datei erstellen zum Versand
Dim Bereich As Range, Zeile As Range, Zelle As Range
Dim strTemp As String
Dim strDateiname As String
Dim strTrennzeichen As String
Dim strMappenpfad As String
Dim blnAnfuehrungszeichen As Boolean
strMappenpfad = ActiveWorkbook.FullName
With Sheets("navi")
strDateiname = "exp_navi.csv"
strTrennzeichen = ";"
blnAnfuehrungszeichen = False
Set Bereich = Sheets("navi").UsedRange
Open strDateiname For Output As #1
For Each Zeile In Bereich.Rows
For Each Zelle In Zeile.Cells
If blnAnfuehrungszeichen = True Then
strTemp = strTemp & """" & CStr(Zelle.Text) & """" & strTrennzeichen
Else
strTemp = strTemp & CStr(Zelle.Text) & strTrennzeichen
End If
Next
If Right(strTemp, 1) = strTrennzeichen Then strTemp = Left(strTemp, Len(strTemp) - 1)
Print #1, strTemp
strTemp = ""
Next
End With
Close #1
Set Bereich = Nothing
MsgBox "Die csv-Datei wurde erstellt, sie liegt im gleichen Ordner wie die Originaldaten."
End Sub
Sub Emptydata()
'beide Blätter wieder leer machen
Tabelle1.UsedRange.ClearContents
Tabelle2.UsedRange.ClearContents
End Sub