Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: CSV Datei per Makro öffnen und kopieren

CSV Datei per Makro öffnen und kopieren
31.08.2015 14:27:27
Johanna
Hallo!
Ich habe folgendes Problem: Ich möchte per Klick auf einen commandButton eine CSV Datei auswählen und die darin enthaltenen Daten (eine Matrix) in meine aktuelle Arbeitsmappe kopieren, sodass ich nachher damit arbeiten kann.
Ich habe zwar schon ein paar Mal etwas programmiert, wo man Dateien über ein Dialogfeld öffnet und kopiert, aber noch nie eine CSV Datei. Das Problem bei dieser ist ja, dass die Spalten bei uns durch ein Semikolon getrennt sind, in Amerika aber durch einen simplen Beistrich und Excel das Semikolon nicht als Trenner versteht, wenn man es über ein Makro aufmachen möchte. Das heißt, dass ich die ganze Zeile in einem durch in einer Zelle stehen habe und nicht auf die verschiedenen Spalten aufgeteilt. Ich muss ihm also irgendwie klar machen, dass er das Semikollon als Delimiter ansehen soll. Makroaufzeichnungen helfen in diesem Fall leider absolut nicht weiter und aus den Beiträgen im Internet werde ich nicht ganz schlau. Vielleicht kann mir ja hier jemand helfen.
Mein Code ist noch sehr simpel und sieht momentan so aus:
Dim name, b As String
Dim source As Workbook, ws1 as Worksheet
b = "Import"
name = Application.GetOpenFilename()
If name "Falsch" Then
Set source = Workbooks.Open(name)
Set ws1 = source.Worksheets(1)
With ws1
.Cells.Copy ThisWorkbook.Worksheets(b).Cells
source.Close
Application.CutCopyMode = False
End With
End If

Anzeige

1
Beitrag zum Forumthread
Beitrag zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: CSV Datei per Makro öffnen und kopieren
31.08.2015 14:48:59
Johanna
Habe es gerade selbst herausgefunden, aber für den Fall, dass mal jemand ähnlich verzweifelt wie ich danach sucht:
Die Zeile:
Set source = Workbooks.Open(name)
erweitern durch:
Set source = Workbooks.Open(Filename:=name, Local:=True)
Local:=True bedeutet nur, dass die lokalen Einstellungen (also Semikolon als Trennzeichen anerkennen) übernommen werden. Hatte davon schon gelesen, wusste nur nicht wie ich es richtig anwenden soll.
Anzeige
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Anzeige
Anzeige

Infobox / Tutorial

CSV Datei per Makro öffnen und kopieren


Schritt-für-Schritt-Anleitung

Um eine CSV-Datei mit VBA in Excel zu öffnen und die Daten in deine Arbeitsmappe zu kopieren, befolge diese Schritte:

  1. Öffne den Visual Basic for Applications (VBA) Editor:

    • Drücke ALT + F11 in Excel.
  2. Füge ein neues Modul hinzu:

    • Rechtsklicke auf „VBAProject (deinWorkbookName)“ und wähle „Einfügen“ > „Modul“.
  3. Füge den folgenden Code ein:

Sub ImportCSV()
    Dim name As String
    Dim source As Workbook
    Dim b As String
    b = "Import" ' Arbeitsblattname, in den die Daten kopiert werden sollen
    name = Application.GetOpenFilename("CSV Dateien (*.csv), *.csv", , "CSV Datei auswählen")

    If name <> "Falsch" Then
        Set source = Workbooks.Open(Filename:=name, Local:=True) ' Semikolon als Trennzeichen anerkennen
        source.Worksheets(1).Cells.Copy ThisWorkbook.Worksheets(b).Cells ' Daten kopieren
        source.Close
        Application.CutCopyMode = False
    End If
End Sub
  1. Füge einen Button in dein Excel-Arbeitsblatt ein:

    • Gehe zu „Entwicklertools“ > „Einfügen“ > „Button (Formsteuerung)“ und ziehe den Button auf dein Arbeitsblatt.
    • Weisen dem Button das Makro „ImportCSV“ zu.
  2. Klicke auf den Button, um die CSV-Datei zu öffnen und die Daten zu importieren.


Häufige Fehler und Lösungen

  • Problem: Die Daten erscheinen in einer einzigen Zelle.

    • Lösung: Stelle sicher, dass du Local:=True in der Workbooks.Open-Zeile verwendest. Dies sorgt dafür, dass Excel das Semikolon als Trennzeichen erkennt.
  • Problem: Es wird keine Datei ausgewählt.

    • Lösung: Überprüfe, ob der Benutzer im Dialogfeld eine Datei ausgewählt hat. Der Rückgabewert von GetOpenFilename sollte nicht „Falsch“ sein.

Alternative Methoden

Wenn du die CSV-Datei ohne Excel öffnen möchtest, kannst du auch externe Tools wie Notepad++ oder spezielle CSV-Editoren verwenden. Diese Tools bieten oft erweiterte Funktionen zur Bearbeitung von CSV-Dateien, bevor du sie in Excel importierst.

Ein weiteres Makro, das CSV-Dateien zeilenweise liest und verarbeitet, könnte so aussehen:

Sub ReadCSV()
    Dim filePath As String
    Dim lineData As String
    Dim rowNum As Integer
    filePath = Application.GetOpenFilename("CSV Dateien (*.csv), *.csv", , "CSV Datei auswählen")

    Open filePath For Input As #1
    rowNum = 1
    Do Until EOF(1)
        Line Input #1, lineData
        Cells(rowNum, 1).Value = lineData ' Daten in erste Spalte einfügen
        rowNum = rowNum + 1
    Loop
    Close #1
End Sub

Praktische Beispiele

Hier sind einige Szenarien, in denen das Öffnen einer CSV-Datei per Makro nützlich sein kann:

  • Datenanalyse: Du erhältst regelmäßig CSV-Dateien mit Verkaufsdaten, die du in Excel importieren und analysieren möchtest.
  • Berichtswesen: Du kannst Berichte automatisiert aus CSV-Dateien generieren, die aus einem anderen System exportiert wurden.
  • Datenübertragung: CSV-Dateien werden oft verwendet, um Daten zwischen verschiedenen Anwendungen zu übertragen. Mit einem Makro kannst du diesen Prozess automatisieren.

Tipps für Profis

  • Fehlerbehandlung: Füge eine Fehlerbehandlung in dein VBA-Skript ein, um unerwartete Probleme beim Öffnen oder Kopieren der Daten zu vermeiden. Beispiel:
On Error GoTo ErrorHandler
' Dein Code hier
Exit Sub
ErrorHandler:
MsgBox "Ein Fehler ist aufgetreten: " & Err.Description
  • Optimierung: Überlege, ob du die Daten vor dem Import in ein temporäres Array laden und dann in Excel schreiben möchtest, um die Geschwindigkeit zu erhöhen.

FAQ: Häufige Fragen

1. Wie kann ich eine CSV-Datei öffnen, die nicht im Standardformat ist? Du kannst die Open-Anweisung in VBA verwenden, um die Datei zeilenweise zu lesen und die Trennzeichen manuell festzulegen.

2. Funktioniert dieser Code in allen Excel-Versionen? Ja, dieser Code sollte in den meisten modernen Excel-Versionen funktionieren, die VBA unterstützen, insbesondere ab Excel 2007.

3. Kann ich mehrere CSV-Dateien in einem Rutsch importieren? Ja, du kannst den Importprozess in einer Schleife für mehrere Dateien gestalten, indem du Application.GetOpenFilename mehrmals aufrufst und die Dateien nacheinander öffnest.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige