Live-Forum - Die aktuellen Beiträge
Datum
Titel
24.04.2024 19:29:30
24.04.2024 18:49:56
Anzeige
Archiv - Navigation
1264to1268
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
Inhaltsverzeichnis

2 Sheets separat Speichen

2 Sheets separat Speichen
axel
Hallo Leute
habe ein Excel für euch evtl. kleines Problem.
Ich möchte aus einer Mappe 2 Sheets separat Speichen und sei mit einem Namen bestehend aus 4 Zellen ( aus einem Sheet ) der Mappe benennen.
Gruß an alle

7
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
Anzeige
AW: 2 Sheets separat Speichen
20.05.2012 04:15:37
fcs
Hallo Axel,
hier ein entsprechendes Makro.
Tabellennamen und Zelladressen muss du natürlich anpassen.
Gruß
Franz
Sub CopySheets()
Dim wbAktiv As Workbook, wksData As Worksheet
Set wbAktiv = ActiveWorkbook
Set wksData = wbAktiv.Worksheets("Tabelle001") 'Tabellenblatt mit den Zellen für die Dateinamen
With wksData
'1. Tabellenblatt kopieren
Call MakeNewWB(wks:=wbAktiv.Worksheets("TabelleABC"), _
strFileName:=.Range("A2").Text & .Range("A3").Text & .Range("A4").Text & .Range("A5").Text, _
bolCloseNewFile:=False)
'2. Tabellenblatt kopieren
Call MakeNewWB(wks:=wbAktiv.Worksheets("TabelleXYZ"), _
strFileName:=.Range("A2").Text & .Range("B3").Text & .Range("B4").Text & .Range("B5").Text, _
bolCloseNewFile:=False)
End With
End Sub
Private Sub MakeNewWB(ByVal wks As Worksheet, ByVal strFileName As String, _
Optional ByVal bolCloseNewFile As Boolean = True)
Dim wbNeu As Workbook
wks.Copy
Set wbNeu = ActiveWorkbook
wbNeu.SaveAs Filename:=strFileName, addtomru:=True
If bolCloseNewFile = True Then
wbNeu.Close savechanges:=True
End If
Set wbNeu = Nothing: Set wks = Nothing
End Sub

Anzeige
AW: 2 Sheets separat Speichen
20.05.2012 21:03:17
axel
Hallo Franz
Das fuktioniert gut blos sollen die 2 Sheets in ein Workbook
Sorry das habe ich leider vergessen zu sagen und ist es möglich gleichzeitig die Makros die dort hinterlegt sind zu löchen?
Gruß Axel
AW: 2 Sheets separat Speichen
20.05.2012 21:17:56
axel
Hallo Franz
Das fuktioniert gut blos sollen die 2 Sheets in ein Workbook
Sorry das habe ich leider vergessen zu sagen und ist es möglich gleichzeitig die Makros die dort hinterlegt sind zu löchen?
Gruß Axel
AW: 2 Sheets separat Speichern ohne Makros
21.05.2012 16:09:21
fcs
Hallo Axel,
der etwas einfachere Weg die Makros nach dem Kopieren zu entfernen besteht darin, die Makrosichheitseinstellungen anzupassen und den Zugriff auf das VBA-Projekt zu erlauben. Dann kann man VBA-Code direkt per VBA manipulieren.
Der etwas umständlichere Weg ist, nicht die kompletten Blätter zu kopieren, sondern in der neuen Mappe leere Blätter anzulegen und dann Formate und Daten in mehreren Schritten zu kopieren. Das dauert erheblich länger, da insbesondere die Anpassung der Einstellungen unter "Seite einrichten viel Zeit benötigt.
Hier entsprechende Makros.
Gruß
Franz
für Variante 1:
'Unter Extras-->Verweise im VBA-Editor muss für die Datei der Verweis auf
'   "Visual Basic for Applications Extensibillity x.y" gesetzt sein
Sub CopySheetsDeleteVBAProject()
Dim wbAktiv As Workbook, wksData As Worksheet
Dim wbNeu As Workbook
Dim strFileName As String
Const bolCloseNewFile As Boolean = False
Set wbAktiv = ActiveWorkbook
Set wksData = wbAktiv.Worksheets("Tabelle001") 'Tabellenblatt mit den Zellen für die  _
Dateinamen
With wksData
strFileName = .Range("A2").Text & .Range("A3").Text & .Range("A4").Text _
& .Range("A5").Text
End With
Application.ScreenUpdating = False
wbAktiv.Worksheets(Array("TabelleABC", "TabelleXYZ")).Copy
Set wbNeu = ActiveWorkbook
Application.DisplayAlerts = False
wbNeu.SaveAs Filename:=strFileName, addtomru:=True
Application.DisplayAlerts = True
If MsgBox(Prompt:="VBA-Projekt in Mappe """ & wbNeu.Name & """ löschen?", _
Buttons:=vbYesNo + vbQuestion + vbDefaultButton2, _
Title:="VBA-Projekt in Arbeitsmappe löschen") = vbYes Then
Call fncRemoveVBA_project(wb:=wbNeu)
End If
If bolCloseNewFile = True Then
wbNeu.Close savechanges:=True
Else
wbNeu.Save
End If
Application.ScreenUpdating = True
'    MsgBox "Fertig"
Set wbAktiv = Nothing: Set wksData = Nothing
Set wbNeu = Nothing
End Sub
'Prozedur erstellt unter Excel 2003
Function fncRemoveVBA_project(wb As Workbook) As Long
'Gesamten Code und Module der Arbeitsmappe löschen
'Zur Ausführung der Prozedur muss:
'1. Im VBA-Editor unter Extras--> Verweise... _
der Verweis auf die _
Microsoft Visual Basic for Applications Extensibility x.x _
aktiviert werden
'2. In Excel unter Extras --> Optionen --> Sicherheit --> Makrosicherheit _
die Option "Zugriff auf das VB-Projekt vertrauen" aktiviert werden.
Dim objVBA_Project As VBIDE.VBProject, objVBComponent As VBIDE.VBComponent
On Error GoTo Fehler
Set objVBA_Project = wb.VBProject
With objVBA_Project
For Each objVBComponent In .VBComponents
Select Case objVBComponent.Type
Case 1, 2, 3 'allgemeine Module, Klassen-Module und Userforms
.VBComponents.Remove .VBComponents(objVBComponent.Name)
Case 100 'Tabllen und DieseArbeitsmappe
With objVBComponent.CodeModule
.DeleteLines 1, .CountOfLines
End With
End Select
Next
End With
Err.Clear
Fehler:
With Err
If .Number  0 Then
fncRemoveVBA_project = .Number
Select Case .Number
Case 1004
MsgBox "Fehler: " & .Number & vbLf & .Description & vbLf _
& "Vor Start des Makros unter Optionen ""Sicherheit --> " _
& "Makrosicherheit"" Option " _
& """Zugriff auf das VB-Projekt vertrauen"" aktivieren!"
Case Else
MsgBox "Fehler: " & .Number & vbLf & .Description
End Select
End If
End With
End Function
für Variante 2
Sub CopySheetsNoMakros()
Dim wbAktiv As Workbook, wksData As Worksheet
Dim wbNeu As Workbook
Dim strFileName As String
Const bolCloseNewFile As Boolean = False
Set wbAktiv = ActiveWorkbook
Set wksData = wbAktiv.Worksheets("Tabelle001") 'Tabellenblatt mit den Zellen für die  _
Dateinamen
With wksData
strFileName = .Range("A2").Text & .Range("A3").Text & .Range("A4").Text & .Range("A5"). _
Text
End With
Application.ScreenUpdating = False
'Leer-Tabellenblatt in aktiver Mappe anlegen und in neue Datei verschieben
With wbAktiv
.Worksheets.Add Before:=.Sheets(1)
.Sheets(1).Move
End With
Set wbNeu = ActiveWorkbook
'2. Blatt in neuer Mappe anlegen
wbNeu.Worksheets(1).Copy after:=wbNeu.Sheets(1)
'Blattdaten/Formate und Einstellung aus Seite Einrichten übertragen.
Call prcTransferdata(wksQ:=wbAktiv.Worksheets("TabelleABC"), wksZ:=wbNeu.Worksheets(1))
Call prcTransferdata(wksQ:=wbAktiv.Worksheets("TabelleXYZ"), wksZ:=wbNeu.Worksheets(2))
wbNeu.SaveAs Filename:=strFileName, addtomru:=True
If bolCloseNewFile = True Then
wbNeu.Close savechanges:=True
End If
Application.ScreenUpdating = True
MsgBox "Fertig"
Set wbAktiv = Nothing: Set wksData = Nothing
Set wbNeu = Nothing
End Sub
Sub prcTransferdata(wksQ As Worksheet, wksZ As Worksheet)
Dim neuPageSetup As PageSetup
With wksQ
With .UsedRange
.EntireColumn.Copy
wksZ.Cells(1, .Column).PasteSpecial Paste:=xlFormats
.EntireRow.Copy Destination:=wksZ.Cells(.Row, 1)
End With
wksZ.Name = .Name
Set neuPageSetup = wksZ.PageSetup
With .PageSetup
neuPageSetup.Orientation = .Orientation
neuPageSetup.HeaderMargin = .HeaderMargin
neuPageSetup.FooterMargin = .FooterMargin
neuPageSetup.TopMargin = .TopMargin
neuPageSetup.BottomMargin = .BottomMargin
neuPageSetup.LeftMargin = .LeftMargin
neuPageSetup.RightMargin = .RightMargin
neuPageSetup.LeftFooter = .LeftFooter
neuPageSetup.CenterFooter = .CenterFooter
neuPageSetup.RightFooter = .RightFooter
neuPageSetup.LeftHeader = .LeftHeader
neuPageSetup.CenterHeader = .CenterHeader
neuPageSetup.RightHeader = .RightHeader
neuPageSetup.PrintArea = .PrintArea
neuPageSetup.PrintTitleRows = .PrintTitleRows
neuPageSetup.PrintTitleColumns = .PrintTitleColumns
neuPageSetup.PrintGridlines = .PrintGridlines
End With
End With
End Sub

Anzeige
AW: 2 Sheets separat Speichern ohne Makros
22.05.2012 23:06:10
axel
Hallo Franz
Es Funktioniert alles gut habe bloß das sich die Steuerelemente alle mit löschen war leider nicht erwünscht.
Glaube es ist einfacher bloß die 2 Sheets in eine Mappe zu kopieren. Brache die Steuerelemente auch als Anzeige auf den 2 Sheets.
Könntest du mir die erste Variante so abändern das die 2 Sheets in eine Mappe kopiert werden.
Danke
Gruß Axel
AW: 2 Sheets separat Speichern
23.05.2012 01:39:28
fcs
Hallo Axel,
dann wird es etwas einfacher.
Gruß
Franz
Sub CopySheets()
Dim wbAktiv As Workbook, wksData As Worksheet
Dim wbNeu As Workbook, strFileName As String
Const bolCloseNewFile = False
Set wbAktiv = ActiveWorkbook
Set wksData = wbAktiv.Worksheets("Tabelle001") 'Tabellenblatt mit den Zellen _
für die Dateinamen
With wksData
strFileName = .Range("A2").Text & .Range("A3").Text & .Range("A4").Text _
& .Range("A5").Text
End With
wbAktiv.Worksheets(Array("TabelleABC", "TabelleXYZ")).Copy
Set wbNeu = ActiveWorkbook
wbNeu.SaveAs Filename:=strFileName, addtomru:=True
If bolCloseNewFile = True Then
wbNeu.Close savechanges:=True
End If
Set wbAktiv = Nothing: Set wbNeu = Nothing: Set wksData = Nothing
End Sub

Anzeige
AW: 2 Sheets separat Speichern
23.05.2012 18:55:34
Axel
Danke Franz für deine Hilfe
Gruß Axel

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige