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:
Da gibt es aber eine Fehlermeldung in der letzten Zeile "Worksheet class" Fehler
ein weiterer Versuch war dies hier, aber auch ohneErfolg
Für jegliche Unterstützung wäre ich sehr dankbar!
Gruß
Floh
[Edit Biber] Auch Donnerstags Codetags [/Edit]
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
ein weiterer Versuch war dies hier, aber auch ohneErfolg
wsData.Range.SpecialCells(xlVisible).Copy_
Destination:=wsNewReport.Range("A1")
Gruß
Floh
[Edit Biber] Auch Donnerstags Codetags [/Edit]
4 Antworten
- LÖSUNG 76109 schreibt am 09.09.2011 um 20:20:25 Uhr
- LÖSUNG VBAFloh schreibt am 10.09.2011 um 14:17:51 Uhr
- LÖSUNG 76109 schreibt am 10.09.2011 um 17:41:23 Uhr
- LÖSUNG VBAFloh schreibt am 10.09.2011 um 19:52:10 Uhr
- LÖSUNG 76109 schreibt am 10.09.2011 um 17:41:23 Uhr
- LÖSUNG VBAFloh schreibt am 10.09.2011 um 14:17:51 Uhr
LÖSUNG 09.09.2011 um 20:20 Uhr
Hallo VBAFloh!
Eher so:
oder so:
Gruß Dieter
Eher so:
Sub CopySpecialCells1()
Sheets("Tabelle1").Cells.SpecialCells(xlVisible).Copy Destination:=Sheets("Tabelle2").Range("A1")
End Sub
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
LÖSUNG 10.09.2011 um 14:17 Uhr
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
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
LÖSUNG 10.09.2011 um 17:41 Uhr
Hallo Floh!
Sofern sich im Kopierbereich keine Leerzeilen/Leerspalten befinden, in etwa so:
Gruß Dieter
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
LÖSUNG 10.09.2011 um 19:52 Uhr
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
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