Microsoft Excel

Herbers Excel/VBA-Archiv

Speichern nach Makro entfernen

Betrifft: Speichern nach Makro entfernen von: mario
Geschrieben am: 15.08.2004 10:25:45

Hallo zusammen

habe ein Problem mit folgenden Makros.
Es funktioniert alles so wie ich will bis auf die
letzten Befehlen.
ActiveWorkbook.save 'Datei sollte gespeichert werden, tut es nicht oder?'
ActiveWorkbook.close 'funktioniert
Offenbar wird die Datei nach dem die Makros entfernt sind
nicht gespeichert.
Wenn ich die zwei letzten Befehle auslasse und die Datei danach von Hand speichere
funktioniert alles so wie ich will.
Beim nächsten öffnen der gespeicherten Mappe wird keine Makrowarnung mehr angezeigt
weil keine Makros mehr vorhanden.

Vielen Dank schon zum Voraus für eure Hilfe.

Gruss Mario

Sub schutz()
Dim t As Integer
Dim i As Integer
Dim sFile As String, sPath As String, sJahr As String
t = ActiveWorkbook.Worksheets.Count
For i = 1 To t
On Error Resume Next
Sheets(i).Unprotect
Sheets(i).Select
        Cells.Select
        Selection.Locked = True
    Sheets(i).Protect
    range("A1").Select
   Next i
   sPath = Application.DefaultFilePath & "\" & " Abteilung 5" & "_"
   sFile = Worksheets("Auswertung").range("C1").Value
   sFile = Format(CDate(sFile), "yyyymmdd") & ".xls"
   sJahr = Worksheets("Daten").range("AF3").Value
   ActiveWorkbook.SaveAs sPath & sFile & "_" & sJahr
   Startseite
   MakrosEntfernen
   End Sub

Sub MakrosEntfernen()
Dim CodeObj As Object
  If Val(Application.Version) >= 8 Then
    With ActiveWorkbook.VBProject
      For Each CodeObj In .VBComponents
        Select Case CodeObj.Type
          Case 1, 2
            .VBComponents.Remove CodeObj
          Case Else
            With CodeObj.CodeModule
              If .CountOfLines > 0 Then
                .DeleteLines 1, .CountOfLines
              End If
            End With
        End Select
      Next
    End With
  End If
  For Each CodeObj In ActiveWorkbook.Names
    Select Case CodeObj.MacroType
      Case xlFunction, xlCommand
        CodeObj.Delete
    End Select
  Next
  'ActiveWorkbook.Save
  'ActiveWorkbook.Close
    End Sub

  


Betrifft: AW: Speichern nach Makro entfernen von: Frank
Geschrieben am: 15.08.2004 10:33:09

Hi Mario
Ursache dafür: Du hast auch das gerade laufende Makro entfernt. Daher kann es dann auch nicht mehr die restlichen Befehle ausführen

Frank


  


Betrifft: AW: Speichern nach Makro entfernen von: Annett
Geschrieben am: 15.08.2004 10:33:58

Hallo Mario

mir ist es schon Logisch, das die Datei nicht mehr gespeichert wird. Du entfernst erst den Code und welcher Code soll da noch speichern?

Gruß Annett


  


Betrifft: AW: Speichern nach Makro entfernen von: mario
Geschrieben am: 15.08.2004 10:49:21

hallo

ist mir eigentlich klar aber wieso wird der Befehl
ActiveWorkbook.close ausgeführt.
Wie soll ich das Problem lösen damit ich zum gewünschten
Resultat komme ?

Gruss Mario


  


Betrifft: AW: Speichern nach Makro entfernen von: Annett
Geschrieben am: 15.08.2004 10:52:12

Hallo Mario

Speichere die Datei unter einem neuen Namen und lösche in dieser den Code.

Gruß Annett


  


Betrifft: AW: Speichern nach Makro entfernen von: mario
Geschrieben am: 15.08.2004 11:24:31

Hallo vielen Dank

habe deinen Tip überprüft.
Er funktioniert bei mir nicht.
Bin für jeden Tip dankbar
Ich bin am verzweifeln.

Gruss Mario


  


Betrifft: AW: Speichern nach Makro entfernen von: Annett
Geschrieben am: 15.08.2004 11:26:41

Hallo Mario

Du sprichts in Deinem Code die Datei mit ActiveWorkbook an. Bei der vorgeschlagnen Variante muß Du die Datei mit Ihrem Namen ansprechen.

Gruß Annett


  


Betrifft: AW: Speichern nach Makro entfernen von: mario
Geschrieben am: 15.08.2004 12:15:55

Hallo

ich kriege es einfach nicht hin.
Kannst du den code bitte abändern?

Vielen Dank.

Sub schutz()
Dim t As Integer
Dim i As Integer
Dim sFile As String, sPath As String, sJahr As String
t = ActiveWorkbook.Worksheets.Count
For i = 1 To t
On Error Resume Next
Sheets(i).Unprotect
Sheets(i).Select
        Cells.Select
        Selection.Locked = True
    Sheets(i).Protect
    range("A1").Select
   Next i
  Startseite
   ActiveWorkbook.SaveCopyAs "D:\Eigene Dateien\Temp.xls"   Startseite
   MakrosEntfernen
   End Sub



Sub MakrosEntfernen()
Dim sFile As String, sPath As String, sJahr As String
Dim CodeObj As Object
  If Val(Application.Version) >= 8 Then
    With ActiveWorkbook.VBProject
      For Each CodeObj In .VBComponents
        Select Case CodeObj.Type
          Case 1, 2
            .VBComponents.Remove CodeObj
          Case Else
            With CodeObj.CodeModule
              If .CountOfLines > 0 Then
                .DeleteLines 1, .CountOfLines
              End If
            End With
        End Select
      Next
    End With
  End If
  For Each CodeObj In ActiveWorkbook.Names
    Select Case CodeObj.MacroType
      Case xlFunction, xlCommand
        CodeObj.Delete
    End Select
  Next
  sPath = Application.DefaultFilePath & "\" & " Monat" & "_"
   sFile = Worksheets("Daten").range("C1").Value
   sFile = Format(CDate(sFile), "yyyymmdd") & ".xls"
   sJahr = Worksheets("Daten").range("AF3").Value
   ActiveWorkbook.SaveAs sPath & sFile & "_" & sJahr
   Workbooks("D:\Eigene Dateien\Temp.xls").SaveAs sPath & sFile & "_" & sJahr
        ActiveWorkbook.Close
        Application.DisplayAlerts = False  'ActiveWorkbook.Close
    End Sub



  


Betrifft: AW: Speichern nach Makro entfernen von: Annett
Geschrieben am: 15.08.2004 12:26:34

Hallo Mario

wodurch unterscheidet sich dieser Ansatz von dem ersten. Nur dadurch das Du nach dem Löschen noch mehr Zeilen hast. Du kannst nach dem LÖschen noch Tausend Zeilen einfügen die werden alle nicht abgearbeitet.

Du mußt eine kopie der Datei erst speichern und dann in dieser Kopie den Code löschen und dann die kopie schliessen mit speichern.

Gruß Annett


 

Beiträge aus den Excel-Beispielen zum Thema "Speichern nach Makro entfernen"