AW: Speichern per Button
07.12.2006 17:35:56
Heiko
Hallo Ronny,
kann ich nicht nachvollziehen, bei mir gibt das keine Fehlermeldung.
Nicht in der Firma (XP und EXCEL 2002) und auch nicht hier zuhaus (ME und EXCEL 2000)
Ist der VBA Code Passwortgeschützt ?
So lief das gerade bei mir:
Private Sub CommandButton1_Click()
Dim varSaveAsName As Variant
Dim objButtons As Object, objVBA As Object
If MsgBox("Wollen Sie wirklich das angezeigte Tabellenblatt 'Rp-Vergleich' in" & vbCr & _
"einer seperaten Excel-Datei speichern für künftige Untersuchungen?", _
vbYesNo, "Speichern Ja oder Nein?") = vbNo Then
Exit Sub
End If
varSaveAsName = Application.GetSaveAsFilename(, "EXCEL Files (*.xls), *.xls", , " Geben Sie einen Dateinamen zum Speichern an !")
If VarType(varSaveAsName) <> vbBoolean Then
Application.ScreenUpdating = False
ActiveWorkbook.Worksheets("Rp-Vergleich").Copy
With ActiveWorkbook
.SaveAs varSaveAsName
For Each objButtons In .Worksheets("Rp-Vergleich").OLEObjects
If TypeName(objButtons.Object) = "CommandButton" Then
objButtons.Delete
End If
Next objButtons
On Error GoTo Errorhandler
For Each objVBA In .VBProject.VBComponents
With objVBA.CodeModule
.DeleteLines 1, .CountOfLines
End With
Next objVBA
.Save
.Close
End With
' Das hier hat schon seinen Sinn, da ohne erneutes öffnen und speichern du manuell speichern mußt,
' aber wozu wenn es auch VBA direkt erledigen kann. Öffnet und schließt man aber nicht hier über
' VBA dann wird beim ersten öffen des exportierten Blattes noch gefragt ob man Makros aktivieren will
' obwohl definitiv keine mehr drin sind, ist wohl ne Macke von EXCEL VBA die so überlistet wird.
Workbooks.Open varSaveAsName
ActiveWorkbook.Save
ActiveWorkbook.Close
Application.ScreenUpdating = True
End If
Exit Sub
Errorhandler:
Application.ScreenUpdating = True
If Err.Number = 1004 Then
MsgBox "Das Löschen des VBA Codes ist fehlgeschlagen!" & vbCr & _
"Bitte überprüfen Sie folgende Einstellung! " & vbCr & _
"EXTRAS -> MAKRO -> SICHERHEIT -> Vertrauenwürdige Quellen." & vbCr & _
"'Zugriff auf Visual Basic Projekt vertrauen' muss aktiviert sein! ", vbCritical, _
" Meldung VBA Makro"
Else
MsgBox "Err.Number = " & Err.Number & ". " & Err.Description, vbCritical
End If
End Sub
Gruß Heiko
PS: Rückmeldung wäre nett !