Anzeige
Archiv - Navigation
1536to1540
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Import CSV in Excel via VBA
01.02.2017 10:59:04
NetMare
Hallo zusammen,
ich habe hier ein skript zum csv Import in ein Tabellenblatt gefunden. Jedoch möchte ich einiges Ändern, weiß aber leider nicht wie.
Hier mein aktuelles skript:
Sub Datei_Importieren()
Dim strFileName As String, arrDaten, arrTmp, lngR As Long, lngLast As Long
Const cstrDelim As String = ";" 'Trennzeichen
strFileName = "C:\test.csv"
If strFileName  "" Then
Application.ScreenUpdating = False
Open strFileName For Input As #1
arrDaten = Split(Input(LOF(1), 1), vbCrLf)
Close #1
For lngR = 0 To UBound(arrDaten)
arrTmp = Split(arrDaten(lngR), cstrDelim)
If UBound(arrTmp) > -1 Then
With ActiveSheet
lngLast = .Cells(Rows.Count, 1).End(xlUp).Row + 1
lngLast = Application.Max(lngLast, 2)
.Cells(lngLast, 1).Resize(, UBound(arrTmp) + 1) _
= Application.Transpose(Application.Transpose(arrTmp))
End With
End If
Next lngR
End If
End Sub
Nun möchte ich im Code noch das Tabellenblatt angeben in das importiert werden soll und es soll immer wieder erneut ab A2 importiert werden. Aktuell hängt das skript einen neuen Import unten an.
Ich hoffe auf Hilfe ;-)
Gruß

9
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Import CSV in Excel via VBA
01.02.2017 12:00:36
UweD
Hallo
ungetestet
Sub Datei_Importieren()
Dim strFileName As String, arrDaten, arrTmp, lngR As Long
Const cstrDelim As String = ";" 'Trennzeichen
strFileName = "C:\test.csv"
If strFileName  "" Then
Application.ScreenUpdating = False
Open strFileName For Input As #1
arrDaten = Split(Input(LOF(1), 1), vbCrLf)
Close #1
For lngR = 0 To UBound(arrDaten)
arrTmp = Split(arrDaten(lngR), cstrDelim)
If UBound(arrTmp) > -1 Then
With Sheets("Tabelle1")
.Cells(2, 1).Resize(, UBound(arrTmp) + 1) _
= Application.Transpose(Application.Transpose(arrTmp))
End With
End If
Next lngR
End If
End Sub

LG UweD
Anzeige
AW: Import CSV in Excel via VBA
01.02.2017 12:02:48
UweD
Hi nochmal
evtl. noch einen Reset vorher
        With Sheets("Tabelle1")
.cells.clearcontents
.Cells(2, 1).Resize(, UBound(arrTmp) + 1) _

AW: Import CSV in Excel via VBA
01.02.2017 12:08:57
NetMare
Hallo Uwe,
danke für deine Rückmeldung.
Nun wird mir jedoch nur die letze Zeile der CSV in die Zeile A geschrieben...
Gruß
AW: Import CSV in Excel via VBA
01.02.2017 13:00:29
UweD
so?
Sub Datei_Importieren()
    Dim strFileName As String, arrDaten, arrTmp, lngR As Long, lngLast As Long
    Const cstrDelim As String = ";" 'Trennzeichen 
        
    strFileName = "C:\test.csv"
        
    If strFileName <> "" Then
        Application.ScreenUpdating = False
        Open strFileName For Input As #1
        arrDaten = Split(Input(LOF(1), 1), vbCrLf)
        Close #1
        lngLast = 2
        With Sheets("Tabelle1")
            .Cells.ClearContents
            For lngR = 0 To Ubound(arrDaten)
                arrTmp = Split(arrDaten(lngR), cstrDelim)
                If Ubound(arrTmp) > -1 Then
                    .Cells(lngLast, 1).Resize(, Ubound(arrTmp) + 1) _
                        = Application.Transpose(Application.Transpose(arrTmp))
                    lngLast = lngLast + 1
                End If
            Next lngR
        End With
    End If
                    
End Sub

LG UweD
Anzeige
AW: Import CSV in Excel via VBA
01.02.2017 16:14:44
NetMare
Danke!
AW: gern geschehen owt
01.02.2017 16:22:30
UweD
AW: Import CSV in Excel via VBA
01.02.2017 12:20:41
Piet
Hallo NetMare
im Prinzip ziemlich einfach, wenn man es weiss. Probier mal den geanderten Code aus.
Den Namen der Zieltabelle bitte in der Const Anweisung festlegen. Wenn sie sich staendig aendert kann man auch über eine InputBox gehen. Die Möglichkeit habe ich in ' Zeichen (grün) mit vorgesehen. Dann muss aber die Const Anweisung gelöscht werden, beides zusammen funktioniert nicht!! Zum aktivieren der InputBox nur das ' Zeichen entfernen, auch bei der If Then Zeile. Viel Spass beim Testen.
mfg Piet

Const ZielTab = "Tabelle1"    'Name der Ziel Tabelle, kann hier eaendert werden
Dim Test As Object
Sub Datei_Importieren()
Dim strFileName As String, arrDaten, arrTmp, lngR As Long, lngLast As Long
Const cstrDelim As String = ";" 'Trennzeichen
strFileName = "C:\test.csv"
'auf Wunsch Eingabe über InputBox  (dann muss Const gelöscht werden!!)
'ZielTab = InputBox("Bitte die Ziel-Tabelle eingeben")
'If ZielTab = Empty Then Exit Sub
On Error GoTo Fehler
'Set dient nur zum Test ob die Ziel-Tabelle existiert
Set Test = Worksheets(ZielTab)  'keine weitere Funktion!!
If strFileName  "" Then
Application.ScreenUpdating = False
Open strFileName For Input As #1
arrDaten = Split(Input(LOF(1), 1), vbCrLf)
Close #1
For lngR = 0 To UBound(arrDaten)
arrTmp = Split(arrDaten(lngR), cstrDelim)
If UBound(arrTmp) > -1 Then
'With ActiveSheet
'lngLast = .Cells(Rows.Count, 1).End(xlUp).Row + 1
'*** eaendert auf Zieltabelle mit A2 zum einfügen
With Worksheets(ZielTab)
lngLast = 2   '1.Zeile in die kopiert werden soll
lngLast = Application.Max(lngLast, 2)
.Cells(lngLast, 1).Resize(, UBound(arrTmp) + 1) _
= Application.Transpose(Application.Transpose(arrTmp))
End With
End If
Next lngR
End If
Exit Sub
Fehler: MsgBox "Name der Zieltabelle stimmt nicht, oder sie fehlt!"
End Sub

Anzeige
AW: Import CSV in Excel via VBA
01.02.2017 12:25:26
NetMare
Hi Piet,
liegt der Fehler bei mir? Auch hier wird nur die letzte Zeile der CSV in Zeile 2 der Tabell1 geschrieben?!!!
Gruß
AW: Import CSV in Excel via VBA
01.02.2017 12:26:22
Piet
Nachtrag
Ich sehe gerade das ich in der Zieltabelle Range(xx).ClearContents vergessen habe. Bitte selbst ergaenzen

307 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige