Sichtbare Spalten in Excel speichern
Schritt-für-Schritt-Anleitung
Um nur die sichtbaren Spalten in Excel zu speichern, kannst du ein VBA-Makro verwenden. Hier ist eine Schritt-für-Schritt-Anleitung, wie du das umsetzen kannst:
- Öffne Excel und drücke
ALT + F11
, um den Visual Basic for Applications (VBA) Editor zu öffnen.
- Füge ein neues Modul hinzu: Klicke im Menü auf
Einfügen
und wähle Modul
.
- Kopiere den folgenden Code in das Modul:
Sub preisliste()
'Kopiert Tabelle in neue Arbeitsmappe, nur Werte, ausgeblendete Spalten werden gelöscht
Dim wbThis As Workbook, wbPreis As Workbook, wksPreis As Worksheet, Spalte As Integer
Set wbThis = ThisWorkbook
Set wksPreis = wbThis.Worksheets("Preisliste") 'Tabelle die kopiert werden soll
' Datei Speichern falls nicht gespeichert
If wbThis.Saved = False Then
wbThis.Save
End If
wksPreis.UsedRange.Value = wksPreis.UsedRange.Value 'Formeln durch Werte ersetzen
wksPreis.Copy 'Blatt in neue Arbeitsmappe kopieren
Set wbPreis = ActiveWorkbook
Set wksPreis = wbPreis.Worksheets(1)
With wksPreis
'Ausgeblendete Spalten löschen
For Spalte = .UsedRange.Column + .UsedRange.Columns.Count To 1 Step -1
If .Columns(Spalte).Hidden = True Then .Columns(Spalte).Delete
Next
'Alle Spalten einblenden
.Cells.EntireColumn.Hidden = False
End With
Application.Dialogs(xlDialogSaveAs).Show
'Datei mit Originaldaten schließen ohne zu speichern
wbThis.Close savechanges:=False
End Sub
- Schließe den VBA-Editor und gehe zurück zu Excel.
- Führe das Makro aus: Drücke
ALT + F8
, wähle preisliste
und klicke auf Ausführen
.
Häufige Fehler und Lösungen
- Laufzeitfehler #13, Typen unverträglich: Dieser Fehler tritt auf, wenn du versuchst, ein Arbeitsblatt mit einem Array-Element zuzuweisen. Stelle sicher, dass du die Zeile anpasst:
Set wks = wbThis.Worksheets(Blatt(I)) 'Tabelle die kopiert werden soll
- Makro funktioniert nicht: Überprüfe, ob alle Blätter, die du kopieren möchtest, tatsächlich existieren. Wenn du den Namen eines Blatts nicht korrekt angibst, wird das Makro fehlschlagen.
Alternative Methoden
Wenn du kein Makro verwenden möchtest, kannst du sichtbar Spalten manuell kopieren:
- Markiere die gewünschten Spalten (halte die
Strg
-Taste gedrückt, um mehrere Spalten auszuwählen).
- Kopiere die Spalten mit
Strg + C
.
- Öffne ein neues Arbeitsblatt und füge die Spalten mit
Strg + V
ein.
Diese Methode ist jedoch weniger effizient, besonders bei großen Datensätzen.
Praktische Beispiele
Hier ist ein Beispiel, wie du mehrere Arbeitsblätter in einer neuen Datei speichern kannst:
Sub BlattCopyNurSichtbareSpalten()
'Kopiert Tabellen in neue Arbeitsmappe, nur Werte, ausgeblendete Spalten werden gelöscht
Dim wbThis As Workbook, wbNeu As Workbook, wks As Worksheet, Spalte As Integer
Dim Blatt As Variant, I As Integer
Set wbThis = ThisWorkbook
' Datei Speichern falls nicht gespeichert
If wbThis.Saved = False Then
wbThis.Save
End If
Blatt = Array("Preisliste", "Tabelle1", "Tabelle2") 'Namen der Blätter, die Kopiert werden sollen
For I = 0 To UBound(Blatt)
Set wks = wbThis.Worksheets(Blatt(I)) 'Tabelle die kopiert werden soll
wks.UsedRange.Value = wks.UsedRange.Value 'Formeln durch Werte ersetzen
If I = 0 Then
wks.Copy 'Blatt in neue Arbeitsmappe kopieren
Set wbNeu = ActiveWorkbook
Else
'Blatt am Ende der neuen Arbeitsmappe einfügen
wks.Copy After:=wbNeu.Sheets(wbNeu.Sheets.Count)
End If
Set wks = wbNeu.Worksheets(wbNeu.Sheets.Count)
With wks
'Ausgeblendete Spalten löschen
For Spalte = .UsedRange.Column + .UsedRange.Columns.Count To 1 Step -1
If .Columns(Spalte).Hidden = True Then .Columns(Spalte).Delete
Next
'Alle Spalten einblenden
.Cells.EntireColumn.Hidden = False
End With
Next
Application.Dialogs(xlDialogSaveAs).Show
'Datei mit Originaldaten schließen ohne zu speichern
wbThis.Close savechanges:=False
End Sub
Tipps für Profis
- Nutze die
ScreenUpdating
-Eigenschaft: Setze Application.ScreenUpdating = False
, um das Flackern des Bildschirms zu vermeiden, während das Makro läuft.
- Optimiere deine Makros: Überlege, ob du nur die benötigten Spalten statt alle Spalten durchwerten möchtest, um die Leistung zu steigern.
- Teste dein Makro: Bevor du es auf einer wichtigen Datei ausführst, teste es auf einer Kopie deiner Datei.
FAQ: Häufige Fragen
1. Wie speichere ich nur sichtbare Spalten ohne VBA?
Du kannst die gewünschten Spalten manuell auswählen und kopieren, aber das ist bei großen Datenmengen unpraktisch.
2. Was mache ich, wenn das Makro nicht funktioniert?
Überprüfe, ob alle Arbeitsblattnamen korrekt sind und ob das Makro korrekt in das Modul eingefügt wurde. Achte auch auf mögliche Fehler in der Codierung.