Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
784to788
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
784to788
784to788
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

einige Tabellenblätter als Werte in neue Datei

einige Tabellenblätter als Werte in neue Datei
25.07.2006 09:29:34
{mskro}
Hallo,
ich habe immer noch ein unglöstes Problem, was in einem eigenen Thread besser aufgehoben ist. Dank Matthias G bin ich nun zwar in der Lage die ganze Datei nur mit Werten zu Kopieren. Es sollen aber nur bestimmte Tabellenblätter kopiert werden und die Makros der Ursprungsmappe nicht mit kopiert werden. Hat jemand eine Idee, wie das VBA dazu aussehen müsste?
Derzeit mache ich das mit:

Sub Test()’ Lösung von {mskro}
Sheets(Array("Tabelle1", "Tabelle2", "Tabelle3", "Tabelle4")).Select’ ca 20 Tabellenblätter
Sheets("Tabelle1").Activate
Sheets(Array("Tabelle1", "Tabelle2", "Tabelle3", "Tabelle4")).Copy
End Sub

Hierbei werden allerdings auch die darin enthaltenen Sverweise mit kopiert, die nicht benötigt werden und das ganz sehr lange dauern lassen (über 500 komplexe SVerweise).

Sub Kopiere_Werte()’ Lösung von Matthias G
Dim fn As String, sh As Worksheet
Dim calcMode
With ActiveWorkbook
fn = "Werte_" & .Name
If Not .Saved Then .Save
.SaveAs Filename:=.Path & "\" & fn
calcMode = Application.Calculation
Application.Calculation = xlCalculationManual
For Each sh In .Worksheets
sh.Cells.Copy
sh.Cells.PasteSpecial Paste:=xlPasteValues
Next sh
Application.Calculation = calcMode
Application.CutCopyMode = False
.Save
End With
End Sub

Wer ist vielleicht in der Lage, daraus eine komplette Version zu machen, die meine Wünsche erfüllt?
Gruss Manfred

8
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: einige Tabellenblätter als Werte in neue Datei
25.07.2006 09:55:46
Matthias
Hallo Manfred,
ok, nächster Versuch:

Sub KopiereWerte()
Dim Blätter()
Dim Blatt
Dim WB As Workbook
Dim fn As String
Const tmpname = "sdgfhsgh"
'zu kopierende Blätter
Blätter = Array("Tabelle1", "Tabelle2", "Tabelle4")
fn = ThisWorkbook.Path & "\Werte_" & ThisWorkbook.Name
Application.ScreenUpdating = False
'neue Mappe anlegen:
Set WB = Workbooks.Add(Template:=xlWBATWorksheet)
ActiveSheet.Name = tmpname
'Namen der neuen Mappe vergeben:
For Each Blatt In Blätter
WB.Sheets.Add After:=WB.Sheets(WB.Sheets.Count)
ActiveSheet.Name = Blatt
Next
'temp-Blatt löschen:
Application.DisplayAlerts = False
WB.Sheets(tmpname).Delete
Application.DisplayAlerts = True
'Werte kopieren:
For Each Blatt In Blätter
ThisWorkbook.Sheets(Blatt).Cells.Copy
WB.Sheets(Blatt).Cells.PasteSpecial Paste:=xlPasteValues
'optional: wenn auch die Formate kopiert werden sollen
'WB.Sheets(Blatt).Cells.PasteSpecial Paste:=xlPasteFormats
Next
Application.CutCopyMode = False
'optional: Markierungen entfernen (auf A1 setzen):
WB.Activate
For Each Blatt In Blätter
WB.Sheets(Blatt).Activate
Range("A1").Select
Next
Application.ScreenUpdating = True
'Mappe speichern:
WB.SaveAs Filename:=fn
End Sub

Gruß Matthias
Anzeige
AW: einige Tabellenblätter als Werte in neue Datei
25.07.2006 10:19:29
{mskro}
Hallo Matthias,
das klappt ja schon mal rasend schnell. Wenn du jetzt noch die Zellenformate wiederherstellen könntest, wäre es richtig perfekt.
Gruss Manfred
AW: einige Tabellenblätter als Werte in neue Datei
25.07.2006 10:22:23
Matthias
Hallo Manfred,
siehe diese Zeilen im Code:

'optional: wenn auch die Formate kopiert werden sollen
'WB.Sheets(Blatt).Cells.PasteSpecial Paste:=xlPasteFormats

Du musst nur die 2. Zeile auskommentieren (das ' entfernen).
Gruß Matthias
AW: einige Tabellenblätter als Werte in neue Datei
25.07.2006 10:48:02
{mskro}
Hallo Matthias,
sorry das hatte ich vor lauter Freude übersehen. Kannst du mir jetzt vielleicht nur noch sagen, wie ich auch die unterschiedlichen Ansichtengrößen (80%, 90%, 95%, 100%, alles dabei) beibehalten kann?
Gruss Manfred
Anzeige
AW: einige Tabellenblätter als Werte in neue Datei
25.07.2006 10:59:40
Matthias
Hallo Manfred,
bitte sehr:


Sub KopiereWerte()
Dim Blätter()
Dim Blatt
Dim WB As Workbook
Dim fn As String
Dim w_Zoom As Integer
Const tmpname = "sdgfhsgh"
'zu kopierende Blätter
Blätter = Array("Tabelle1", "Tabelle2", "Tabelle3")
fn = ThisWorkbook.Path & "\Werte_" & ThisWorkbook.Name
Application.ScreenUpdating = False
'neue Mappe anlege
Set WB = Workbooks.Add(Template:=xlWBATWorksheet)
ActiveSheet.Name = tmpname
'Namen der neuen Mappe vergeben
For Each Blatt In Blätter
WB.Sheets.Add After:=WB.Sheets(WB.Sheets.Count)
ActiveSheet.Name = Blatt
Next
Application.DisplayAlerts = False
WB.Sheets(tmpname).Delete
Application.DisplayAlerts = True
'Werte kopieren
For Each Blatt In Blätter
ThisWorkbook.Sheets(Blatt).Cells.Copy
WB.Sheets(Blatt).Cells.PasteSpecial Paste:=xlPasteValues
'optional: wenn auch die Formate kopiert werden sollen
WB.Sheets(Blatt).Cells.PasteSpecial Paste:=xlPasteFormats
Next
Application.CutCopyMode = False
'Markierungen entfernen (auf A1 setzen) und Zoom setzen
WB.Activate
For Each Blatt In Blätter
ThisWorkbook.Sheets(Blatt).Activate
w_Zoom = ActiveWindow.Zoom
WB.Sheets(Blatt).Activate
Range("A1").Select
ActiveWindow.Zoom = w_Zoom
Next
Application.ScreenUpdating = True
WB.SaveAs Filename:=fn
End Sub


Gruß Matthias
Anzeige
*S*U*P*E*R* - vielen Dank!
25.07.2006 11:35:44
{mskro}
*S*U*P*E*R*
Ich bin dir zu großem Dank verpflichtet.
Solch ein Wissen hätte ich auch gerne. ;-)
Gruss Manfred
AW: *S*U*P*E*R* - vielen Dank!
25.07.2006 11:58:20
Matthias
Hallo Manfred,
Danke für die Rückmeldung!
Was mich noch interessieren würde:
Hast du schon mein "Programm" (die .exe zum Starten einer kennwortgeschützten Excel-Mappe) getestet? Falls du mal dazukommst, wäre ich auch hier für eine Rückmeldung dankbar.
Das Ding ist "auf die Schnelle" programmiert (es hat mich aber schon länger gereizt) und hat den Vorteil, dass man kein VB braucht, um so eine maßgeschneiderte exe-Datei (Mappenname und Kennwort sind darin ja fest enthalten) zu erstellen.
Ein Problem könnte die benötigte .cnf-Datei sein. Wer sich mit Verschlüsselung (gut?) auskennt, kann aus dieser Datei vielleicht das Kennwort auslesen.
Gruß Matthias
Anzeige
AW: *S*U*P*E*R* - vielen Dank!
27.07.2006 08:33:19
{mskro}
Rückmeldung erfolgte im dazugehörigen Thread.

300 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige