Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1068to1072
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
VBA - Worksheet speichern
28.04.2009 09:57:07
Specke
Hallo Experten,
mit folgendem Code möchte ich ein Tabellenblatt speichern und den kompletten VBA-Code löschen. ActiveSheet.copy kann ich nicht nehmen, da Sonderformatierungen in der Mappe sind.

Sub Loeschen()
Application.Dialogs(xlDialogSaveAs).Show
'Blätter löschen
Dim ws As Worksheet
For Each ws In ActiveWorkbook.Worksheets
If ws.Name  "Newsletter" Then
Application.DisplayAlerts = False
ws.Delete
Application.DisplayAlerts = True
End If
Next ws
'Makros löschen
Dim objVBComponents As Object
With ActiveWorkbook.VBProject
For Each objVBComponents In .VBComponents
Select Case objVBComponents.Type
Case 1, 2, 3 'Module, Klasssenmodule, Userforms
'diesen Code nicht löschen
If objVBComponents.Name  "Löschen" Then
.VBComponents.Remove .VBComponents(objVBComponents.Name)
End If
Case 100 'Workbook, Sheets
With objVBComponents.CodeModule
.DeleteLines 1, .CountOfLines
End With
End Select
Next
End With
ActiveWorkbook.Save
End Sub


Scheinbar wird der letzte Save-Befehl ausgeführt bevor alle Module etc. gelöscht sind.
Bevor ich die Datei schließe, sind alle Module etc. gelöscht. Beim Schließen werde ich gefragt, ob ich Speichern möchte (habe ich doch aber eigentlich gerade schon?) und wenn ich nicht speichere, dann sind beim Öffnen wieder alle Module etc. da. Die Arbeitsblätter sind und bleiben gelöscht.
Kennt ihr dieses Problem und könnt mir bei der Lösung helfen?
Danke und Gruß
Specke

3
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: VBA - Worksheet speichern
28.04.2009 12:07:55
fcs
Hallo Specke,
ich schlage folgende Variante vor.
Hier wird eine Kopie der aktiven Datei gespeichert und die erforderlichen Aktionen an der Kopie durchgeführt.
Bei deiner Variante wird die Prozedur des laufenden Codes im VBA-Projekt gelöscht, was dann zur unvollständigen Ausführung des Codes führt.
Gruß
Franz

Sub Loeschen()
Dim varFilename, wbThis As Workbook, wbCopy As Workbook
Dim ws As Worksheet
varFilename = Application.GetSaveAsFilename( _
InitialFileName:="Newsletter " & Format(Date, "YYYYMMDD"), _
Filefilter:="Excel (*.xls),*.xls", _
Title:="Bitte Datei-Namen für Newsletter-Blatt wählen/eingeben")
If varFilename  False Then
Set wbThis = ActiveWorkbook
wbThis.SaveCopyAs Filename:=varFilename
Set wbCopy = Workbooks.Open(Filename:=varFilename, addtomru:=True)
'Blätter löschen
For Each ws In wbCopy.Worksheets
If ws.Name  "Newsletter" Then
Application.DisplayAlerts = False
ws.Delete
Application.DisplayAlerts = True
End If
Next ws
'Makros löschen
Dim objVBComponents As Object
With wbCopy.VBProject
For Each objVBComponents In .VBComponents
Select Case objVBComponents.Type
Case 1, 2, 3 'Module, Klasssenmodule, Userforms
'diesen Code nicht löschen
If objVBComponents.Name  "Löschen" Then
.VBComponents.Remove .VBComponents(objVBComponents.Name)
End If
Case 100 'Workbook, Sheets
With objVBComponents.CodeModule
.DeleteLines 1, .CountOfLines
End With
End Select
Next
End With
wbCopy.Save
'  wbCopy.Close savechanges:=False
wbThis.Close savechanges:=True
End If
End Sub


Anzeige
AW: VBA - Worksheet speichern
28.04.2009 15:12:11
Specke
Hallo Franz,
so hatte ich es auch versucht. Da klappt das Löschen super, aber dabei habe ich ein anderes Problem:
Die Seite "Newsletter" ist eine Mailvorlage mit vorbelegten Empfänger und Betreffzeile. Diese werden bei der Aktion SaveAsCopy nicht mitkopiert. Hast Du dafür eine Lösung?
Danke und Gruß
Specke
AW: VBA - Worksheet speichern
28.04.2009 16:45:41
fcs
Hallo Specke,
die Einbindung der e-Mail-Funktion unter Excel ist nicht so meine Welt.
Scheinbar kommt das Löschen der VBA-Komponenten (und die Anbindung der e-Mail-Funktionalität dürfte eine versteckte Funktion sein) in der per "Copy" erzeugten Kopie der Datei ein ganzes Stück weiter als in der "abgebrochenen" "SaveAs"-Version.
Gruß
Franz
Anzeige

299 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige