Top-Themen

Aktuelle Themen (A bis Z)

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit

Import von csv Dateien

Mitglied: KurinoKi

KurinoKi (Level 1) - Jetzt verbinden

02.09.2014 um 14:08 Uhr, 1545 Aufrufe, 6 Kommentare

Hallo,

ich verwende bereits folgendes Skript für den Import meiner csv Dateien.

Bei dem Import sollten die Spalten A, B, C, F als Text fomartiert werden.

Die Dateien sollen untereinander eingelesen werden. Eine Datei besteht aus einer Kopfzeile und x Positionszeilen und danach soll in der übernächsten Zeile mit der nächsten Datei die sich im Verzeichnis befindet forgefahren werden.

Können die eingelesenen Dateien danach in ein anders Verzeichnis verschoben werden.

Es können alle Informationen in dem selben Tabellenblatt eingefügt werden. Ich benötige hier keine Trennung.

Herzlichen Dank schon jetzt an alle Helfer

Viele Grüße

Stephy


Sub ImportiereCSVDateien()
Const CSVPFAD = "M:\SAGE\kleyling\Export\ResponseWA"
Dim wbTarget As Workbook, wbSource As Workbook, ws As Worksheet, ts As Worksheet
Set FSO = CreateObject("Scripting.Filesystemobject")
Set wbTarget = ActiveWorkbook
Application.DisplayAlerts = False
'Lösche alle Worksheets bevor wir alle neu anlegen
While wbTarget.Worksheets.Count > 1
wbTarget.Worksheets(1).Delete
Wend
wbTarget.Worksheets(1).Name = "Zusammenfassung"
wbTarget.Worksheets(1).Range("A:ZZ").Clear
For Each f In FSO.GetFolder(CSVPFAD).Files
If LCase(Right(f.Name, 3)) = "csv" Then
Workbooks.OpenText Filename:=f.Path
Set wbSource = ActiveWorkbook
On Error Resume Next
Set ws = wbTarget.Worksheets(f.Name)
If Err <> 0 Then
Set ws = wbTarget.Worksheets.Add
ws.Name = f.Name
ws.Range("A:ZZ").Clear
End If

wbSource.Worksheets(1).Range("A:A").TextToColumns Destination:=Range("A1"), DataType:=xlDelimited, TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=False, Semicolon:=True, TrailingMinusNumbers:=True
wbSource.Worksheets(1).Range("A:ZZ").Copy Destination:=ws.Range("A1")
wbSource.Close False
End If
Next
Set ts = wbTarget.Worksheets("Zusammenfassung")
Dim curCell As Range
Set curCell = ts.Range("A1")
For i = 1 To wbTarget.Worksheets.Count - 1
maxRow = wbTarget.Worksheets(i).Range("A1").End(xlDown).Row
maxCol = wbTarget.Worksheets(i).Range("A1").End(xlToRight).Column
wbTarget.Worksheets(i).Range(wbTarget.Worksheets(i).Cells(1, 1), wbTarget.Worksheets(i).Cells(maxRow, maxCol)).Copy Destination:=curCell
Set curCell = curCell.End(xlDown).Offset(2, 0)
Next
Application.DisplayAlerts = True
Set FSO = Nothing
End Sub

Mitglied: Meierjo
02.09.2014 um 16:35 Uhr
Hallo Stephy

du willst nur die spalten A B C F als Text importieren.
Sollen die restlichen Spalten als Standart importiert werden, oder gar nicht importiert werden?
Haben die CSV Dateien jedesmal die gleiche Anzahl Spalten?
Welches Zeichen wird als Feldtrenner im CSV verwendet?

Gruss meierjo
Bitte warten ..
Mitglied: Meierjo
03.09.2014, aktualisiert 04.09.2014
Hallo

Dein Code scheint ja schon alles richtig zu machen, oder??

Können die eingelesenen Dateien danach in ein anders Verzeichnis verschoben werden.

01.
    Application.DisplayAlerts = True 
02.
     
03.
    Dim strQuelle As String 
04.
    Dim strZiel As String 
05.
    Dim objFSO As Object 
06.
      
07.
    strQuelle = ""M:\SAGE\kleyling\Export\ResponseWA\*.csv" 
08.
    If Dir(strQuelle) = "" Then MsgBox "Nix da!": Exit Sub 
09.
    strZiel = ""M:\SAGE\kleyling\Export\ResponseWA\Backup\" 
10.
    If Dir(strZiel) = "" Then MkDir (strZiel) 
11.
    Set objFSO = CreateObject("Scripting.FileSystemObject") 
12.
    objFSO.MoveFile strQuelle, strZiel 
13.
     
14.
    Set objFSO = Nothing 
15.
    Set FSO = Nothing
in deinem Code am ende einfügen, und alle CSV werden in den Ordner Backup verschoben

Gruss
Bitte warten ..
Mitglied: KurinoKi
04.09.2014 um 09:08 Uhr
Hallo,

ja die restlichen Spalten können als Standard importiert werden und die Headline gehen von Spalte A-N und Positionsdeateils von A-J.

Als Trennzeichen wird ein Semikolon verwendet.

Das Skript ist toll, das einzige Problem ist, dass bei den Positionen nicht immer alle Spalten in die Zusammenfassung übernommen werden (I&J) und dass eben die gewünschten Spalten nicht als Text formatiert sind.

Vielen Dank für die Hilfe

Viele Grüße

Stephy
Bitte warten ..
Mitglied: Meierjo
04.09.2014, aktualisiert um 16:12 Uhr
Das Skript ist toll, das einzige Problem ist, dass bei den Positionen nicht immer alle Spalten in die Zusammenfassung
übernommen werden (I&J) und dass eben die gewünschten Spalten nicht als Text formatiert sind.

In folgender Code-Zeile springst du nach rechts zur letzten Zelle mit Inhalt
maxCol = wbTarget.Worksheets(i).Range("A1").End(xlToRight).Column
Wenn nun aber leere Zellen in der Tabelle sind, springt der Cursor nur bis vor die erste Zelle mit Inhalt

Du willst ja aber sowieos nur die Spalten A:N importieren, also kannst du den Code folgendermassen anpassen
maxCol = 14 (N ist der 14. Buchstabe im Alphabet)

Nach dem Import folgende CodeZeile einfügen
Range("A:C,F:F").NumberFormat = "@"

formatiert die Spalten A-C und F im TextFormat


01.
  
02.
Sub ImportiereCSVDateien() 
03.
    'Const CSVPFAD = "M:\SAGE\kleyling\Export\ResponseWA" 
04.
    Const CSVPFAD = "D:\CSV-IMP" 
05.
    Dim wbTarget As Workbook, wbSource As Workbook, ws As Worksheet, ts As Worksheet 
06.
    Set FSO = CreateObject("Scripting.Filesystemobject") 
07.
    Set wbTarget = ActiveWorkbook 
08.
    Application.DisplayAlerts = False 
09.
    'Lösche alle Worksheets bevor wir alle neu anlegen 
10.
    While wbTarget.Worksheets.Count > 1 
11.
        wbTarget.Worksheets(1).Delete 
12.
    Wend 
13.
    wbTarget.Worksheets(1).Name = "Zusammenfassung" 
14.
    wbTarget.Worksheets(1).Range("A:ZZ").Clear 
15.
    For Each f In FSO.GetFolder(CSVPFAD).Files 
16.
        If LCase(Right(f.Name, 3)) = "csv" Then 
17.
        Workbooks.OpenText Filename:=f.Path 
18.
        Set wbSource = ActiveWorkbook 
19.
        On Error Resume Next 
20.
        Set ws = wbTarget.Worksheets(f.Name) 
21.
        If Err <> 0 Then 
22.
            Set ws = wbTarget.Worksheets.Add 
23.
            ws.Name = f.Name 
24.
            ws.Range("A:ZZ").Clear 
25.
        End If 
26.
        On Error GoTo 0 
27.
        wbSource.Worksheets(1).Range("A:A").TextToColumns Destination:=Range("A1"), DataType:=xlDelimited, TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=False, Semicolon:=True, TrailingMinusNumbers:=True 
28.
        wbSource.Worksheets(1).Range("A:ZZ").Copy Destination:=ws.Range("A1") 
29.
        wbSource.Close False 
30.
        End If 
31.
    Next 
32.
     
33.
    Set ts = wbTarget.Worksheets("Zusammenfassung") 
34.
    Dim curCell As Range 
35.
    Set curCell = ts.Range("A1") 
36.
    For i = 1 To wbTarget.Worksheets.Count - 1 
37.
        'maxRow = wbTarget.Worksheets(i).Range("A1").End(xlDown).Row 
38.
        maxRow = wbTarget.Worksheets(i).Range("A65536").End(xlUp).Row 
39.
        'maxCol = wbTarget.Worksheets(i).Range("A1").End(xlToRight).Column 
40.
        maxCol = 14 
41.
        wbTarget.Worksheets(i).Range(wbTarget.Worksheets(i).Cells(1, 1), wbTarget.Worksheets(i).Cells(maxRow, maxCol)).Copy Destination:=curCell 
42.
        Set curCell = curCell.End(xlDown).Offset(2, 0) 
43.
    Next 
44.
        
45.
    Application.DisplayAlerts = True 
46.
     
47.
    Range("A:C,F:F").NumberFormat = "@" 
48.
     
49.
    Dim strQuelle As String 
50.
    Dim strZiel As String 
51.
    Dim objFSO As Object 
52.
      
53.
    strQuelle = CSVPFAD & "\*.csv" 
54.
    If Dir(strQuelle) = "" Then MsgBox "Nix da!": Exit Sub 
55.
    strZiel = CSVPFAD & "\Backup\" 
56.
    If Dir(strZiel) = "" Then MkDir (strZiel) 
57.
    Set objFSO = CreateObject("Scripting.FileSystemObject") 
58.
    objFSO.MoveFile strQuelle, strZiel 
59.
     
60.
    Set objFSO = Nothing 
61.
    Set FSO = Nothing 
62.
 End Sub


Gruss
Bitte warten ..
Mitglied: KurinoKi
10.09.2014 um 15:41 Uhr
Hallo Meuerjo,

ja die restlichen Spalten sollen als Standard importiert werden und die Anzahl der Spalten ist immer identisch und die Dateien unterscheiden sich lediglich in der Zeilenanzahl.
Als Trennzeichen wird Semikolon verwendet.

Vielen Dank

Viele Grüße
Stephy
Bitte warten ..
Mitglied: Meierjo
10.09.2014 um 15:49 Uhr
Hallo Stephy

Also, den oben stehenden Code schon probiert? Funktioniert er zu deiner Zufriedenheit??

Gruss
Bitte warten ..
Ähnliche Inhalte
VB for Applications
VBA Skript zum Import von CSV-Dateien
gelöst Frage von ToepfiVB for Applications8 Kommentare

Schönen guten Morgen! Ich habe ein kleines VBA Problem und komme nicht wirklich weiter Deswegen bin ich auf eure ...

Batch & Shell
CSV Import in Datenbank
Frage von newit1Batch & Shell2 Kommentare

Hallo Ich habe folgendes Problem: Ich lade mittels der unterstehenden Befehle eine CSV-Datei in eine Datenbank. Den Aufbau der ...

Datenbanken

Fehler 1045 bei Import einer CSV-Datei in MariaDB mit phpMyAdmin

Frage von HSHansDatenbanken3 Kommentare

Ich ziehe gerade von einem Server auf einen anderen um. Auf dem alten Server ist eine mySQL-Datenbank und phpMyAdmin ...

Datenbanken

Import CSV in MYSQL

gelöst Frage von schneerunzelDatenbanken3 Kommentare

Hallo zusammen, ich versuche gerade die Daten einer Vereinsverwaltung in eine neu zu überführen. Dabei tauchen einige Probleme auf. ...

Neue Wissensbeiträge
CMS
Erneut kritische Zero-Day-Lücke in Drupal
Tipp von Reini82 vor 2 StundenCMS

Laut einem Bericht auf t3n gibt es eine Schwere Sicherheitslücke in Drupal die auch schon ausgenutzt wird. Betroffen sind ...

Sicherheit

MikroTik-Router patchen, Schwachstelle wird ausgenutzt

Information von kgborn vor 22 StundenSicherheit

Am 23. April 2018 wurde von Mikrotik ein Security Advisory herausgegeben, welches auf eine Schwachstelle im RouterOS hinwies. Mikrotik ...

Windows 10

Microcode-Updates KB4090007, KB4091663, KB4091664, KB4091666 für Windows 10

Information von kgborn vor 1 TagWindows 101 Kommentar

Kurze Information für Administratoren von Windows 10-Systemen, die mit neueren Intel CPUs laufen. Microsoft hat zum 23. April 2018 ...

iOS
Updates für Iphone und Co
Information von sabines vor 1 TagiOS

Gestern abend ist iOS 11.3.1 erschienen, ein kleineres Update, dass einige Lücken schließt und "Lahmlegen" nach einem Display Tausch ...

Heiß diskutierte Inhalte
Batch & Shell
Powershell: Im AD nach Rechnern mit bestimmten IP-Adressen suchen
gelöst Frage von Raven42Batch & Shell36 Kommentare

Hallo zusammen, ich suche nach einer Möglichkeit nach Computern im AD zu suchen , deren IP-Adresse mit 10.11.12. beginnt. ...

Windows Server
Alten DC entfernen
gelöst Frage von smartinoWindows Server27 Kommentare

Hallo zusammen, ich habe hier eine Umgebung übernommen und erstmal einen DCDIAG gemacht. Dabei fällt auf, daß eine ganze ...

Ausbildung
Wie gelingt ein guter Einstieg in die FiSi-Ausbildung? (Umschulung)
Frage von SiAnKoAusbildung25 Kommentare

Schönen guten Tag, ich bin SiAnKo und habe seit dem 1.04.2018 eine Umschulung als FiSi angefangen. Ich möchte natürlich ...

Batch & Shell
Mit Powershell den Inhalt einer Excel mit einer Text Datei abgleichen
gelöst Frage von Bommi1961Batch & Shell21 Kommentare

Hallo zusammen, ich muss den Inhalt einer Excel Datei (Mappe1) mit dem Daten einer Text Datei abgleichen. Die Daten ...