Microsoft Excel

Herbers Excel/VBA-Archiv

Excel einzelnes Datenblatt (gefilterte Tabelle) in

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ß
Christian


  

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

Gruß
Christian


 

Beiträge aus den Excel-Beispielen zum Thema "Excel einzelnes Datenblatt (gefilterte Tabelle) in"