Anzeige
Archiv - Navigation
1160to1164
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

Kopie des Tabellenblatts nach Mausklick

Kopie des Tabellenblatts nach Mausklick
Fritz_W
Hallo Forumsbesucher,
ich würde gerne per Mausklick auf Zelle B1 meines Tabellenblatts erreichen, dass von diesem Tabellenblatt eine Kopie erstellt wird mit der Bezeichnung "Auswertung_x", wobei "x" für die Zahl steht, die in B1 eingetragen ist. Die Kopie sollte im gleichen Ordner gespeichert werden, aus der die Kopie erstellt wird.
Ich hoffe, dass ich das mit eurer Hilfe umsetzen kann und bedanke mich schon jetzt für eure Unterstützung.
mfg
Fritz

9
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
Anzeige
AW: Kopie des Tabellenblatts nach Mausklick
13.06.2010 09:24:15
Hajo_Zi
Hallo Fritz,
im ersten Teil schreibst Du Kopie der Tabelle, das wäre in der gleichen Datei zum Ende schreibst Du aber was vom Ordner, das trifft aber für den ersten Teil nicht zu.

AW: Kopie des Tabellenblatts nach Mausklick
13.06.2010 09:34:08
Fritz_W
Halo Hajo,
ja du hast Recht, das war missverständlich formuliert.
Am liebsten wäre mir wenn jeweils eine neue Mappe erstellt wird, die eine Kopie der Tabelle enthält. Die Mappe sollte jeweils die entsprechende Bezeichnung erhalten. Am besten wäre, wenn neue Arbeitsmappe aber keinen VBA-Code enthält.
Ich hoffe, dass meine Vorstellungen jetzt nachvollziehbar sind und sich das so (in etwa) realisieren lässt.
Gruß
Fritz
Anzeige
AW: Kopie des Tabellenblatts nach Mausklick
13.06.2010 09:39:07
Hajo_Zi
Hallo Fritz,
ohne VBA geht nur wenn Zugriff auf das VBA Projekt erlaubt oder speichern als Version vor 97.
Für Deien fal würde ich folgenden Code benutzen.
Option Explicit
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
ActiveSheet.Copy
ActiveWorkbook.SaveAs Filename:="D:\Eigene Dateien\Hajo\" & ActiveSheet.Name & ".xls"
End Sub

Das m,it der Version habe ich jetzt nicht eingebaut, mal den Makrorecorder benutzen.

Anzeige
Tabellenblatt ohne Code kopieren
13.06.2010 09:57:32
Erich
Hi Fritz,
wenn das Blatt bislang keinen Code enthält, ginge das mit einem Workbook-Ereignis (also keinem Sheet-Ereignis).
Such die eine der beiden Möglichkeiten aus.
Die Prozedur kommt in den Code von "DieseArbeitsmappe":

Option Explicit
Private Sub Workbook_SheetBeforeDoubleClick(ByVal Sh As Object, _
ByVal Target As Range, Cancel As Boolean)
Dim strFile As String
If Sh.Name = "DasBlatt" And Target.Address(0, 0) = "B1" Then
Cancel = True
strFile = ThisWorkbook.Path & "Auswertung_" & Cells(1, 2) & ".xls"
If Dir(strFile)  "" Then
MsgBox strFile & " existiert schon - Abbruch"
Exit Sub
End If
Sh.Copy
With ActiveWorkbook
.SaveAs strFile
.Close            ' mit Schließen der Kopie
End With
End If
End Sub
Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range)
Dim strFile As String
If Sh.Name = "DasBlatt" And Target.Address(0, 0) = "B1" Then
strFile = ThisWorkbook.Path & "Auswertung_" & Cells(1, 2) & ".xls"
If Dir(strFile)  "" Then
MsgBox strFile & " existiert schon - Abbruch"
Exit Sub
End If
Sh.Copy
ActiveWorkbook.SaveAs strFile ' ohne Schließen der Kopie
End If
End Sub
Rückmeldung wäre nett! - Grüße von Erich aus Kamp-Lintfort
Anzeige
AW: Tabellenblatt ohne Code kopieren
13.06.2010 10:14:53
Fritz_W
Hallo Erich,
ich freue mich über Deine Unterstützung.
Im Modul des betroffenen Tabellenblatts ("Auswertung") befindet sich jedoch bereits folgender Code:
Sub Worksheet_Activate()
Sheets("Auswertung").Range("B2:E36") = Sheets("Daten").Range("B2:E36").Value
AuswertungAktualisieren
End Sub
Verstehe ich Dich richtig, wenn ich dann keinen Deiner beiden Vorschläge anwenden kann?
mfg
Fritz
Code woanders?
13.06.2010 10:34:42
Erich
Hi Fritz,
meine beiden Vorschläge kümmern sich einfach nicht um VBA-Code - er würde also auch in der Kopie stehen.
Du könntest den Code für das Worksheet_Activate auch in "DieseArbeitsmappe" schreiben und im Blatt löschen.
Das sähe dann so aus:

Private Sub Workbook_SheetActivate(ByVal Sh As Object)
If Sh.Name = "Auswertung" Then
Sh.Range("B2:E36") = Sheets("Daten").Range("B2:E36").Value
AuswertungAktualisieren
End If
End Sub
Rückmeldung wäre nett! - Grüße von Erich aus Kamp-Lintfort
P.S.:
Da dein bisheriges Worksheet_Activate() im Code des Tabellenblatts steht, ist in der Zeile
Sheets("Auswertung").Range("B2:E36") = Sheets("Daten").Range("B2:E36").Value
die Angabe des Blattes unnötig. Da hätte das hier gereicht:
Range("B2:E36") = Sheets("Daten").Range("B2:E36").Value
Anzeige
AW: Code woanders?
13.06.2010 10:46:35
Fritz_W
Hallo Erich,
werds gleich testen, aber ich denke, damit komm ich klar.
Ich kann mich hier nur wiederholen:
Ich bin äußerst dankbar für alle, die mir hier immer wieder so tolle Hilfe anbieten und auch besonders Dir, der Du mir schon so oft "exzellente" Lösungen zur Verfügung gestellt hast.
mfg
Fritz
P.S.
Werde gleich noch in einem neuen Thread eine weitere Frage stellen und würde mich freuen, wenn Du Dir das auch mal ansehen würdest.
@ErichG
13.06.2010 11:19:22
Fritz_W
Hallo Erich,
habe alles so umsetzen können, dass es exakt meinen Vorstellungen entspricht. Einfach großartig!
Danke!!!
Gruß
Fritz
Anzeige
Danke für Rückmeldung - Gerne! (owT)
13.06.2010 11:21:48
Erich

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige