Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
760to764
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
760to764
760to764
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Makro mit Makro löschen

Makro mit Makro löschen
13.05.2006 09:27:40
Scheinchen
Hallo VBA'ler
ich möchte mit einem Makro ein Makro in einem Word Dokument löschen.
Es ist nur dieses kleine Ding - und das soll weg oder dekativiert werden:

Sub AutoOpen()
Call Strg_V
End Sub

Es befindet sich in "ThisDocument". Ich möchte nur verhindern, dass beim nochmaligen Öffnen immer die Zwischenablage eingefügt wird.
Folgendes Makro habe ich in diesem Forum gefunden, damit funktioniert es leider nicht - Was mache ich falsch?
With Application.VBE.ActiveVBProject
.vbComponents.Remove .vbComponents("Modul2")
End With
Bitte kann mir jemand helfen - ich stecke fest....
Liebe Grüße,
Scheinchen

17
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Makro mit Makro löschen
13.05.2006 10:33:31
Tassos
Hallo Scheinchen,
Unter Extras – Makros – Sicherheit (Reiter: “Vertrauenswürdige Herausgeber“)
muss das Kästchen "Zugriff auf VB-Projekt vertrauen" aktiviert sein.

Sub DelModul()
Dim VBC 'As VBConent
Set VBC = ThisDocument.VBProject.VBComponents("Modul2")
ThisDocument.VBProject.VBComponents.Remove VBC
End Sub

oder hier anschauen: https://www.herber.de/forum/archiv/760to764/t763342.htm
Gruss
Tassos
AW: Makro mit Makro löschen
13.05.2006 10:51:40
Scheinchen
Hallo Tassos,
vielen Dank für die Antwort. Kannst Du mir bitte sagen, was ich für ("Modul2") eintragen muss? Wenn ich ("AutoOpen") nehme, klappt es nicht und ("ThisDocument") funktioniert auch nicht.
Kannst Du mir bitte noch mal helfen?
Vielen Dank,
Scheinchen
Anzeige
AW: Makro mit Makro löschen
13.05.2006 11:47:25
Tassos
Hallo,
wenn ich das richtig verstanden habe Du möchtest also von Excel aus, ein Modul in ein Word-Dokument löschen.
Dann so:

Sub DelWDMDL()
Dim WD As Object, WDDoc As Object, VBC 'As VBConent
Set WD = CreateObject("Word.Application")
'WD.Visible = True
Set WDDoc = WD.Documents.Open(ThisWorkbook.Path & "\Dok1.doc") 'Pfad von Word anpassen
On Error GoTo LastLine
Set VBC = WDDoc.VBProject.VBComponents("NewMacros") 'hier der Name des Word-vb-Modules
WDDoc.VBProject.VBComponents.Remove VBC
WDDoc.Save
LastLine:
WD.Quit
End Sub

Gruss
Tassos
Anzeige
AW: Makro mit Makro löschen
13.05.2006 13:10:13
Scheinchen
Hallo Tassos,
danke für das Makro - aber sorry, nein. Warum bin ich nur so unbeholfen?
Ich versuche, kurz den Ablauf zu erklären:
1. Aus einem Word-Doc erstelle ich mit einem Makro eine Kopie ,mit "Speichern unter", auf dem Desktop. Diese heißt: Copy.doc
2. In der Copy.doc werden leider auch alle Makros aus dem Word-Doc kopiert. Das ist nicht erwünscht. Besonders nicht das AutoOpen-Makro, welches bewirkt, dass sich beim Öffnen die Zwischenablage einfügt.
3. Das AutoOpen Makro muss also deaktiviert oder gelöscht werden. Es befindet sich in keinem Modul, sondern in "ThisDocument".
4. In dem Copy.doc könnten natürlich gerne auch alle Makros gelöscht werden. Das wäre noch besser.
5. Ich vermute, dss diese Löschaktion von dem Word-Doc aus gesteuert werden muss, weil sich ein Makro sicher nicht selber löschen kann, richtig?
Ich hoffe, jetzt ist es etwas klarer geworden und ich freue mich auf Deine Hilfe.
Vielen Dank,
Scheinchen
Anzeige
AW: Makro mit Makro löschen
13.05.2006 13:19:29
Reinhard
Hi scheinchen,
ungetestet:
Private Const Target = "C:\WINNT\Anwendungsdaten\Microsoft\Vorlagen\Test.dot"
Sub AlleVBAKomponentenLoeschen()
Dim oDoc As Document
On Error Resume Next
Set oDoc = Documents.Open(FileName:=Target, AddToRecentFiles:=False)
rc = Err.Number
sysmsg = Err.Description
On Error GoTo 0
If rc > 0 Then
m = Target & " konnte aus folgendem Grund nicht geöffnet werden:"
MsgBox m & vbLf & sysmsg, vbExclamation
Exit Sub
End If
For Each komp In oDoc.VBProject.VBComponents
Select Case komp.Type
Case 100 'Das ist die Komponente *ThisDocument*
If komp.CodeModule.CountOflines > 0 Then
komp.CodeModule.DeleteLines 1, komp.CodeModule.CountOflines
End If
Case Else 'Jede andere Komponente
oDoc.VBProject.VBComponents.Remove komp
End Select
Next
'oDoc.Close SaveChanges:=True
End Sub

Gruß
Reinhard
ps: Ich freue mich über eine Rückmeldung ob diese Antwort hilfreich war oder nicht..
Anzeige
AW: Makro mit Makro löschen
13.05.2006 14:12:52
Tassos
Hallo Scheinchen,
Du bist oder Du warst so ungeholfen weil Du Dein Problem, erst nach 2 Antworten so beschilderst dass man durchblicken und richtig helfen kann.
Mein Antwort zu Deiner Frage wäre im Prinzip wie die von Reinhard
Schöne Grüsse
Tassos
AW: Makro mit Makro löschen
13.05.2006 15:19:19
Scheinchen
Ja, sorry, Tassos,
Vielen Dank für die Hilfen - Jetzt werde ich mal probieren.
Melde mich wieder.
Danke nochmal
Scheinchen
AW: Makro mit Makro löschen
13.05.2006 18:10:55
Scheinchen
Leider klappt es auch nicht mit diesem Makro.
Folgende Meldung poppt auf:
"SelectRow-methode oder eigenschaft nicht verfügbar, weil das Objekt nicht auf eine Tabelle verweist"
Was bedeutet das? Also ich habe versucht, in einem neuen Dokument Euer Makro einzufügen und möchte damit die Makros aus dem Copy.doc löschen.
Das Copy.doc wird zwar geöffnet, nach der Meldung bleibt alles stehen.
Kann mir bitte noch mal jemand helfen, bitte?
Vielen Dank,
Scheinchen
Anzeige
AW: Makro mit Makro löschen
13.05.2006 22:24:21
Scheinchen
Hallo,
ich glaube, ich weiß jetzt, warum diese Meldung kommt. Es liegt an dem "AutoOpen" Makro. Durch das Öffnen des Dokumentes durch das Löschmakro will das "AtuoOpen" die Zwischenablage einfügen.
Ist es vielleicht möglich, das Ausführen der Makros beim Öffnen zu unterbinden? Natürlich durch ein Makro und nicht die "Hochtaste".
Ich bitte noch mal freundlich um Hilfe - Vielen Dank,
Scheinchen
AW: Makro mit Makro löschen
13.05.2006 23:27:52
Reinhard
Hi Scheinchen,
ich habe das Makro von hier, irgendwie die beste Wordseite die ich kenne, aber ich kenne mich mit Word-Vba nicht aus.
http://mypage.bluewin.ch/reprobst/FrmSet.htm?Index
Ich gehe sehr davon aus, der Code dort ist getestet und funktioniert.
Aber mit dem Auto.Open, vielleicht nützt es was vor dem Öffnen EnableEvents auf False zu setzen, damit Auto.Open nicht ausgeführt wird.
Wie man das im Word-Vba macht=k.A.
Gruß
Reinhard
ps: Ich freue mich über eine Rückmeldung ob diese Antwort hilfreich war oder nicht..
Anzeige
AW: Makro mit Makro löschen
14.05.2006 00:37:25
Tassos
Hallo,
Probier mal so:
Option Explicit

Sub DelWDMDL()
Dim WD As Object, WDDoc As Object, VBC 'As VBConent
On Error GoTo LastLine
Set WD = CreateObject("Word.Application")
WD.WordBasic.DisableAutoMacros 1 'Keine Auto-Makros werden gestartet
Set WDDoc = WD.Documents.Open(ThisWorkbook.Path & "\Dok1.doc") 'Pfad von Word anpassen
For Each VBC In WDDoc.VBProject.VBComponents
Select Case VBC.Type
Case 100
If VBC.CodeModule.CountOflines > 0 Then
VBC.CodeModule.DeleteLines 1, VBC.CodeModule.CountOflines
End If
Case Else
WDDoc.VBProject.VBComponents.Remove VBC
End Select
Next
WDDoc.Save
LastLine:
WD.Quit
End Sub

Gruss
Tassos
Anzeige
AW: Makro mit Makro löschen
14.05.2006 08:47:43
Scheinchen
Hallo Tassos,
juhei - das klappt ja schon mal supigut. Allerdings ist jetzt folgendes Problem:
Ich erstelle aus dem Word-Doc mit "Speichern Unter" das Copy.doc.
In dem Word-Doc befindet sich Dein Makro.
Bei dem Speichervorgang werden alle Makros in das Copy.doc kopiert, also auch Deines.
Der Ablauf ist nun folgendermaßen:
Word-Doc öffnet sich, alle Makros werden ausgeführt, bis mit "Speichern Unter" das Copy.doc erstellt wird. Dann ist das Word-Doc verschwunden und das letzte Makro (Dein Makro) wird von dem Copy.doc aus ausgeführt. Das bedeutet: Es kommt eine Meldung: Dokument bereits geöffnet, wollen Sie schreibgeschützt öffnen?
Ich hoffe, ich habe das einigermaßen verständlich beschrieben.
Wie kann ich nun mein kleines letztes Problemchen lösen? Das Word-Doc müsste noch offen sein, oder wieder geöffnet werden, oder Dein Makro müsste so sein, dass es die Makros im eigenen Dokument löscht.
Sorry, dass ich noch mal um Hilfe bitten muss, aber jetzt sind wir so nah an der Lösung, ich fühle es ;-)
Vielen Dank schon mal für Hilfe - ich freue mich !!!!
Liebe Grüße,
Scheinchen
Anzeige
AW: Makro mit Makro löschen
14.05.2006 10:53:50
Tassos
Hallo,
kannst Du Deinem bischerigen Code posten?
Gruss
Tassos
AW: Makro mit Makro löschen
14.05.2006 11:48:16
Scheinchen
Hallo Tassos,
gerne. Hier ist das Word-Doc, welches mit "Speichern unter" das Copy.doc erstellt.
https://www.herber.de/bbs/user/33622.doc
Vielen Dank für Deine Mühe.
Liebe Grüße,
Scheinchen
AW: Makro mit Makro löschen
14.05.2006 13:15:46
Tassos
Hallo, wir sind aber ganz weg von Excel!
Ich glaube das ist nicht der Sinn eines Excel-Forums Word-Hilfe anzubieten!
Ok, weil es um VBE Komponenten geht, hier ist der Code der nach der
die oben genannten Komponenten aus dem neugespeicherten Dokument entfernt
Achtung! Das ganze bitte in "ThisDocument" (VB - Editor, Ursprüngliches Dokument)
kopieren. Alles andere ist dann nicht mehr notwendig.


Private Sub Document_Open()
Dim VBC
On Error Resume Next
 Selection.PasteAndFormat (wdPasteDefault)
    Selection.HomeKey Unit:=wdStory
    ' Kopfzeile von 1ten Seite kopieren
    Selection.MoveRight Unit:=wdItem, Count:=7 'Wiederholungen
    Selection.SelectRow
    Selection.MoveDown Unit:=wdLine, Count:=3, Extend:=wdExtend
    Selection.Copy
    If ActiveWindow.View.SplitSpecial <> wdPaneNone Then
        ActiveWindow.Panes(2).Close
    End If
    'in Kopfzeile auf der 2ten Seite einfügen
        If ActiveWindow.View.SplitSpecial <> wdPaneNone Then
        ActiveWindow.Panes(2).Close
    End If
    If ActiveWindow.ActivePane.View.Type = wdNormalView Or ActiveWindow. _
        ActivePane.View.Type = wdOutlineView Then
        ActiveWindow.ActivePane.View.Type = wdPrintView
    End If
    ActiveWindow.ActivePane.View.SeekView = wdSeekCurrentPageHeader
    ActiveWindow.ActivePane.View.NextHeaderFooter
    Selection.TypeParagraph
    Selection.TypeParagraph
    Selection.PasteAndFormat (wdPasteDefault)
    Selection.HomeKey Unit:=wdStory
    ActiveWindow.ActivePane.View.SeekView = wdSeekMainDocument
    Selection.HomeKey Unit:=wdStory
    'speichern unter als Dokument.doc
       ChangeFileOpenDirectory _
        "C:\Dokumente und Einstellungen\Administrator\Desktop\"
    ActiveDocument.SaveAs FileName:="Dokument.doc", FileFormat:= _
        wdFormatDocument
For Each VBC In ActiveDocument.VBProject.VBComponents
Select Case VBC.Type
Case 100
If VBC.CodeModule.CountOflines > 0 Then
VBC.CodeModule.DeleteLines 1, VBC.CodeModule.CountOflines
End If
Case Else
ActiveDocument.VBProject.VBComponents.Remove VBC
End Select
Next
ActiveDocument.Save
End Sub


Gruss
Tassos
Anzeige
AW: Makro mit Makro löschen
14.05.2006 22:41:58
Scheinchen
Hallo Tassos,
Oh, da hast Du wohl sehr recht. Ich werde mir ein Word Forum suchen.
Du bist aber trotzdem eine Wucht!!!! Das funzt ja supimäßig !!!!
Du hast mein Makro nebenbei gleich ein bisschen aufgeräumt - Dankeschön.
Ich kenne nur den Makrorekorder und wenn es um spezielle Sachen geht,
bin ich verloren :-(
Ich bin so froh, dass es Euch gibt :-))))))))))))))))))))))
1000 Dank noch mal, Tassos.
Jetzt ist mein kleine Excel-Word Programm vollendet ;-)
Einfach genial.
Liebe Grüße,
Scheinchen
AW: Makro mit Makro löschen
14.05.2006 23:31:33
Tassos
Hallo Scheinchen,
Danke für die Rückmeldung!
Gruss
Tassos

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige