![]() |
Betrifft: Excel einzelnes Datenblatt (gefilterte Tabelle) in
von: Jacques Jenny
Geschrieben am: 25.08.2014 20:18:03
Hallo an alle
Stehe vor folgender Herausforderung:
Habe ein Excel-File "ABC" mit mehreren Datenblättern, nun möchte ich das Datenblatt "Akquise" als CSV-Format an einen bestimmten Pfad exportieren & es soll den Excel-Filenamen bekommen.
Meine gefilterte Tabelle beginnt im Datenblatt mit der Überschrift ab dem Zellenbereich B16 bis Q16. (Zeile 1-15 darf nicht exportiert werden) je nach Filter können 1 bis 4000 Datensätze übertragen werden. Wenn möglich soll die Ergebniszeile der gefilterten Tabelle nicht übertragen werden.
Mit untenstehendem Modul kann ich exportieren, aber weis nicht wie die gefilterte Tabelle zu definieren ist.
Danke im Voraus für Eure VBA Hilfe.
Gruss Jacques
Sub CSVExport() 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 strMappenpfad = ActiveWorkbook.FullName strMappenpfad = Replace(strMappenpfad, ".xls", ".csv") strDateiname = "C:\JJ\TEST-Datenimport\IundExport\" & ActiveWorkbook.Name & ".csv" If strDateiname = "" Then Exit Sub strTrennzeichen = "," 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 strTemp = strTemp & """" & CStr(Zelle.Text) & """" & strTrennzeichen Next If Right(strTemp, 1) = strTrennzeichen Then strTemp = Left(strTemp, Len(strTemp) - 1) Print #1, strTemp strTemp = "" Next Close #1 Set Bereich = Nothing End Sub
![]() ![]() |
Betrifft: AW: Excel einzelnes Datenblatt (gefilterte Tabelle) in
von: Christian
Geschrieben am: 26.08.2014 15:25:25
Hallo Jacques,
prüfe zB., ob die Zeile versteckt ist:
... For Each Zeile In Bereich.Rows if Not Zeile.Hidden Then For Each Zelle In Zeile.Cells ... End If ...gruß
![]() ![]() |
Betrifft: AW: Excel einzelnes Datenblatt (gefilterte Tabelle) in
von: Jacques Jenny
Geschrieben am: 26.08.2014 21:09:13
Hallo Christian
Danke für Deinen Ansatz, leider bin ich in VBA noch nicht so versiert. Habe versucht Deinen Code einzufügen, komme aber nicht weiter, kannst Du eventuell den Code ausschreiben.
Danke und Gruss Jacques
![]() ![]() |
Betrifft: AW: Excel einzelnes Datenblatt (gefilterte Tabelle) in
von: Christian
Geschrieben am: 26.08.2014 21:34:42
Hallo Jacques,
nach der Zeile: "For Each Zeile In Bereich.Rows" musst du die Zeile "If Not Zeile.Hidden Then"
einfügen und nach dem "Next" der inneren Schleife "For Each Zelle In Zeile.Cells ... Next" die Zeile "End If" einfügen.
Gruß
Christian
![]() ![]() |
Betrifft: AW: Excel einzelnes Datenblatt (gefilterte Tabelle) in
von: Jacques Jenny
Geschrieben am: 26.08.2014 21:56:08
Hallo Christian
Danke für den Imput, leider erhalte ich nun nur noch Zeile 1 bis 16 anstelle von 16 bis Ende der gefilterten Daten. Wenn ich aus "If Not Zeile.Hidden Then" "If Zeile.Hidden Then" mache erhalte ich die Datensätze ab Zeile 16 aber leider wider alles und nicht nur die gefilterten Daten. Was mach ich noch falsch.
Danke und Gruss im Voraus
Jacques
Sub CSVExport() 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 strMappenpfad = ActiveWorkbook.FullName strMappenpfad = Replace(strMappenpfad, ".xls", ".csv") strDateiname = "C:\JJ\TEST-Datenimport\IundExport\" & ActiveWorkbook.Name & ".csv" If strDateiname = "" Then Exit Sub strTrennzeichen = "," If strTrennzeichen = "" Then Exit Sub Set Bereich = ActiveSheet.UsedRange Open strDateiname For Output As #1 For Each Zeile In Bereich.Rows If Not Zeile.Hidden Then For Each Zelle In Zeile.Cells strTemp = strTemp & """" & CStr(Zelle.Text) & """" & strTrennzeichen Next End If If Right(strTemp, 1) = strTrennzeichen Then strTemp = Left(strTemp, Len(strTemp) - 1) Print #1, strTemp strTemp = "" Next Close #1 Set Bereich = Nothing End Sub
![]() ![]() |
Betrifft: AW: Excel einzelnes Datenblatt (gefilterte Tabelle) in
von: Jacques Jenny
Geschrieben am: 26.08.2014 22:23:09
Hallo Christan
Habe meine Tabelle überprüft, das CSV funktioniert mit dem "If not Zeile.Hidden Then" aber die Datensätze werden in die Originalzeile geschrieben somit habe ich viele leere Zeilen dazwischen, wie kann ich die los werden.
Danke und Gruss
Jacques
![]() ![]() |
Betrifft: AW: Excel einzelnes Datenblatt (gefilterte Tabelle) in
von: Christian
Geschrieben am: 27.08.2014 08:10:44
Hallo Jacques,
so zB:
For Each Zeile In Bereich.Rows If Not Zeile.Hidden Then For Each Zelle In Zeile.Cells strTemp = strTemp & """" & CStr(Zelle.Text) & """" & strTrennzeichen Next If Right(strTemp, 1) = strTrennzeichen Then strTemp = Left(strTemp, Len(strTemp) - 1) End If Print #1, strTemp strTemp = "" End If Next
![]() |