Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1204to1208
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

Tabellenblatt mit Inhalt kopieren

Tabellenblatt mit Inhalt kopieren
Ralf
Hallo Forum,
ich möchte aus einer Berechnungsarbeitsmappe mit diversen Verknüpfungen und Makros das Tabellenblatt "Eingabe" in eine neue Arbeitsmappe kopieren.
Ich habe mir via Makrorekorder ein Makro erstellt, jedoch gehen logischerweise die Verknüpfungen verloren, sprich diverse Zellen sind leer.
Wie kann ich den Zellinhalt des Tabellenblattes "Eingabe" in die die neue Mappe übernehmen?
Vielleicht kann mir jemand helfen.
Vielen Dank im Voraus.
Viele Grüße
Ralf
AW: Tabellenblatt mit Inhalt kopieren
16.03.2011 12:04:44
Hajo_Zi
Hallo ralf,
du möchtest an Stelle der Formeln die werte haben?
Nur wenige sehen Dein Makro.
schaue mal hier http://hajo-excel.de/vba_dateikopie.htm

AW: Tabellenblatt mit Inhalt kopieren
16.03.2011 12:06:56
Ralf
Hallo Hajo,
ja genau. Die Zellinhalte (sprich die Ergebnisse der Verknüpfungen) sollen übernommen werden.
Viele Grüße
Ralf
AW: Tabellenblatt mit Inhalt kopieren
16.03.2011 12:10:24
Hajo_Zi
Hallo Ralf,
warum Offen?
Meinen Link hast Du schon beachtet?

Anzeige
AW: Tabellenblatt mit Inhalt kopieren
16.03.2011 12:22:28
Ralf
Hallo Hajo,
den Link habe ich natürlich nicht gesehen.
Ich habe das Makro in meine Datei kopiert. Es funktioniert natürlich. Wünschenswert wäre es für mich nur noch, wenn statt der automatischen Kopie mit Dateinamengeneration sich das Speichern unter .. Fenster öffnen würde.
Kannst Du das in diesem Makro ändern?
Sub Speichern_unter3()
'* H. Ziplies, Karin Mohnhaupt                    *
'* 16.08.10                                       *
'* Rückfragen an HajoZiplies@web.de               *
'* http://Hajo-Excel.de/
' Kopie einer Datei ohne Formeln mit Format, Tabellen nicht geschützt
Dim InI As Integer
' Neue Arbeitsmappe erstellen, Diese Arbeitsmappe ist die aktive
Workbooks.Add
' Arbeitsmappe mit Code
With ThisWorkbook
' neue Arbeitsmappe unter einem neuen Namen speichern
' Name = alter Name davor aber "Kopie_von_"
' Unterscheidung der Excelversion
' bis einschl. Version 2003
'ActiveWorkbook.SaveAs .Path & "\Kopie_von_" & .Name
' ab Version 2007 wird der Dateityp geändert auf XLSX
ActiveWorkbook.SaveAs .Path & "\Kopie_von_" & Left(.Name, _
InStrRev(.Name, ".") - 1) & ".XLSX", _
FileFormat:=xlOpenXMLWorkbook
' Schleife über alle Register dieser Arbeitsmappe
For InI = .Worksheets.Count To 1 Step -1
' Prüfen ob Druckbereich festgelegt
If .Worksheets(InI).PageSetup.PrintArea  "" Then
' neue Tabelle in der aktiven Arbeitsmappe
' mit dem Namen der Tabelle aus der Arbeitsmappe
' mit dem Code
Worksheets.Add.Name = .Worksheets(InI).Name
' kopieren Tabelle in der Arbeitsmappe mit Code kopieren
.Worksheets(InI).Range("Druckbereich").Copy
' Einfügen in der aktiven Arbeitsmappe
With ActiveWorkbook.ActiveSheet.Range("A1")
' Werte übertragen
.PasteSpecial Paste:=xlPasteValues
' Formate übertragen
.PasteSpecial Paste:=xlFormats
End With
End If
Next InI
' Zwischenspeicher löschen
Application.CutCopyMode = False
' Bildschirmitteilungen abschalten
' keine Abfrage ob Tabelle gelöscht werden soll
Application.DisplayAlerts = False
' alle Tabellen löschen die durch Datei Neu vorhanden sind
' eine neue Datei wird laut Standard mit 3 Tabellen erstellt
For InI = 1 To Application.SheetsInNewWorkbook
' Löschen der Tabelle
Worksheets(ActiveWorkbook.Worksheets.Count).Delete
Next InI
' Bildschirmitteilungen einschalten
Application.DisplayAlerts = True
' Mitteillung das Kopie erstellt wurde
If Val(Application.Version) = 2007
MsgBox "Reine Datentabelle gespeichert als: " & .Path _
& "\Kopie_von_" & Left(.Name, InStrRev(.Name, ".") - 1) _
& ".XLSX"
End If
' Dateikopie schließen mit speichern
ActiveWorkbook.Close True
End With
End Sub
Vielen Dank im Voraus für Deine Hilfe.
Viele Grüße
Ralf
Anzeige
AW: Tabellenblatt mit Inhalt kopieren
16.03.2011 12:28:13
Hajo_Zi
Hallo Ralf,
lösche diese Zeilen
ActiveWorkbook.SaveAs .Path & "\Kopie_von_" & Left(.Name, _
InStrRev(.Name, ".") - 1) & ".XLSX", _
FileFormat:=xlOpenXMLWorkbook
und vor End sub
Application.Dialogs(xlDialogSaveAs).Show
mal ungetestet
Gruß Hajo
AW: Tabellenblatt mit Inhalt kopieren
16.03.2011 12:38:46
Ralf
Hallo Hajo,
optimal. Hat funktioniert.
Jetzt möchte ich die exportierte Datei noch in der Zeilenbreite und Zeilenhöhe automatisch anpassen.
Mit dem makrorekorder habe ich folgendes aufgezeichnet:
Cells.Select
Selection.Columns.AutoFit
Selection.Rows.AutoFit
Range("A1").Select
An welcher Stelle muss ich dies in Dein/Euer Makro einfügen?
Danach haben wir es dann.
Vielen Dank schon mal im Voraus für Deinen Support.
Gruß
Ralf
Anzeige
AW: Tabellenblatt mit Inhalt kopieren
16.03.2011 12:43:32
Hajo_Zi
Hallo Ralf,
vor dem speichern
With Cells
.Columns.AutoFit
.Rows.AutoFit
End With
Gruß Hajo
AW: Tabellenblatt mit Inhalt kopieren
16.03.2011 13:03:30
Ralf
Hallo Hajo,
nö, das hat nicht funktioniert.
Das Makro sieht derzeit so aus:
Sub Speichern_unter3()
'* H. Ziplies, Karin Mohnhaupt                    *
'* 16.08.10                                       *
'* Rückfragen an HajoZiplies@web.de               *
'* http://Hajo-Excel.de/
' Kopie einer Datei ohne Formeln mit Format, Tabellen nicht geschützt
Dim InI As Integer
' Neue Arbeitsmappe erstellen, Diese Arbeitsmappe ist die aktive
Workbooks.Add
' Arbeitsmappe mit Code
With ThisWorkbook
' neue Arbeitsmappe unter einem neuen Namen speichern
' Name = alter Name davor aber "Kopie_von_"
' Unterscheidung der Excelversion
' bis einschl. Version 2003
'ActiveWorkbook.SaveAs .Path & "\Kopie_von_" & .Name
' ab Version 2007 wird der Dateityp geändert auf XLSX
'ActiveWorkbook.SaveAs .Path & "\Kopie_von_" & Left(.Name, _
'   InStrRev(.Name, ".") - 1) & ".xlsx", _
'  FileFormat:=xlOpenXMLWorkbook
' Schleife über alle Register dieser Arbeitsmappe
For InI = .Worksheets.Count To 1 Step -1
' Prüfen ob Druckbereich festgelegt
If .Worksheets(InI).PageSetup.PrintArea  "" Then
' neue Tabelle in der aktiven Arbeitsmappe
' mit dem Namen der Tabelle aus der Arbeitsmappe
' mit dem Code
Worksheets.Add.Name = .Worksheets(InI).Name
' kopieren Tabelle in der Arbeitsmappe mit Code kopieren
.Worksheets(InI).Range("Druckbereich").Copy
' Einfügen in der aktiven Arbeitsmappe
With ActiveWorkbook.ActiveSheet.Range("A1")
' Werte übertragen
.PasteSpecial Paste:=xlPasteValues
' Formate übertragen
.PasteSpecial Paste:=xlFormats
End With
End If
Next InI
' Zwischenspeicher löschen
Application.CutCopyMode = False
' Bildschirmitteilungen abschalten
' keine Abfrage ob Tabelle gelöscht werden soll
Application.DisplayAlerts = False
' alle Tabellen löschen die durch Datei Neu vorhanden sind
' eine neue Datei wird laut Standard mit 3 Tabellen erstellt
For InI = 1 To Application.SheetsInNewWorkbook
' Löschen der Tabelle
Worksheets(ActiveWorkbook.Worksheets.Count).Delete
Next InI
' Bildschirmitteilungen einschalten
Application.DisplayAlerts = True
' Mitteillung das Kopie erstellt wurde
If Val(Application.Version) = 2007
MsgBox "Reine Datentabelle gespeichert als: " & .Path _
& "\Kopie_von_" & Left(.Name, InStrRev(.Name, ".") - 1) _
& ".xlsx"
End If
' Dateikopie schließen mit speichern
ActiveWorkbook.Close True
End With
'Spaltenbreite und Zeilenhöhe automatisch anpassen
With Cells
.Columns.AutoFit
.Rows.AutoFit
End With
'Dialogfenster Speichern unter ... aufrufen
Application.Dialogs(xlDialogSaveAs).Show
End Sub
Vielleicht kannst Du für mich den Block für Spaltenbreite und Zeilenhöhe an der richtigen Stelle einfügen.
Vielen Dank.
Gruß
Ralf
Anzeige
AW: Tabellenblatt mit Inhalt kopieren
16.03.2011 13:05:48
Hajo_Zi
Hallo Ralf,
ich kann jetzt nichts testen, das geht erst nach 17:00 Uhr.

AW: Tabellenblatt mit Inhalt kopieren
16.03.2011 13:28:05
Ralf
Hallo Hajo,
ich habe es mit ein wenig rumprobieren selber hinbekommen.
Jetzt funktioniert wie gewünscht.
Danke für Deinen Support.
Gruß
Ralf
AW: Tabellenblatt mit Inhalt kopieren
16.03.2011 14:05:33
Hajo_Zi
Hallo Ralf,
ich hatte noch zeit.
Option Explicit
Sub Speichern_unter3()
'* H. Ziplies, Karin Mohnhaupt                    *
'* 16.08.10                                       *
'* Rückfragen an HajoZiplies@web.de               *
'* http://Hajo-Excel.de/
' Kopie einer Datei ohne Formeln mit Format, Tabellen nicht geschützt
Dim InI As Integer
' Neue Arbeitsmappe erstellen, Diese Arbeitsmappe ist die aktive
Workbooks.Add
' Arbeitsmappe mit Code
With ThisWorkbook
' neue Arbeitsmappe unter einem neuen Namen speichern
' Name = alter Name davor aber "Kopie_von_"
' Unterscheidung der Excelversion
' bis einschl. Version 2003
'ActiveWorkbook.SaveAs .Path & "\Kopie_von_" & .Name
' ab Version 2007 wird der Dateityp geändert auf XLSX
'ActiveWorkbook.SaveAs .Path & "\Kopie_von_" & Left(.Name, _
'   InStrRev(.Name, ".") - 1) & ".xlsx", _
'  FileFormat:=xlOpenXMLWorkbook
' Schleife über alle Register dieser Arbeitsmappe
For InI = .Worksheets.Count To 1 Step -1
' Prüfen ob Druckbereich festgelegt
If .Worksheets(InI).PageSetup.PrintArea  "" Then
' neue Tabelle in der aktiven Arbeitsmappe
' mit dem Namen der Tabelle aus der Arbeitsmappe
' mit dem Code
Worksheets.Add.Name = .Worksheets(InI).Name
' kopieren Tabelle in der Arbeitsmappe mit Code kopieren
.Worksheets(InI).Range("Druckbereich").Copy
' Einfügen in der aktiven Arbeitsmappe
With ActiveWorkbook.ActiveSheet.Range("A1")
' Werte übertragen
.PasteSpecial Paste:=xlPasteValues
' Formate übertragen
.PasteSpecial Paste:=xlFormats
End With
'Spaltenbreite und Zeilenhöhe automatisch anpassen
With Cells
.Columns.AutoFit
.Rows.AutoFit
End With
End If
Next InI
' Zwischenspeicher löschen
Application.CutCopyMode = False
' Bildschirmitteilungen abschalten
' keine Abfrage ob Tabelle gelöscht werden soll
Application.DisplayAlerts = False
' alle Tabellen löschen die durch Datei Neu vorhanden sind
' eine neue Datei wird laut Standard mit 3 Tabellen erstellt
If Application.SheetsInNewWorkbook > 1 Then
For InI = 1 To Application.SheetsInNewWorkbook
' Löschen der Tabelle
Worksheets(ActiveWorkbook.Worksheets.Count).Delete
Next InI
End If
' Bildschirmitteilungen einschalten
Application.DisplayAlerts = True
' Mitteillung das Kopie erstellt wurde
If Val(Application.Version) = 2007
MsgBox "Reine Datentabelle gespeichert als: " & .Path _
& "\Kopie_von_" & Left(.Name, InStrRev(.Name, ".") - 1) _
& ".xlsx"
End If
' Dateikopie schließen mit speichern
End With
'Dialogfenster Speichern unter ... aufrufen
Application.Dialogs(xlDialogSaveAs).Show
End Sub
Gruß Hajo
Anzeige
AW: Tabellenblatt mit Inhalt kopieren
16.03.2011 14:29:25
Ralf
Hallo Hajo,
vielen Dank für Deinen Support.
Das passt.
Gruß
Ralf

314 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige