Anzeige
Archiv - Navigation
792to796
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
792to796
792to796
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Speichern nur sichtbarer Spalten

Speichern nur sichtbarer Spalten
25.08.2006 12:37:40
Obler
Hallo,
ich verwende eine Preisliste mit mehreren Arbeitsblättern zum kalkulieren. Beim verschicken der Preisliste sollen aber nicht alle Spalten enthalten sein (interne Berechnungen). Möchte aber nicht den passwortschutz verwenden, nicht sicher genug!
Deshalb würde ich gerne alle arbeitsbätter mit nur den sichtbaren Spalten in einem neuen excel file abspeichern?
Hat irgenwer eine idee

11
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Speichern nur sichtbarer Spalten
25.08.2006 14:51:17
fcs
Hallo Obler,
geht am besten per Makro.
Als erstes Datei ggf. speichern, dann im Blatt alle Formeln durch Werte ersetzen (falls erforderlich), dann Preisliste in neue Datei kopieren und die ausgeblendeten Spalten löschen oder alle Spalten einblenden und die gewünschten Spalten löschen.
Gruß
Franz
Beispiel-Makro:

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 Speichenrn 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

Anzeige
AW: Speichern nur sichtbarer Spalten
28.08.2006 08:24:58
Gerhard
Hallo Franz
danke funktioniert super. Vielen Dank für die schnelle Lösung
Gerhard
AW: Speichern nur sichtbarer Spalten
28.08.2006 09:31:05
Gerhard
Hallo Franz,
Wie kann man dein macro noch erweitern das gleichzeitig "mehrere Arbeitsblätter" exportiert werden?
Vielen Dank im voraus
AW: Speichern nur sichtbarer Spalten - Zusatzfrage
28.08.2006 11:15:52
fcs
Hallo Gerhard,
möchtest du aus einer Arbeitsmappe (Excel-Datei) mehrere Tabellenblätter auf diese Weise in eine neue Datei kopieren?
Oder soll aus mehreren Arbeitsmappen(Excel-Dateien) eine bestimmte Tabelle so in eine einzige neue Datei kopiert werden?
Gruß
Franz
AW: Speichern nur sichtbarer Spalten - Zusatzfrage
28.08.2006 13:27:07
Gerhard
Hallo Franz,
Ja, ich möchte aus einer Arbeitsmappe (Excel-Datei) mehrere Tabellenblätter auf diese Weise in eine neue Datei kopieren!
Vielen Dank in voraus,
PS: Hab übrigens auf Basis deines Codes weitergearbeitet bin aber gescheitert. Meine VB Kenntnisse sind einfach zu gering. Auch der Macrorecorder brachte keinen Erfolg.
Anzeige
AW: Speichern nur sichtbarer Spalten - Zusatzfrage
28.08.2006 14:14:42
fcs
Hi,
die Anpassung für mehrere Tabellen sieht so aus:

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
'Blatt = Array(1,3,5) 'Alternative mit Nummern der Blätter
For I = 0 To UBound(Blatt)
Set wks = wbThis.Worksheets(Blatt) '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

Du muss nur die Liste der Tabellen-Namen anpassen/ergänzen.
Gruß
Franz
Anzeige
AW: Speichern nur sichtbarer Spalten - Zusatzfrage
28.08.2006 16:12:24
Gerhard
Hallo Franz,
bekomme leider bei
Set wks = wbThis.Worksheets(Blatt) 'Tabelle die kopiert werden soll
einen Laufzeitfehler #13, Typen unverträglich
Hier meine konfiguration!

Private Sub CommandButton1_Click()
'Kopiert Tabellen in neue Arbeitsmappe, nur Werte, ausgeblendete Spalten werden gelöscht
Dim wbThis As Workbook
Dim wbNeu As Workbook
Dim wks As Worksheet
Dim Spalte As Integer
Dim Blatt As Variant
Dim I As Integer
Set wbThis = ThisWorkbook
' Datei Speichern falls nicht gespeichert
If wbThis.Saved = False Then
wbThis.Save
End If
Blatt = Array("eCopy SSOP 3.1", "uniFLOW direct", "uniFLOW dealer", _
"Equitrac Office 3.0", "PAS + Pagerouter", "NSA MEAP", "NSA", "iW Publishing Man.", _
"Callisto", "BTA V3.6", "BTA Gold V3.6", "UGW", "Unix Linux driver", "OS400 driver", _
"ADOS b25") 'Namen der Blätter, die Kopiert werden sollen
'Blatt = Array(1, 3, 5) 'Alternative mit Nummern der Blätter
For I = 0 To UBound(Blatt)
Set wks = wbThis.Worksheets(Blatt) '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

Noch eine Idee?
Find es super das du mir so hilfst, ich lerne sehr viel dabei
Anzeige
AW: Speichern nur sichtbarer Spalten - Zusatzfrage
28.08.2006 22:31:15
fcs
Hallo Gerhard,
da hab ich beim Überarbeiten eine Kleinigkeit zuviel gelöscht oder vergessen.
Ändere die Zeile wie folgt:

Set wks = wbThis.Worksheets(Blatt(I)) 'Tabelle die kopiert werden soll

Evtl. muss für den CommandButton im Eigenschaftenfenster noch die Eigenschaft "TakeFocusOnClick" auf "False" gesetzt werden. Zumindest bei mir mit Excel97 notwendig gewesen, da sonst ein paar Zeilen später in der Copy-Anweisung ein Fehler kommt.
gruss
Franz
AW: Speichern nur sichtbarer Spalten - Zusatzfrage
29.08.2006 09:19:12
Gerhard
Hallo Franz,
alles funktioniert. Suuuuuper!
Danke vielmals
AW: Speichern nur sichtbarer Spalten
25.08.2006 15:09:10
Peter
Hallo Obler,
so sollte es gehen - ggf. Tabellen-Namen anpassen
Public

Sub Nur_eingeblendete()
Dim WkSh_Q     As Worksheet
Dim WkSh_Z     As Worksheet
Dim iSpalte_Q  As Integer
Dim iSpalte_Z  As Integer
Application.ScreenUpdating = False
Set WkSh_Q = Worksheets("Tabelle1")
Set WkSh_Z = Worksheets("Tabelle3")
iSpalte_Z = 1
For iSpalte_Q = 1 To 256
If WkSh_Q.Rows(iSpalte_Q).EntireColumn.Hidden = False Then
WkSh_Q.Columns(iSpalte_Q).Copy WkSh_Z.Columns(iSpalte_Z)
iSpalte_Z = iSpalte_Z + 1
End If
Next iSpalte_Q
Application.ScreenUpdating = True
End Sub

Viele Grüße Peter
Eine kurze Nachricht, ob es läuft, wäre nett - danke.
Anzeige
AW: Speichern nur sichtbarer Spalten
28.08.2006 08:27:15
Gerhard
Hallo Peter,
Deine Lösung funktioniert.
Franz hatte auch die Funktion mit dem abspeichern in eine neue Date inkludiert.
Deshalb hab ich seine Lösung genommen.
Trotzdem vieln Dank an Dich

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige