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

Kopieren eines Blatts ohne Code

Kopieren eines Blatts ohne Code
05.05.2008 11:57:45
Daniel
Hallo,
folgendes Problem stellt sich mir: ich kopiere ein Arbeitsblatt in eine neues Worrkbook, will aber den Code
nicht mitkopieren, weil z.B. in der worksheet_activate Prozedur auf Makros verwiesen wird, die nach dem Kopieren nicht in der neuen Arbeitsmappe vorhanden ist. Der Blattschutz des zu koperenden Blatts ist aktiviert...
So, ich nutz also folgendes Makro, das ich über eine Schaltfläche aufrufe:

Sub email ()
dim nachricht as object, OutputApp as object
dim pfad as string
dim WS as string
Pfad = "c:\temp"
set OutputApp = Createitem ("outlook.application")
activesheet.copy
activesheet.unprotect
with thisworkbook.vbproject.vbcomponents(activesheet.codename).codemodule
.deletelines 1, .countoflines
end with
activeworkbook.saveas pfad & "\" & activesheet.name & date
WS = activeworkbook.fullname
set nachricht = outputapp. createitem (0)
with nachricht
.subject....
.attachments.add WS
end with
activeworkbook.close
End Sub


Leider wird der VBA Code in der Kopie nicht gelöscht, so dass an dieser Stelle immer der Fehler kommt, weil ja in der worksheet_activate auf ein Makro verwiesen wird, das nicht vorhanden ist!
Weiß jemand wie ich den Code aus der Kopie bekommen ?
Danke schonmal,
Gruß Daniel
P.S. Nur einen bestimmten Range zu kopieren und dann in ein blankes sheet einzufügen wäre nur eine Notlösung, da oben beschriebenes Makro für verschiedene Blätter in meinem Workbook funzen soll....

5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Kopieren eines Blatts ohne Code
05.05.2008 11:59:00
Rudi

with Activeworkbook.vbproject.vbcomponents(activesheet.codename).codemodule


Gruß
Rudi

AW: Kopieren eines Blatts ohne Code
05.05.2008 13:16:00
Daniel
An Rudi: der Austausch von ThisWorkbook in Activeworkbook hat den Code nicht gelöscht, weiss der Geier warum ...!?!
An einer Lösung auf diesem Weg (also löschen des Codes nach dem Kopieren) wäre ich weiterhin sehr interessiert, da mein Code soweit steht, nur der Teil mit dem Löschen des Codes klappt nicht!

AW: Kopieren eines Blatts ohne Code
05.05.2008 12:23:41
Beverly
Hi Daniel,
weshalb kopierst du nicht einfach die Zellen in eine neue Arbeitsmappe

Sub kopieren()
Dim wbMappe As Workbook
Dim inAnzahl As Integer
Dim raBereich As Range
inAnzahl = Application.SheetsInNewWorkbook
Set raBereich = ActiveSheet.UsedRange
MsgBox raBereich.Address
Set wbMappe = Workbooks.Add
raBereich.Copy ActiveSheet.Range(raBereich.Address)
Application.SheetsInNewWorkbook = inAnzahl
End Sub




Anzeige
Korrektur
05.05.2008 12:25:31
Beverly
Hi Daniel,
die Zeile mit der MsgBox kann weg, war nur zu Testzwecken da.


AW: Kopieren eines Blatts ohne Code
06.05.2008 04:42:00
Wuxinese
Hallo Daniel,
ich wuerde die Loesung so machen, wie Beverly sie vorgeschlagen hat. Das funktioniert sehr gut. Anbei noch zwei Codebeispiele. Im ersten Beispiel wird das ABL kopiert, dabei aber neben allen Formatierungen nur die absoluten Werte uebernommen. Das zweite Beispiel uebernimmt auch die Formeln. Ob und welches davon fuer Dich in Frage kommt, weiss ich natuerlich nicht :-)
Gruss
Rainer

Option Explicit
'Kopiert das ABL excl. Formeln (nur absolute Werte werden uebernommen):
Sub copysheet(ByVal tocopy As Worksheet)
Application.ScreenUpdating = False
Dim ctr As Integer
Dim copyto As Worksheet
Dim newbook As Workbook
Set newbook = Workbooks.Add
Application.DisplayAlerts = False
Do Until newbook.Sheets.Count = 1
newbook.Sheets(1).Delete
Loop
Application.DisplayAlerts = True
Set copyto = newbook.Sheets(1)
tocopy.UsedRange.Copy
copyto.Range(tocopy.UsedRange.Address).PasteSpecial (xlPasteFormats)
copyto.Range(tocopy.UsedRange.Address).PasteSpecial (xlPasteColumnWidths)
copyto.Range(tocopy.UsedRange.Address).PasteSpecial (xlPasteValuesAndNumberFormats)
copyto.Name = tocopy.Name
For ctr = 1 To tocopy.UsedRange.Rows.Count
copyto.UsedRange.Rows(ctr).RowHeight = tocopy.UsedRange.Rows(ctr).RowHeight
Next ctr
Application.ScreenUpdating = True
Set copyto = Nothing
Set newbook = Nothing
End Sub
'Kopiert das ABL incl. Formeln:
Sub copysheet2(ByVal tocopy As Worksheet)
Application.ScreenUpdating = False
Dim ctr As Integer
Dim copyto As Worksheet
Dim newbook As Workbook
Set newbook = Workbooks.Add
Application.DisplayAlerts = False
Do Until newbook.Sheets.Count = 1
newbook.Sheets(1).Delete
Loop
Application.DisplayAlerts = True
Set copyto = newbook.Sheets(1)
tocopy.UsedRange.Copy
copyto.Range(tocopy.UsedRange.Address).PasteSpecial (xlPasteAll)
copyto.Range(tocopy.UsedRange.Address).PasteSpecial (xlPasteColumnWidths)
copyto.Name = tocopy.Name
For ctr = 1 To tocopy.UsedRange.Rows.Count
copyto.UsedRange.Rows(ctr).RowHeight = tocopy.UsedRange.Rows(ctr).RowHeight
Next ctr
Application.ScreenUpdating = True
Set copyto = Nothing
Set newbook = Nothing
End Sub


Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige