Dieses Forum nutzt Cookies
Dieses Forum verwendet Cookies, um deine Login-Informationen zu speichern, wenn du registriert bist, und deinen letzten Besuch, wenn du es nicht bist. Cookies sind kleine Textdokumente, die auf deinem Computer gespeichert werden. Die von diesem Forum gesetzten Cookies werden nur auf dieser Website verwendet und stellen kein Sicherheitsrisiko dar. Cookies aus diesem Forum speichern auch die spezifischen Themen, die du gelesen hast und wann du zum letzten Mal gelesen hast. Bitte bestätige, ob du diese Cookies akzeptierst oder ablehnst.

Ein Cookie wird in deinem Browser unabhängig von der Wahl gespeichert, um zu verhindern, dass dir diese Frage erneut gestellt wird. Du kannst deine Cookie-Einstellungen jederzeit über den Link in der Fußzeile ändern.

[VBA]Autofilter - sichtbare Zellen in neue Datei speichern
#1
Hallo Community,

ich hab ein kleines VBA Problem, woraus ich nicht schlau werde. Versuche es schon lange, leider ohne Erfolg.
Ich möchte eine Datei filtern und anschließend NUR die gefilterten Daten in eine neue Excel Datei speichern. Er zeigt mir hier immer einen Fehler bei "ActiveWorkbook.SaveAs varSaveAsName" an.
Ich denke es liegt am Dateinamen. Wenn ich es auf xls ändere dann speichert er eine Datei ab, aber 1:1 die selbe. Ich brauch in der  anderen Datei jedoch nur das Tabellenblatt und die gefilterten Daten.

Würde mich sehr über eure Hilfe freuen.

Vielen Dank !


Private Sub CommandButton1_Click()
Dim varSaveAsName As Variant
varSaveAsName = Application.GetSaveAsFilename(, "EXCEL Files (*.xlsx), *.xlsx", , " ")
If VarType(varSaveAsName) <> vbBoolean Then

    Sheets("vorlage").Activate
    Sheets("vorlage").Range("A2").AutoFilter Field:=1, Criteria1:=Cells(1, 10)
    ActiveWorkbook.Worksheets("vorlage").Range("A2").SpecialCells(xlCellTypeVisible).Copy
    ActiveWorkbook.SaveAs varSaveAsName
    ActiveWorkbook.Close
End If
End Sub
Antworten Top
#2
Code:
Sub los()
Dim varSaveAsName As Variant
Dim wb As Workbook
Dim actwb As Workbook

Application.ScreenUpdating = False


varSaveAsName = Application.GetSaveAsFilename(, "EXCEL Files (*.xlsx), *.xlsx", , " ")
If VarType(varSaveAsName) <> vbBoolean Then

Set actwb = ActiveWorkbook
    With actwb.Sheets("Helper")
       .Activate
       .Range("A2").AutoFilter Field:=1, Criteria1:=Cells(1, 10)
       .Range("A2").SpecialCells(xlCellTypeVisible).Copy
        Set wb = Workbooks.Add
        wb.Sheets(1).Cells(1, 1).PasteSpecial
        wb.SaveAs varSaveAsName
        wb.Close
       
    End With
End If
Application.CutCopyMode = False
Application.ScreenUpdating = True

set actwb = nothing : set wb = nothing

End Sub

versuchs mal damit.
Antworten Top
#3
(12.01.2021, 01:15)ralf_b schrieb:
Code:
Sub los()
Dim varSaveAsName As Variant
Dim wb As Workbook
Dim actwb As Workbook

Application.ScreenUpdating = False


varSaveAsName = Application.GetSaveAsFilename(, "EXCEL Files (*.xlsx), *.xlsx", , " ")
If VarType(varSaveAsName) <> vbBoolean Then

Set actwb = ActiveWorkbook
    With actwb.Sheets("Helper")
       .Activate
       .Range("A2").AutoFilter Field:=1, Criteria1:=Cells(1, 10)
       .Range("A2").SpecialCells(xlCellTypeVisible).Copy
        Set wb = Workbooks.Add
        wb.Sheets(1).Cells(1, 1).PasteSpecial
        wb.SaveAs varSaveAsName
        wb.Close
       
    End With
End If
Application.CutCopyMode = False
Application.ScreenUpdating = True

set actwb = nothing : set wb = nothing

End Sub

versuchs mal damit.
Vielen Dank, klappt wunderbar !
Noch ne kurze Frage: Wie kann es sein, dass die neue Datei nach dem exportieren 9000 KB groß ist und die vorherige Datei mit deutlich mehr Inhalt nur 100 KB  ?
Antworten Top
#4
schau mal ob in den Tabellenblättern irgendwo die Zeilen bis 1 Million runter angezeigt werden.
Antworten Top
#5
(12.01.2021, 12:20)ralf_b schrieb: schau mal ob in den Tabellenblättern irgendwo die Zeilen bis 1 Million runter angezeigt werden.
Daran hats gelegen :) Danke dir !
Antworten Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste