Anzeige
Archiv - Navigation
1184to1188
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
Inhaltsverzeichnis

CSV export

CSV export
Torsten
Hallo zusammen,
ich möchte eine Tabelle gerne als csv exportieren, die bis zur Zeile 97 mit Formeln gefüllt ist. Es werden aber nicht immer alle 97 Zeilen genutzt. Das hängt von den eingaben in einem anderem Tabellenblatt ab. Sprich, wenn nur 10 Zahlen eingetragen wurden, werden auch nur die ersten 11 Zeilen genutzt. (Erste Zeile ist eine Überschrift)
Das Problem ist, dass die übrigen 86 Zeilen ja noch mit Formeln gefüllt sind, was beim Export dazu führt, dass in diesen Zeilen ",,,,,," exportiert wird. Dies wiederum führt zu Fehlern in der Software, in dieses ich das csv importieren möchte.
Klar, öffnen mit Notepad und manuelles löschen der überflüssigen Zeichen ist eine Lösung, aber keine sehr elegante...
Habt Ihr bessere Ideen?
Hier noch das Makro:
Sub SaveCSV()
Dim Bereich As Object, Zeile As Object, Zelle As Object
Dim strTemp As String
Dim strDateiname As String
Dim strTrennzeichen As String
Dim strMappenpfad As String
Sheets("Sequence file").Select
strMappenpfad = ActiveWorkbook.FullName
strMappenpfad = Replace(strMappenpfad, ".xls", ".csv")
strDateiname = InputBox("Wie soll die CSV-Datei heißen (inkl. Pfad)?", "CSV-Export",  _
strMappenpfad)
If strDateiname = "" Then Exit Sub
strTrennzeichen = InputBox("Welches Trennzeichen soll verwendet werden?", "CSV-Export", ",")
If strTrennzeichen = "" Then Exit Sub
Set Bereich = ActiveSheet.UsedRange
Open strDateiname For Output As #1
For Each Zeile In Bereich.Rows
For Each Zelle In Zeile.Cells
If InStr(1, Zelle.Text, strTrennzeichen) > 0 Then
'Zellen, die ein Trennzeichen beinhalten in Anführungsstriche setzen
strTemp = strTemp & """" & CStr(Zelle.Text) & """" & strTrennzeichen
Else
strTemp = strTemp & CStr(Zelle.Text) & strTrennzeichen
End If
Next
If Right(strTemp, 1) = strTrennzeichen Then strTemp = Left(strTemp, Len(strTemp) - 1)
Print #1, strTemp
strTemp = ""
Next
Close #1
Set Bereich = Nothing
MsgBox "Datei wurde exportiert nach" & vbCrLf & strDateiname
End Sub

5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
Anzeige
AW: CSV export
15.11.2010 09:41:21
Rudi
Hallo,
teste mal so:
Sub tt()
Dim Bereich As Range
With ActiveSheet
Set Bereich = .Range(.Cells(1, 1), .Cells(Application.CountA(Sheets("eingabe").Columns(1)) + _
1, .UsedRange.Columns.Count))
End With
MsgBox Bereich.Address
End Sub

Gruß
Rudi
AW: CSV export
15.11.2010 09:48:53
Torsten
Hallo Rudi,
vielen Dank für deine schnelle Hilfe!
Leider habe ich zwei Probleme. Zum einen weiss ich leider nicht an welcher Stelle ich deinen code einfügen muss und zum anderen würde ich gerne, wenn Du über die Anzahl der Proben gehen möchtest, dass sich das Makro die Anzahl aus der Mappe "Home" aus Feld "I14" heranziehen sollte, wenn das möglich wäre.
Viele Grüsse
Torsten
Anzeige
AW: CSV export
15.11.2010 09:57:01
Rudi
Hallo,
ad 1: denk nach.
ad 2:
With ActiveSheet
Set Bereich = .Range(.Cells(1, 1), .Cells(Sheets("home").Range("I14") + 1, .UsedRange. _
Columns.Count))
End With

Gruß
Rudi
AW: CSV export
15.11.2010 10:27:27
Torsten
Ich hab es jetzt so eingefügt:
Sub SaveCSV()
' Speichert den Inhalt eines Arbeitsblatts als CSV-Datei
' mit wählbarem Trennzeichen und Maskierung von Einträgen
' von Nils@Kaczenski.de, 30.1.2003
' Ohne Gewähr!
'Dim Bereich As Object, Zeile As Object, Zelle As Object
Dim strTemp As String
Dim strDateiname As String
Dim strTrennzeichen As String
Dim strMappenpfad As String
Sheets("Sequence file").Select
strMappenpfad = ActiveWorkbook.FullName
strMappenpfad = Replace(strMappenpfad, ".xls", ".csv")
strDateiname = InputBox("Wie soll die CSV-Datei heißen (inkl. Pfad)?", "CSV-Export",  _
strMappenpfad)
If strDateiname = "" Then Exit Sub
strTrennzeichen = InputBox("Welches Trennzeichen soll verwendet werden?", "CSV-Export", ",")
If strTrennzeichen = "" Then Exit Sub
Dim Bereich As Range
With ActiveSheet
Set Bereich = .Range(.Cells(1, 1), .Cells(Sheets("home").Range("I14") + 1, .UsedRange. _
Columns.Count))
End With
'Set Bereich = ActiveSheet.UsedRange
Open strDateiname For Output As #1
For Each Zeile In Bereich.Rows
For Each Zelle In Zeile.Cells
If InStr(1, Zelle.Text, strTrennzeichen) > 0 Then
'Zellen, die ein Trennzeichen beinhalten in Anführungsstriche setzen
strTemp = strTemp & """" & CStr(Zelle.Text) & """" & strTrennzeichen
Else
strTemp = strTemp & CStr(Zelle.Text) & strTrennzeichen
End If
Next
If Right(strTemp, 1) = strTrennzeichen Then strTemp = Left(strTemp, Len(strTemp) - 1)
Print #1, strTemp
strTemp = ""
Next
Close #1
Set Bereich = Nothing
MsgBox "Datei wurde exportiert nach" & vbCrLf & strDateiname
End Sub

Das scheint zu funktionieren...
Danke und Gruss,
Torsten
Anzeige
dann ist ja gut. owT
15.11.2010 11:17:02
Rudi

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige