Microsoft Excel

Herbers Excel/VBA-Archiv

Informationen und Beispiele zum Thema MsgBox
BildScreenshot zu MsgBox MsgBox-Seite mit Beispielarbeitsmappe aufrufen

nur bestimmte Codes übernehmen

Betrifft: nur bestimmte Codes übernehmen von: Wolfgang
Geschrieben am: 09.11.2012 10:12:55

Hallo,
mit nachfolgendem Code wird die aktuelle Arbeitsmappe unter Löschen nicht benannter Tabellenblätter a.d. Desktop kopiert. Wie kann ich den Code ergänzen, dass auch nur bestimmte Codes aus der Arbeitsmappe übernommen werden und alle anderen Codes/Makros ebenfalls gelöscht werden? Danke schon jetzt für die Rückmeldungen.
Gruß - Wolfgang

'Speichert aktuelle Mappe unter untenstehenden Namen ab und löscht alle anderen Tabellen
Sub Speichern1234()
 Application.ScreenUpdating = False
  Dim wks As Worksheet
  Dim i As Long, x As Long
x = 0
For i = 1 To ActiveWorkbook.Sheets.Count
If Sheets(i).Name = "Ergebnisse" Then x = x + 1

Next i
If x > 0 Then
    MsgBox "Die gefilterten Daten werden auf Ihrem Desktop gespeichert, der Vorgang kann etwas   _
_
dauern! Bitte OK drücken.", vbOKOnly
Else
    MsgBox "Sie haben noch keine Daten gefiltert, die exportiert werden könnten !", vbCritical
    Exit Sub
End If

  ThisWorkbook.SaveAs "C:\Dokumente und Einstellungen\" & Environ("Username") & "\Desktop\ _
Ergebnisse." & Date & ".xlsm"
  Application.DisplayAlerts = False
  
  For Each wks In Worksheets
    If wks.Name = "Ergebnisse" Then
    Else
      wks.Delete
    End If
     Next
    
    ThisWorkbook.Save
    ThisWorkbook.Close
 
  Application.DisplayAlerts = True
   Application.ScreenUpdating = True
End Sub

  

Betrifft: AW: nur bestimmte Codes übernehmen von: Rudi Maintaire
Geschrieben am: 09.11.2012 11:15:27

Hallo,
das löschen von Code ist erst gestern behandelt worden.
https://www.herber.de/forum/messages/1285837.html

Was genau stellst du dir vor?

Gruß
Rudi


  

Betrifft: AW: nur bestimmte Codes übernehmen von: Wolfgang
Geschrieben am: 09.11.2012 11:55:42

Hallo Rudi,
danke zunächst für Deine schnelle Rückmeldung. Die Arbeitsmappe enthält verschiedene Module. Am liebsten wäre mir, zunächst im Ansatz alle vorhandenen Module, auch Blattmodule, zu löschen, außer z.B. "Modul1" und "Modul2", die dann übrigbleiben sollten; Ich schaue mir Deinen Hinweis nachher in Ruhe an, ob ich daraus etwas in dem Sinne "basteln" könnte. Wäre Dir aber sehr dankbar, wenn Du vielleicht direkt schon eine Idee hättest, mir diese mitzuteilen. Danke nochmals recht herzlich!
Gruß - Wolfgang


  

Betrifft: AW: nur bestimmte Codes übernehmen von: Rudi Maintaire
Geschrieben am: 09.11.2012 11:59:43

Hallo,
auch Blattmodule, zu löschen,
aus denen kannst du nur den Code löschen, nicht die Module selbst.

Gruß
Rudi


  

Betrifft: AW: nur bestimmte Codes übernehmen von: Wolfgang
Geschrieben am: 09.11.2012 13:34:24

Hallo Rudi,
die Codes im Blattmodul zu löschen wäre noch idealer, weil auch bestimmte Codes im Blattmodul nicht gelöscht werden sollten. Kannst Du mir da einen Hinweis geben, wie ich da vorgehen könnte?
Danke und Gruß, Wolfgang


  

Betrifft: AW: nur bestimmte Codes übernehmen von: Rudi Maintaire
Geschrieben am: 09.11.2012 14:24:02

Hallo,
z.B.

Sub Call_Kill_Proc()
  'einzeln
  Kill_Proc Workbooks("Mappe6"), Sheets("tabelle1"), "Worksheet_SelectionChange"
  'oder alle
'  Kill_Proc Workbooks("Mappe6"), Sheets("tabelle1"), ""
End Sub

Sub Kill_Proc(wkb As Workbook, wks As Worksheet, sProc As String)
  Dim iFirst, iCount
  With ActiveWorkbook.VBProject.VBComponents(wks.CodeName).CodeModule
    If sProc = "" Then
      .DeleteLines 1, .CountOfLines
    Else
      iFirst = .ProcStartLine(sProc, vbext_pk_Proc)
      iCount = .ProcCountLines(sProc, vbext_pk_Proc)
      .DeleteLines iFirst, iCount
    End If
  End With
End Sub

Gruß
Rudi


  

Betrifft: AW: nur bestimmte Codes übernehmen von: Wolfgang
Geschrieben am: 10.11.2012 08:22:48

Hallo Rudi,
sorry zunächst, dass ich mich jetzt erst melde. Ich hatte gestern wider Erwarten noch Gäste und kam somit nicht mehr ins Forum. Danke für Deine schnelle Rückmeldung. Deinen Code konnte ich soweit aufgreifen und verstehen, so dass ich ihn angepasst habe und er mir nun bestimmte Blattmodule löscht. Was ich noch nicht hinbekomme, ist das löschen von anderen Modulen. Wie kann ich den Code da anpassen?
Danke Dir schon jetzt wieder für die Rückmeldung.
Gruß - Wolfgang


  

Betrifft: AW: nur bestimmte Codes übernehmen von: Rudi Maintaire
Geschrieben am: 11.11.2012 16:47:00

Hallo,
hab noch einen Fehler gefunden. Es muss natürlich

  With wkb.VBProject.VBComponents(wks.CodeName).CodeModule

heißen.

zur Frage:
wkb.VBProject.VBComponents.remove wkb.VBProject.VBComponents("Modul1")


Gruß
Rudi


  

Betrifft: Vielen Dank, Rudi !!! von: Wolfgang
Geschrieben am: 12.11.2012 05:28:47

Hallo Rudi,
herzlichen Dank für Deine erneute Rückmeldung und Ergänzungen. Ich habe den Code soweit angespasst und die Änderungen/Ergänzungen "eingebaut"; Ich meine, er läuft nun tadellos und habe keine Probleme festgestellt. Hab nochmals Dank dafür!!
Gruß und einen schönen Tag
Wolfgang


 

Beiträge aus den Excel-Beispielen zum Thema "nur bestimmte Codes übernehmen"