Hot News:

Unser Angebot:

  Foren auf CAD.de (alle Foren)
  Excel
  Kopie Speichern und VBA Löschen

Antwort erstellen  Neues Thema erstellen
CAD.de Login | Logout | Profil | Profil bearbeiten | Registrieren | Voreinstellungen | Hilfe | Suchen

Anzeige:

Darstellung des Themas zum Ausdrucken. Bitte dann die Druckfunktion des Browsers verwenden. | Suche nach Beiträgen nächster neuer Beitrag | nächster älterer Beitrag
Autor Thema:  Kopie Speichern und VBA Löschen (3652 mal gelesen)
Christian01
Mitglied
Technischer Zeichner


Sehen Sie sich das Profil von Christian01 an!   Senden Sie eine Private Message an Christian01  Schreiben Sie einen Gästebucheintrag für Christian01

Beiträge: 281
Registriert: 17.04.2007

Briscad V22
ACAD MAP 2019
Win 10 Pro 64bit
Intel, 4x 3,0 GHz, 8GB RAM
2 x 24" TFT

erstellt am: 04. Jun. 2013 07:23    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Hallo liebe Community.

Wie schon im Betreffe steht möchte ich gerne mittels VBA, die Aktive XLS als Kopie speichern und dabei den VBA Code Löschen.
Habe leider keine Kenntnisse in VBA.

Bei der Suche im Internet bin ich auf diverse Codes gestoßen, aber ich komme nicht mehr weiter.

Meine Excel heißen: Auflistung_001.xls; Auflistung_002.xls, ....+
Die VBA- Codes die zu Löschen sind sind: Abfrage (=Userform); Modul1 (=Modul) & div. VBA- Codes in Tabelle1(Auflistung); Tabelle2(Zusammenf), Tabelle3(Ausdruck)

Ich muß die Excel weitermailen, aber ohne bestehenden VBA Code. VBA- Code per Code schützen kommt eher nicht in Frage, er sollte doch gelöscht werden.


Habe den Code unten gefunden, aber weiß nicht wo man in hinschreibt und ihn Anwendet.

Kann mir jemand helfen?


Code:
Rem Diese Prozedur zum Löschen aufrufen
Sub Alles_löschen()
Call Lösche_Module
Call Lösche_Userformen
Call Lösche_Ereignisprozeduren
End Sub

Sub Lösche_Module()
Rem Löscht Module:
For n = ActiveWorkbook.VBProject.vbComponents.Count To 1 Step -1
If ActiveWorkbook.VBProject.vbComponents(n).Type = 1 Then
ActiveWorkbook.VBProject.vbComponents(n).Collection.Remove _
ActiveWorkbook.VBProject.vbComponents(n)
End If
Next
End Sub

Sub Lösche_Userformen()
Rem Löscht Userforms:
For n = ActiveWorkbook.VBProject.vbComponents.Count To 1 Step -1
If ActiveWorkbook.VBProject.vbComponents(n).Type = 3 Then
ActiveWorkbook.VBProject.vbComponents(n).Collection.Remove _
ActiveWorkbook.VBProject.vbComponents(n)
End If
Next
End Sub

Sub Lösche_Ereignisprozeduren()
Rem Löscht Ereignisprozeduren:
For n = ActiveWorkbook.VBProject.vbComponents.Count To 1 Step -1
For i = 1 To ActiveWorkbook.VBProject.vbComponents(n).CodeModule.CountOfLines
If ActiveWorkbook.VBProject.vbComponents(n).Type <> 1 And _
ActiveWorkbook.VBProject.vbComponents(n).Type <> 3 Then _
ActiveWorkbook.VBProject.vbComponents(n).CodeModule.DeleteLines 1
Next
Next
End Sub


------------------
Grüße

Christian

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Comos User
Mitglied



Sehen Sie sich das Profil von Comos User an!   Senden Sie eine Private Message an Comos User  Schreiben Sie einen Gästebucheintrag für Comos User

Beiträge: 112
Registriert: 23.03.2010

erstellt am: 04. Jun. 2013 09:19    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für Christian01 10 Unities + Antwort hilfreich

Hallo Christian,

dafür das du keine Ahnung von VBA hast ist dein Vorhaben ganz schön mutig.
Bei der Manipulation von Code durch Code kann mann sich schon mal selbst die Beine weghauen, und es gibt weder Netz noch doppelten Boden.

Dein Beispielcode macht ganau das, er löscht sich selbst

Folgende Funktion erstellt eine Copie des angegebenen bzw. des aktuellen WB und entfernt alls Scripte.

Code:
Function copywb(Optional wbscr As Workbook = Nothing) As Workbook
Dim neu As Object
Dim objVBComponents As Object

'wenn kein Parameter dann Active Workbook
If wbscr Is Nothing Then Set wbscr = Application.ActiveWorkbook
'erstes Blatt copieren / neues Workbook wird angelegt
wbscr.Sheets(1).Copy

'alle weiteren Blätter copieren
Set neu = Application.ActiveSheet
For x = 2 To wbscr.Sheets.Count
    wbscr.Sheets(x).Copy after:=neu
    Set neu = Application.ActiveSheet
Next
'Löschen aller VB's
'Module und Form's wurden ja nicht copiert und brauchen also nicht bearbeitet werden

For Each objVBComponents In neu.Parent.VBProject.VBComponents
        With objVBComponents.CodeModule
                  .DeleteLines 1, .CountOfLines
        End With
Next
'Rückgabe des copierten Workbook
Set copywb = neu.Parent
End Function


Dieses kannst du dann unter neuem Namen speichern

Code:
copywb.SaveAs "D:\xyz.xls"

Gruß
Peter

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Beverly
Mitglied
Dipl.-Geologe (Rentner)


Sehen Sie sich das Profil von Beverly an!   Senden Sie eine Private Message an Berverly  Schreiben Sie einen Gästebucheintrag für Berverly

Beiträge: 394
Registriert: 11.08.2007

erstellt am: 08. Jun. 2013 08:35    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für Christian01 10 Unities + Antwort hilfreich

Hi Christian,

der einfachste Weg, um jeglichen Code aus einer Arbeitsmappe zu löschen ist - meines Wissens-, sie im Format "Microsoft Excel 5.0/95-Arbeitsmappe" zu speichern.

------------------
Bis später,
Karin

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Anzeige.:

Anzeige: (Infos zum Werbeplatz >>)

Darstellung des Themas zum Ausdrucken. Bitte dann die Druckfunktion des Browsers verwenden. | Suche nach Beiträgen

nächster neuerer Beitrag | nächster älterer Beitrag
Antwort erstellen


Diesen Beitrag mit Lesezeichen versehen ... | Nach anderen Beiträgen suchen | CAD.de-Newsletter

Administrative Optionen: Beitrag schliessen | Archivieren/Bewegen | Beitrag melden!

Fragen und Anregungen: Kritik-Forum | Neues aus der Community: Community-Forum

(c)2023 CAD.de | Impressum | Datenschutz