Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit
GELÖST

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

Frage Microsoft Microsoft Office

Mitglied: VBAFloh

VBAFloh (Level 1) - Jetzt verbinden

08.09.2011, aktualisiert 22:05 Uhr, 6579 Aufrufe, 4 Kommentare

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:
01.
                           wsData.Activate 
02.
                           Cells.Select 
03.
                           Selection.Copy 
04.
                           wsNewReport.Activate 
05.
                           Application.CutCopyMode = False 
06.
                           ActiveSheet.PasteSpecial Format:=1, Link:=1, DisplayAsIcon:=False, _ 
07.
                                                  IconFileName:=False
Da gibt es aber eine Fehlermeldung in der letzten Zeile "Worksheet class" Fehler

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

Gruß
Floh

[Edit Biber] Auch Donnerstags Codetags [/Edit]
Mitglied: 76109
09.09.2011 um 20:20 Uhr
Hallo VBAFloh!

Eher so:
01.
Sub CopySpecialCells1() 
02.
    Sheets("Tabelle1").Cells.SpecialCells(xlVisible).Copy Destination:=Sheets("Tabelle2").Range("A1") 
03.
End Sub
oder so:
01.
Sub CopySpecialCells2() 
02.
    Dim Wks1 As Worksheet, Wks2 As Worksheet 
03.
     
04.
    Set Wks1 = Sheets("Tabelle1") 
05.
    Set Wks2 = Sheets("Tabelle2") 
06.
     
07.
    Wks1.Cells.SpecialCells(xlVisible).Copy Destination:=Wks2.Range("A1") 
08.
End Sub
Gruß Dieter
Bitte warten ..
Mitglied: VBAFloh
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
Bitte warten ..
Mitglied: 76109
10.09.2011 um 17:41 Uhr
Hallo Floh!

Sofern sich im Kopierbereich keine Leerzeilen/Leerspalten befinden, in etwa so:
01.
Sub CopySpecialCells3() 
02.
    Dim Wks1 As Worksheet, Wks2 As Worksheet, CopyRange As Range, ColCount As Long 
03.
     
04.
    Set Wks1 = Sheets("Tabelle1") 
05.
    Set Wks2 = Sheets("Tabelle2") 
06.
     
07.
   'Kopierbereich bis zur 1. Leerzeile/Leerspalte 
08.
    Set CopyRange = Wks1.Range("A1").CurrentRegion 
09.
     
10.
   'Daten nach Ziel kopieren 
11.
    CopyRange.SpecialCells(xlVisible).Copy Destination:=Wks2.Range("A1") 
12.
  
13.
    With Wks2 
14.
        'Letzte Spalte in Ziel ermitteln 
15.
         ColCount = .Range("A1").CurrentRegion.Columns.Count 
16.
     
17.
        'Spaltenbreite automatisch anpassen 
18.
        .Range(.Columns(1), .Columns(ColCount)).AutoFit 
19.
    End With 
20.
End Sub
Gruß Dieter
Bitte warten ..
Mitglied: VBAFloh
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
Bitte warten ..
Neuester Wissensbeitrag
Humor (lol)

Linkliste für Adventskalender

(3)

Information von nikoatit zum Thema Humor (lol) ...

Ähnliche Inhalte
Batch & Shell
Ordner erstellen ll Datei hinein kopieren (1)

Frage von heyalice zum Thema Batch & Shell ...

VB for Applications
gelöst Excel VBA Eine oder mehrere Zellen Verschieben (2)

Frage von batchnewbie zum Thema VB for Applications ...

Datenbanken
gelöst DB2 Daten in Windows DB2 kopieren (1)

Frage von Emheonivek zum Thema Datenbanken ...

Heiß diskutierte Inhalte
Router & Routing
gelöst Ipv4 mieten (22)

Frage von homermg zum Thema Router & Routing ...

Windows Server
DHCP Server switchen (20)

Frage von M.Marz zum Thema Windows Server ...

Exchange Server
gelöst Exchange 2010 Berechtigungen wiederherstellen (20)

Frage von semperf1delis zum Thema Exchange Server ...

Hardware
gelöst Negative Erfahrungen LAN-Karten (19)

Frage von MegaGiga zum Thema Hardware ...