VBA - Datenimport (csv.)
#1
Wink 
Guten Tag, 
meine Aufgabe ist es eine csv-Datei einzulesen und in einem Worksheet wiederzugeben, jedoch als benannte Tabelle. Im besagten Worksheet steht bereits eine Tabelle mit besagten Daten die ich zuvor lösche. Das löschen und importieren der csv-Datei als Tabelle funktioniert soweit, dass ich jedoch bei der neuen Tabelle zu viele leere Zeilen habe, dich ich ebenfalls mit meiner Prozedur löschen möchte.
Fehlermeldung ist mir auch noch etwas ein Rätsel bzw. ich verstehe die schon, jedoch kann ich es nicht beheben. Bin leider noch etwas ungeübt mit VBA :)

Zur Veranschaulichung:

Im ersten Bild sehen Sie meine Ausgangssituation: Also die bereits vorhandene Tabelle
Das zweite Bild soll mein Problem darstellen.

Hier der Code:

Code:
Public Sub AUTOM_IMPORT()

Dim MsgBoxButton As Integer

'Variablen für die Dateipfade
Dim dateipfadGruppennote As String

'Variablen für die For-Each-Schleife
Dim reihe As Integer
Dim spalte As Integer
Dim textzeile As String
'Variablen für importierte Daten
Dim gruppennotenDaten As Variant
Dim gruppennotenTabelle As ListObject
Dim gruppennotenWS As Worksheet

Set gruppennotenWS = ActiveWorkbook.Sheets("Gruppennote")
Set gruppennotenTabelle = ActiveWorkbook.Worksheets("Gruppennote").ListObjects("Gruppennoten")

Dim strTabelle As String
strTabelle = ActiveCell.CurrentRegion.Address


MsgBoxButton = MsgBox("Wollen Sie Daten importieren?", vbOKCancel, "Automatisierter Datenimport")

'In disem Code-Block wird die aktuelle Tabelle gelöscht, CSV-Datei eingelesen und Daten importiert und die neue Tabelle (mitgleicher Bennenung) erstellt.
If MsgBoxButton = vbOK Then
    dateipfadGruppennote = Application.GetOpenFilename("Text Files (*.csv),*.csv")
   
    If dateipfadGruppennote = "False" Or dateipfadGruppennote = "Falsch" Then
        MsgBox ("Sie haben den Import abgebrochen")
        Exit Sub
    Else
        MsgBox ("Ihre ausgewählten Dateien: " & vbNewLine & dateipfadGruppennote)
       
        gruppennotenTabelle.Delete
       
        Open dateipfadGruppennote For Input As #1
        reihe = 1
       
        While Not EOF(1)
            Line Input #1, textzeile
            spalte = 1
           
            For Each wort In Split(textzeile, ";")
                Cells(reihe, spalte).Value = wort
                spalte = spalte + 1
               
            Next wort
           
            reihe = reihe + 1
        Wend
       
        Close
       
    ActiveSheet.ListObjects.Add(xlSrcRange, Range(strTabelle), , xlYes).Name = "Gruppennoten"
       
    End If
End If



gruppennotenTabelle.ListRows(Gruppennoten.ListRows).Delete 'Hier ist die Problemzeile

End Sub


Schon mal vielen Dank im voraus :)))


Angehängte Dateien Thumbnail(s)
           
Antworten Top
#2
Hi,

wäre natürlich schön zu wissen, welche Office Version Du nutzt. Bei den neueren könntest Du weitgehend auf VBA verzichten und die Daten via Powerquery importieren. Da musst Du Dich auch nicht mehr um die Anpassung der Größe der Zieltabelle kümmern. Schau mal nach, im Menü Daten --> Daten abrufen...
Der sicherste Ansatz für einen Irrtum ist der Glaube, alles im Griff zu haben.
Nur, weil ich den Recorder bedienen kann, macht mich das noch lange nicht zum Musiker.

Ciao, Ralf

Antworten Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste