Thema Datum  Von Nutzer Rating
Antwort
Rot Intelligente Tabelle anlegen
06.10.2025 17:18:46 Pfitzer Gerhard
NotSolved
06.10.2025 18:20:52 ralf_b
NotSolved
06.10.2025 18:32:21 Gast32929
NotSolved
07.10.2025 15:47:41 ralf_b
****
Solved

Ansicht des Beitrags:
Von:
Pfitzer Gerhard
Datum:
06.10.2025 17:18:46
Views:
47
Rating: Antwort:
  Ja
Thema:
Intelligente Tabelle anlegen

Option Explicit

Public DebugModus As Boolean ' Manuell auf True setzen, wenn du im Einzelschritt arbeitest

Function SpeichereMitVersionskontrolle(pfad As String, basisName As String) As String
    Dim i As Integer
    Dim dateiPfad As String

    i = 1
    dateiPfad = pfad & basisName & ".xlsm"

    Do While Dir(dateiPfad) <> ""
        dateiPfad = pfad & basisName & "_" & i & ".xlsm"
        i = i + 1
    Loop

    SpeichereMitVersionskontrolle = dateiPfad
End Function

Function CSV_Import_Direkt() As Worksheet
    On Error GoTo Fehler

    Dim suchOrdner As String
    Dim dateiPfad As String
    Dim neueWB As Workbook
    Dim zielWS As Worksheet
    Dim csvName As String
    Dim dateiName As String
    Dim fd As FileDialog

    suchOrdner = "R:\1\Kontoauszüge\2025\"

    ' Datei auswählen
    Set fd = Application.FileDialog(msoFileDialogFilePicker)
    With fd
        .InitialFileName = suchOrdner
        .Title = "Wähle die CSV-Datei aus"
        .Filters.Clear
        .Filters.Add "CSV-Dateien", "*.csv"
        .AllowMultiSelect = False

        If .Show <> -1 Then
            MsgBox "Keine Datei ausgewählt.", vbExclamation
            Set fd = Nothing
            Exit Function
        End If

        dateiPfad = .SelectedItems(1)
    End With
    Set fd = Nothing

    Debug.Print "Datei gewählt: " & dateiPfad

    dateiName = Dir(dateiPfad)
    csvName = Left(dateiName, InStrRev(dateiName, ".") - 1)

    ' Neue Arbeitsmappe erstellen
    Set neueWB = Workbooks.Add
    With neueWB.Windows(1)
        .Visible = True
        .WindowState = xlNormal
        .Activate
    End With

    Set zielWS = neueWB.Sheets(1)
    zielWS.Name = "CSV_Tabelle"
    zielWS.Activate
    zielWS.Range("A1").Select
    DoEvents

    ' Kopfzeilen (außerhalb der Tabelle) einfügen
    zielWS.Rows("1:6").Insert Shift:=xlDown
    zielWS.Range("E1").Value = "Umsätze VR-Bank"
    zielWS.Rows("2:2").RowHeight = 43.5
    zielWS.Rows("3:6").RowHeight = 12.75

    ' CSV einlesen ab Zeile 7
    Dim zeile As String, zeilenArray() As String
    Dim i As Long, j As Long
    Dim fso As Object, ts As Object

    Set fso = CreateObject("Scripting.FileSystemObject")
    Set ts = fso.OpenTextFile(dateiPfad, 1, True)

    i = 7
    Do Until ts.AtEndOfStream
        zeile = ts.ReadLine
        zeilenArray = Split(zeile, ";")
        For j = 0 To UBound(zeilenArray)
            zielWS.Cells(i, j + 1).Value = zeilenArray(j)
        Next j
        i = i + 1
    Loop
    ts.Close

    Debug.Print "CSV-Daten bis Zeile: " & i - 1

    ' Spaltenbreiten manuell setzen
    With zielWS
        .Columns("A:AQ").ColumnWidth = 12
        .Columns("G:G").ColumnWidth = 33
        .Columns("K:K").ColumnWidth = 40
    End With

    ' Tabelle ab Zeile 7 erstellen
    Dim letzteZeile As Long
    letzteZeile = zielWS.Cells(Rows.Count, 1).End(xlUp).Row

    Application.ScreenUpdating = False
    Application.Calculation = xlCalculationManual

    Dim lo As ListObject
    Set lo = zielWS.ListObjects.Add(xlSrcRange, zielWS.Range("A7:AQ" & letzteZeile), , xlYes)
    lo.Name = "CSV_Tabelle"
    lo.TableStyle = "TableStyleMedium2"

    Application.ScreenUpdating = True
    Application.Calculation = xlCalculationAutomatic

    ' Sichtbereich auf die Tabelle setzen
    With zielWS
        .Activate
        .Range("A7").Select
        .Parent.Activate
        .Parent.Windows(1).ScrollColumn = 1
        .Parent.Windows(1).ScrollRow = 1
    End With
    DoEvents

    Debug.Print "Tabelle erstellt: " & lo.Name & " Bereich: " & lo.Range.Address

    ' Speichern
    Dim speicherPfad As String
    speicherPfad = SpeichereMitVersionskontrolle(suchOrdner, csvName)
    neueWB.SaveAs Filename:=speicherPfad, FileFormat:=xlOpenXMLWorkbookMacroEnabled
    Debug.Print "Datei gespeichert unter: " & speicherPfad

    ' Jetzt erst Spalten ausblenden
    On Error Resume Next
    zielWS.Columns("A:D").Hidden = True
    zielWS.Columns("F:F").Hidden = True
    zielWS.Columns("H:J").Hidden = True
    zielWS.Columns("M:M").Hidden = True
    zielWS.Columns("P:T").Hidden = True
    On Error GoTo 0

    ' Rückgabe
    Set CSV_Import_Direkt = zielWS

    ' Aufräumen
    Set fso = Nothing
    Set ts = Nothing
    Set lo = Nothing
    Set zielWS = Nothing
    Set neueWB = Nothing
    Exit Function

Fehler:
    MsgBox "Fehler beim CSV-Import: " & Err.Description, vbCritical
    Set CSV_Import_Direkt = Nothing
End Function


Sub Formatierung_Bankauszuege()
    On Error GoTo Fehler

    Dim ws As Worksheet
    Dim letzteZeile As Long

    Set ws = CSV_Import_Direkt()
    If ws Is Nothing Then
        MsgBox "CSV-Import fehlgeschlagen oder abgebrochen.", vbExclamation
        Exit Sub
    End If

    letzteZeile = ws.Cells.Find("*", , xlFormulas, xlPart, xlByRows, xlPrevious).Row

    ws.Columns("G").ColumnWidth = 33
    ws.Columns("K").ColumnWidth = 40
    ws.Columns("E").ColumnWidth = 11
    ws.Columns("U:AQ").ColumnWidth = 11

    With ws
        .Range("L7:N" & letzteZeile).NumberFormat = "#,##0.00;[Red]-#,##0.00"
        .Range("U7:AQ" & letzteZeile).NumberFormat = "#,##0.00;[Red]-#,##0.00"
    End With

    On Error Resume Next
    Application.Run "PERSONAL.XLSB!Kontenplan"
    Application.Run "PERSONAL.XLSB!Fenster_teilen"
    Application.Run "PERSONAL.XLSB!Formeln_Z_4"
    Application.Run "PERSONAL.XLSB!Formeln_Z_5"
    Application.Run "PERSONAL.XLSB!Formeln_Z_6"
    Application.Run "PERSONAL.XLSB!Formelneintrag"
1800    On Error GoTo 0

    ws.Range("AZ1").Value = "Formatiert"

    MsgBox "Tabelle erstellt bis Spalte AQ, Formatierung abgeschlossen.", vbInformation
    Exit Sub

Fehler:
    MsgBox "Fehler in Formatierung_Bankauszuege: " & Err.Description, vbCritical
End Sub

die aufzurufende csv-Datei hat 18 Spalten. Die Int.Tabelle wird richtig angelegt (A7 bis AQ132). Sichtbar ist die Tabelle aber nur von O bis AQ. Fehlende Spalten lassen sich nicht einblenden. Wo könnte der Fehler liegen?


Ihre Antwort
  • Bitte beschreiben Sie Ihr Problem möglichst ausführlich. (Wichtige Info z.B.: Office Version, Betriebssystem, Wo genau kommen Sie nicht weiter)
  • Bitte helfen Sie ebenfalls wenn Ihnen geholfen werden konnte und markieren Sie Ihre Anfrage als erledigt (Klick auf Häckchen)
  • Bei Crossposting, entsprechende Links auf andere Forenbeiträge beifügen / nachtragen
  • Codeschnipsel am besten über den Code-Button im Text-Editor einfügen
  • Die Angabe der Emailadresse ist freiwillig und wird nur verwendet, um Sie bei Antworten auf Ihren Beitrag zu benachrichtigen
Thema: Name: Email:



  • Bitte beschreiben Sie Ihr Problem möglichst ausführlich. (Wichtige Info z.B.: Office Version, Betriebssystem, Wo genau kommen Sie nicht weiter)
  • Bitte helfen Sie ebenfalls wenn Ihnen geholfen werden konnte und markieren Sie Ihre Anfrage als erledigt (Klick auf Häckchen)
  • Bei Crossposting, entsprechende Links auf andere Forenbeiträge beifügen / nachtragen
  • Codeschnipsel am besten über den Code-Button im Text-Editor einfügen
  • Die Angabe der Emailadresse ist freiwillig und wird nur verwendet, um Sie bei Antworten auf Ihren Beitrag zu benachrichtigen

Thema Datum  Von Nutzer Rating
Antwort
Rot Intelligente Tabelle anlegen
06.10.2025 17:18:46 Pfitzer Gerhard
NotSolved
06.10.2025 18:20:52 ralf_b
NotSolved
06.10.2025 18:32:21 Gast32929
NotSolved
07.10.2025 15:47:41 ralf_b
****
Solved