Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: markierte Zellen als einzelne CSV abspeichern

markierte Zellen als einzelne CSV abspeichern
24.09.2015 17:08:02
Ralf
Hallo miteinander,
ich habe folgendes Problem, und hoffe das mir jemand helfen kann.
Aus einer Tabelle sollen markierte Zellen mit einigen Festen Werten aus dieser Tabelle als einzelne CSV (; getrennt) abgespeichert werden. Diese CSV's enthalten dann nur die Zeile 1 Daten. Diese soll sich folgendermaßen zusammensetzen: "Wert aus C3;akt.Datum(dd.mm.jjjj);akt.Zeit(hh.mm.ss);markierter Bereich immer aus Spalte D);Wert aus C9;;;;Wert aus c5;Wert aus F5;Wert aus E7".
Der Dateiname der CSV sollte sich aus dem akt.Datum/Uhrzeit zusammensetzen (jjjj-mm-dd-hh-mm-ss-(wenn gleiche Sekunde noch eine fortlaufende Nummer,sonst langt eine 1)).
Den Speicherpfad könnte mann direkt im Makro editieren oder ich würde ihn in eine
Zelle (im Beispiel L3) hinterlegen).
Wenn ich z.B. Zellen D17:D22 markieren würde sollten 6 CSV-Dateien (siehe angehängtes Muster) erzeugt werden.
Wäre so etwas umzusetzen? Wenn ja wäre es toll und mir jede Menge händische Arbeit ersparen.
War leider schlecht zu erklären aber anhand der Beispiele vielleicht doch verständlich.
Hier der Link zu den Beispieldateien:
https://www.herber.de/bbs/user/100374.zip
Vielen Dank schon mal im voraus...
Gruß Ralf

Anzeige

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: markierte Zellen als einzelne CSV abspeichern
24.09.2015 19:06:47
fcs
Hallo Ralf,
hier ein entsprechendes Makro.
Gruß
Franz
Sub Generate_CSV_from_Selection()
Dim wks As Worksheet, rngBereich As Range, lngI As Long
Dim strCSV As String, strPfad As String
Dim intFF As Integer
Dim strDatum As String, strZeit As String, strText As String
Set rngBereich = Selection
If rngBereich.Column  4 Or rngBereich.Columns.Count > 1 Then
MsgBox "Bitte nur einen Zellbereich in Spalte D selektieren!", _
vbOKOnly, "Makro: Generate_CSV_from_Selection"
Else
Set wks = ActiveSheet
strPfad = wks.Range("L3").Text & Application.PathSeparator  '"C:\Users\Public\Test"
strDatum = Format(Date, "DD.MM.YYYY")
strZeit = Format(Time, "hh:mm:ss")
strCSV = strPfad & Format(Now, "YYYY-MM-DD-hh-mm-ss-")
For lngI = 1 To rngBereich.Cells.Count
'            If rngBereich.Cells(lngI, 1)  "" Then
intFF = VBA.FreeFile()
Open strCSV & Format(lngI, "00") & ".csv" For Output As intFF
With wks
strText = .Range("C3").Value & ";" _
& strDatum & ";" & strZeit & ";" _
& rngBereich.Cells(lngI, 1).Value & ";" _
& .Range("C9") & ";;;;" _
& .Range("C5") & ";" _
& .Range("F5") & ";" _
& .Range("E7")
End With
Print #intFF, strText
Close intFF
'            End If
Next
End If
End Sub

Anzeige
AW: markierte Zellen als einzelne CSV abspeichern
24.09.2015 19:52:19
Ralf
Hallo Franz,
wie bisher alle deine Lösungen...PERFEKT.
Muss nur das Layout verändern, da es mit verbundenen Zellen nicht funktioniert. Ist aber das kleinste Übel.
Eine Frage hätte ich noch:
Ist es möglich, die Zeilen, aus denen man die Werte extrahiert hat farblich zu markieren?
Das hätte den Vorteil, das man nicht aus versehen Daten 2 Mal exportiert. Das würde das nachgeschaltete automatisierte System bestimmt ordentlich durcheinanderbringen.
Wenn das nicht möglich ist natürlich auch so meinen herzlichsten Dank.
Gruß Ralf

Anzeige
AW: markierte Zellen als einzelne CSV abspeichern
24.09.2015 22:53:23
fcs
Hallo Ralph,
die Werte in Spalte D jeweils zu markieren ist kein Problem.
Bei Verwendung von Cells statt Range sollten auch die verbundenen Zellen weniger Probleme machen.
Gruß
Franz
Sub Generate_CSV_from_Selection()
Dim wks As Worksheet, rngBereich As Range, lngI As Long
Dim strCSV As String, strPfad As String
Dim intFF As Integer
Dim strDatum As String, strZeit As String, strText As String
Set rngBereich = Selection
If rngBereich.Column  4 Or rngBereich.Columns.Count > 1 Then
MsgBox "Bitte nur einen Zellbereich in Spalte D selektieren!", _
vbOKOnly, "Makro: Generate_CSV_from_Selection"
Else
Set wks = ActiveSheet
strPfad = wks.Range("L3").Text & Application.PathSeparator  '"C:\Users\Public\Test"
strDatum = Format(Date, "DD.MM.YYYY")
strZeit = Format(Time, "hh:mm:ss")
strCSV = strPfad & Format(Now, "YYYY-MM-DD-hh-mm-ss-")
For lngI = 1 To rngBereich.Rows.Count
'            If rngBereich.Cells(lngI, 1)  "" Then
intFF = VBA.FreeFile()
Open strCSV & Format(lngI, "00") & ".csv" For Output As intFF
With wks
strText = .Cells(3, 3).Value & ";" _
& strDatum & ";" & strZeit & ";" _
& rngBereich.Cells(lngI, 1).Value & ";" _
& .Cells(9, 3) & ";;;;" _
& .Cells(5, 3) & ";" _
& .Cells(5, 6) & ";" _
& .Cells(7, 5)
End With
Print #intFF, strText
Close intFF
'            End If
Next
rngBereich.Interior.Color = RGB(Red:=0, Green:=255, Blue:=0) 'grün
End If
End Sub

Anzeige
AW: markierte Zellen als einzelne CSV abspeichern
25.09.2015 07:48:47
Ralf
Hallo Franz,
die anderen User hier im Forum sind ja schon gut....
Deine Lösungen sind aber so was auf den Punkt, das ich immer hoffe du nimmst dich meiner an.
Du brauchst für die exakte Lösung kürzer als ich zum formulieren.
Nochmals vielen, vielen Dank
Gruß Ralf
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Anzeige

Infobox / Tutorial

Markierte Zellen als CSV speichern in Excel


Schritt-für-Schritt-Anleitung

Um markierte Zellen in Excel als CSV-Dateien zu speichern, kannst du das folgende VBA-Makro verwenden. Stelle sicher, dass du die entsprechende Excel-Version hast, die Makros unterstützt (z.B. Excel 2010 oder höher).

  1. Öffne Excel und drücke ALT + F11, um den Visual Basic for Applications (VBA) Editor zu öffnen.

  2. Füge ein neues Modul hinzu: Klicke auf Einfügen > Modul.

  3. Kopiere und füge den folgenden Code ein:

    Sub Generate_CSV_from_Selection()
       Dim wks As Worksheet, rngBereich As Range, lngI As Long
       Dim strCSV As String, strPfad As String
       Dim intFF As Integer
       Dim strDatum As String, strZeit As String, strText As String
       Set rngBereich = Selection
       If rngBereich.Column <> 4 Or rngBereich.Columns.Count > 1 Then
           MsgBox "Bitte nur einen Zellbereich in Spalte D selektieren!", _
           vbOKOnly, "Makro: Generate_CSV_from_Selection"
       Else
           Set wks = ActiveSheet
           strPfad = wks.Range("L3").Text & Application.PathSeparator
           strDatum = Format(Date, "DD.MM.YYYY")
           strZeit = Format(Time, "hh:mm:ss")
           strCSV = strPfad & Format(Now, "YYYY-MM-DD-hh-mm-ss-")
           For lngI = 1 To rngBereich.Cells.Count
               intFF = VBA.FreeFile()
               Open strCSV & Format(lngI, "00") & ".csv" For Output As intFF
               With wks
                   strText = .Range("C3").Value & ";" _
                   & strDatum & ";" & strZeit & ";" _
                   & rngBereich.Cells(lngI, 1).Value & ";" _
                   & .Range("C9") & ";;;;" _
                   & .Range("C5") & ";" _
                   & .Range("F5") & ";" _
                   & .Range("E7")
               End With
               Print #intFF, strText
               Close intFF
           Next
           rngBereich.Interior.Color = RGB(Red:=0, Green:=255, Blue:=0) ' grün
       End If
    End Sub
  4. Schließe den VBA-Editor und kehre zu Excel zurück.

  5. Markiere die Zellen in Spalte D, die du als CSV speichern möchtest.

  6. Klicke auf Entwicklertools > Makros, wähle das Makro Generate_CSV_from_Selection und klicke auf Ausführen.


Häufige Fehler und Lösungen

  • Fehler: "Bitte nur einen Zellbereich in Spalte D selektieren!"

    • Lösung: Stelle sicher, dass du nur eine Auswahl von Zellen in Spalte D triffst und keine anderen Spalten.
  • Fehler: CSV-Dateien werden nicht erstellt

    • Lösung: Überprüfe den Speicherpfad, der in Zelle L3 hinterlegt ist. Stelle sicher, dass der Pfad gültig ist und dass du die notwendigen Berechtigungen hast.

Alternative Methoden

Falls du keine VBA-Makros verwenden möchtest, kannst du die markierten Zellen auch manuell kopieren und in ein Textdokument einfügen, um eine CSV-Datei zu erstellen. Diese Methode ist jedoch viel zeitaufwändiger.

  1. Wähle die Zellen aus, die du exportieren möchtest.
  2. Kopiere die Zellen (CTRL + C).
  3. Öffne einen Texteditor (z.B. Notepad).
  4. Füge die kopierten Zellen ein (CTRL + V).
  5. Speichere die Datei mit der Endung .csv.

Praktische Beispiele

Wenn du beispielsweise die Zellen D17:D22 markierst, wird das Makro automatisch 6 CSV-Dateien erstellen, die jeweils die Daten entsprechend deinem festgelegten Format enthalten.

Beispiel für eine CSV-Datei:

Wert aus C3;akt.Datum;akt.Zeit;Wert aus D17;Wert aus C9;;;;Wert aus C5;Wert aus F5;Wert aus E7

Tipps für Profis

  • Fehlerbehebung: Aktiviere die Entwickleroptionen in Excel, um Makros einfacher zu verwalten.
  • Erweiterung des Makros: Du kannst das Makro erweitern, um weitere Funktionen hinzuzufügen, z.B. das automatische Sortieren der CSV-Dateien oder das Hinzufügen von Headern.
  • Sicherung: Mache regelmäßig Backups deiner Excel-Dateien und der erstellten CSV-Dateien, um Datenverlust zu vermeiden.

FAQ: Häufige Fragen

1. Kann ich das Makro auch in älteren Excel-Versionen verwenden? Ja, das Makro sollte in Excel 2010 und neueren Versionen funktionieren, die Makros unterstützen.

2. Ist es möglich, das Layout der exportierten CSV-Dateien anzupassen? Ja, du kannst den Code im Makro anpassen, um das Layout der CSV-Dateien nach deinen Wünschen zu gestalten.

3. Wie kann ich die Farben der markierten Zellen ändern? Du kannst die RGB-Werte im Code anpassen, um verschiedene Farben für die Markierung der Zellen zu verwenden.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige