PDA

Vollständige Version anzeigen : VBA Befel rückgängig machen ?


chakko
26.11.2008, 09:27
Hallo Forum,

gibt es einen VBA-Befehl um einen anderen VBA-Befehl rückgängig zu machen, also eine undo-Funktion für VBA-Befehle ?
Konkret:
ich möchte in einem Word-Dok vor dem Speichern des Doks ein in der Dokumentenvorlage gespeichertes logo löschen, das Word Dokument dann speichern und dann in dem Dokument mit dem Logo weiterarbeiten, also die Löschung des Logos rückgängig machen.
Mit dem Code
ActiveDocument.Bookmarks("PicLogo").Range.Select
Selection.Delete Unit:=wdCharacter, Count:=1
If ActiveDocument.Saved = False Then ActiveDocument.SaveAs ("C:\Beispiel.doc")
lösche ich erfolgreich das Logo, das sich an der Textmarke PicLogo befindet und speichere die Datei.
Jetzt suche ich einen undo Befehl, der den Befehl
Selection.Delete Unit:=wdCharacter, Count:=1 rückgängig macht.
Natürlich könnte ich das Logo jetzt einfach erneut aus der Bilddatei einfügen; das gibt aber Probleme mit der Größe des Logos, weil das Logo beim Einfügen in die Dokumentenvorlage in der Größe verändert wurde und somit nicht mehr der Original-Größe der Ausgangs-Bilddatei entspricht.
Daher wäre ein Undo Befehl die sicherste Methode den Ursprungszustand wieder herzustellen.
Bitte verkneift Euch die Frage: "warum willst Du das überhaupt..." :rolleyes:

Chakko

PS: An die Mods : kann man nicht die Zeit, in der man eingeloggt ist verlängern ? Es ist schon nervig, wenn amn einen längeren Beitrag schreibt und beim Abschicken dann den Hinweis kriegt, das man rausgeflogen ist und sich neu anmelden muss

PapaSchlumpf
26.11.2008, 10:07
Hi

da du eine Textmarke mitlöschst, probier mal folgendes:

<a HREF='#Index' name='UndoDelPic' style=" color:#000080; background: #DFDFDF; font: italic bold;">Sub UndoDelPic() </a>
<span style=" color:#0000FF; background: #FFFFFF;">Do</span>

<span style=" color:#0000FF; background: #FFFFFF;">Loop</span> <span style=" color:#0000FF; background: #FFFFFF;">While</span> <span style=" color:#FF0000; background: #FFFFFF;">(</span>ActiveDocument.Undo = <span style=" color:#0000FF; background: #FFFFFF;">True</span><span style=" color:#FF0000; background: #FFFFFF;">)</span> <span style=" color:#0000FF; background: #FFFFFF;">And</span> ActiveDocument.Bookmarks.Exists<span style=" color:#FF0000; background: #FFFFFF;">(</span><span style=" color:#FF0000; background: #FFFFFF;">"</span>PicLogo<span style=" color:#FF0000; background: #FFFFFF;">"</span><span style=" color:#FF0000; background: #FFFFFF;">)</span> = <span style=" color:#0000FF; background: #FFFFFF;">False</span>
<span style=" color:#000080; background: #DFDFDF; font: italic bold;">End Sub </span><hr>
'Erstellt mit PapaSchlumpfs VBA-Konverter

PS

M Gonsior
26.11.2008, 10:48
Hy...

ich habe bei mir ein ähnliches Problem (nur geht´s bei mir ums Drucken) und habe dies gelöst durch Abfrage auf den Alternativen WebText und dann bei Bedarf einfach die Einstellungen so geändert, dass das Logo ganz weiß dargestellt wird oder wieder "eingeblendet" wird..

Public Sub GrafikAusblenden()
Dim Form As Shape
Flag = False
For Each Form In ActiveDocument.Shapes
If Form.Type = msoPicture Or Form.Type = msoLinkedPicture Then
If Form.AlternativeText = "GrafikMeinName" Then
Flag = True
Form.PictureFormat.Brightness = 1#
Form.PictureFormat.Contrast = 1#
Exit For
End If
End If
Next
If Flag = False Then
MsgBox "In diesem Formular ist kein Logo vorgesehen."
End If
End Sub

Public Sub GrafikEinblenden()
Dim Form As Shape
Flag = False
For Each Form In ActiveDocument.Shapes
If Form.Type = msoPicture Or Form.Type = msoLinkedPicture Then
If Form.AlternativeText = "GrafikMeinName" Then
Flag = True
Form.PictureFormat.Brightness = 0.5
Form.PictureFormat.Contrast = 0.5
Exit For
End If
End If
Next
If Flag = False Then
MsgBox "In diesem Formular ist kein Logo vorgesehen."
End If
End Sub

Ich hoffe, dies dient dir als Anregung

Grüßle
MG

chakko
01.12.2008, 11:57
@ Papaschlumpf und Mgonsior:

Danke für eure Hilfe. Leider komme ich nach einem grippalen Infekt erst heute dazu, mich damit zu befassen.

@Papaschlumpf: Ich habe Deinen Code zwar nicht hundertprozentig verstanden, aber es funzt genauso, wie gewünscht, vielen Dank auch !
PS: was ist PapaSchlumpf VBA-Konverter ?

@MGonsior: Deinen Code konnte ich leider nicht gebrauchen, weil das Logo nicht tatsächlich entfernt wird. Genau das sollte aber sein. Sinn der Maßnahme war, die Datei möglichtst geringem Speicherplatz zu speichern.
Trotzdem danke, kann den Code möglicherweise für eine andere Idee verwenden.

PapaSchlumpf
01.12.2008, 12:10
Der
"PapaSchlumpf VBA-Konverter"

ist mein kleiner, eigener Syntax-Highlighter ;)

PS