vbafloh

Sichtbare Zellen (gefiltert und ausgeblendet) aus einem Workbook in ein neues Kopieren

Hallo zusammen,

bin noch grün im VBA und sehe den Wald vor lauter Bäumen nicht mehr. Kann mir bitte jemand die Augen öffnen...
Hab eine Tabelle gefiltert und Spalten ausgeblendet, diese Darstellung soll so mit VBA in eine neue Datei kopiert werden.

Die Tabelle ist umfangreich (hier wsQData), die Länge ist variabel

Dim wsData as Worksheet 'Quell - Daten
Dim wsNewReport as Worksheet 'Ziel -Daten

Mit verschiedenen Funktionen sind auf der Tabelle einige Zeilen herausgefiltert worden
gleichzeitig habe ich einige Spalten ausgeblendet (verschiedene VBA module)

Jetzt möchte ich genau diese Darstellung in eine neue Datei + neues Worksheet kopieren.
Also die ausgeblendeten Zeilen und Spalten sollen nicht kopiert werden.

Der MakroRecorder ergab so etwas:
                           wsData.Activate
                           Cells.Select
                           Selection.Copy
                           wsNewReport.Activate
                           Application.CutCopyMode = False
                           ActiveSheet.PasteSpecial Format:=1, Link:=1, DisplayAsIcon:=False, _
                                                  IconFileName:=False
Da gibt es aber eine Fehlermeldung in der letzten Zeile "Worksheet class" Fehler

ein weiterer Versuch war dies hier, aber auch ohneErfolg
           wsData.Range.SpecialCells(xlVisible).Copy_
           Destination:=wsNewReport.Range("A1")  
Für jegliche Unterstützung wäre ich sehr dankbar!

Gruß
Floh

[Edit Biber] Auch Donnerstags Codetags [/Edit]
Auf Facebook teilen
Auf X (Twitter) teilen
Auf Reddit teilen
Auf Linkedin teilen

Content-ID: 172848

Url: https://administrator.de/forum/sichtbare-zellen-gefiltert-und-ausgeblendet-aus-einem-workbook-in-ein-neues-kopieren-172848.html

Ausgedruckt am: 26.04.2025 um 11:04 Uhr

76109
76109 09.09.2011 um 20:20:25 Uhr
Goto Top
Hallo VBAFloh!

Eher so:
Sub CopySpecialCells1()
    Sheets("Tabelle1").Cells.SpecialCells(xlVisible).Copy Destination:=Sheets("Tabelle2").Range("A1")  
End Sub
oder so:
Sub CopySpecialCells2()
    Dim Wks1 As Worksheet, Wks2 As Worksheet
    
    Set Wks1 = Sheets("Tabelle1")  
    Set Wks2 = Sheets("Tabelle2")  
    
    Wks1.Cells.SpecialCells(xlVisible).Copy Destination:=Wks2.Range("A1")  
End Sub

Gruß Dieter
VBAFloh
VBAFloh 10.09.2011 um 14:17:51 Uhr
Goto Top
Hallo Dieter,

vielen Dank!!!!!!
Ja mit "Cells" hat er es dann genommen.
Allerdings hatte er dann irgendwie Probleme mit der Datenmenge gekriegt und ist abgeschmiert.


Es funktioniert jetzt, wenn ich einen genauen Range angebe.


Sub CopySpecialCells3()
Dim Wks1 As Worksheet, Wks2 As Worksheet

Set Wks1 = Sheets("Tabelle1")
Set Wks2 = Sheets("Tabelle2")

Wks1.Range("A1:EZ300").SpecialCells(xlVisible).Copy Destination:=Wks2.Range("A1")

End Sub


Das ist für mich auch ok, nur "EZ300" muß ich noch dynamisch ermitteln und dann variable übergeben.
Hierzu muß ich jetzt mal das Froum durchforsten, steht hier sicher schon irgendwo....

Was mir auch noch nicht gefällt ist, er übernimmt alle Formate außer die Spaltenbreite.
Gibt es hierfür noch einen Parameter, den ich dahinter schreiben muß?

Vielen Dank für die Unterstützung!

Gruß
Floh
76109
76109 10.09.2011 um 17:41:23 Uhr
Goto Top
Hallo Floh!

Sofern sich im Kopierbereich keine Leerzeilen/Leerspalten befinden, in etwa so:
Sub CopySpecialCells3()
    Dim Wks1 As Worksheet, Wks2 As Worksheet, CopyRange As Range, ColCount As Long
    
    Set Wks1 = Sheets("Tabelle1")  
    Set Wks2 = Sheets("Tabelle2")  
    
   'Kopierbereich bis zur 1. Leerzeile/Leerspalte  
    Set CopyRange = Wks1.Range("A1").CurrentRegion  
    
   'Daten nach Ziel kopieren  
    CopyRange.SpecialCells(xlVisible).Copy Destination:=Wks2.Range("A1")  
 
    With Wks2
        'Letzte Spalte in Ziel ermitteln  
         ColCount = .Range("A1").CurrentRegion.Columns.Count  
    
        'Spaltenbreite automatisch anpassen  
        .Range(.Columns(1), .Columns(ColCount)).AutoFit
    End With
End Sub

Gruß Dieter
VBAFloh
VBAFloh 10.09.2011 um 19:52:10 Uhr
Goto Top
Hallo Dieter,


vielen Dank!
Hat super geklappt mit der Region!

Das mit dem "AutoFit" ergibt nicht ganz das gewünschte Ergebnis, da ich Zellen mit Zeilenumbruch habe.

Aber da wird mir noch was einfallen.
Glaube ich hab Prinzip verstanden.
Wird wahrscheinlich auf eine Schleife mit der Queel Spaltenbreite hinauslaufen.

Vielen Dank nochmal und ein schönes WE.

Gruß
Floh