Microsoft Excel

Herbers Excel/VBA-Archiv

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

Zwischenspeicher leeren bei Mappe schliessen


Betrifft: Zwischenspeicher leeren bei Mappe schliessen von: Dieter(Drummer)
Geschrieben am: 18.08.2016 20:06:13

Guten Abend VBA Spezialisten,

beim schliessen der Mappe soll der ganze Zwischenspeicher geleert werden. Dies mache ich mit folgendem Code, der in "DieseArbeitsmappe" liegt. Warum leert sich dennoch der Zwischenspeicher nicht?:

  • Private Sub Workbook_BeforeClose(Cancel As Boolean)
    Application.CutCopyMode = False
    End Sub

  • Mit der Bitte um Hilfe.
    Gruß, Dieter(Drummer)

      

    Betrifft: AW: Zwischenspeicher leeren bei Mappe schliessen von: Hajo_Zi
    Geschrieben am: 18.08.2016 20:12:05

    Hallo Dieter,

    in meiner Datei kann ich das nicht nachvollziehen.

    GrußformelHomepage


      

    Betrifft: AW: Zwischenspeicher leeren bei Mappe schliessen von: Dieter(Drummer)
    Geschrieben am: 18.08.2016 20:17:54

    Hallo Hajo,

    Danke für Rückmeldung. In meiner Datei funktioniert es aber nicht.
    Gruß, Dieter(Drummer)


      

    Betrifft: AW: Zwischenspeicher leeren bei Mappe schliessen von: Werner
    Geschrieben am: 18.08.2016 20:31:24

    Hallo Dieter,

    versuch mal

    Dim oData As DataObject
      Set oData = New DataObject
      oData.SetText ""
      oData.PutInClipboard
    Da wird ein Leerer ins Clipboard geschrieben und dieses somit geleert.

    Solltest du eine Fehlermeldung bekommen dann liegt das daran, dass der Verweis auf die "Microsoft Forms 2.0 Object Library" nicht gesetzt ist. Dann einfach mal im Makroeditor eine leere Userform anlegen, dann wird der Verweis automatisch gesetzt. Die Userform kannst du dann wieder löschen. Beim Speichern der mappe wird der gesetzte Verweis mit gespeichert.

    Gruß Werner


      

    Betrifft: AW: Zwischenspeicher leeren bei Mappe schliessen von: Dieter(Drummer)
    Geschrieben am: 18.08.2016 20:44:31

    Hallo Werner,

    Danke für Rückmeldung. Ich habe deinen Code jetzt unter "DieseArbeitsnappe" gesetzt, es funtioniert dennoch nicht. "Microsoft Forms 2.0 Object Library" hatte ich gesetzt:

    Private Sub Workbook_BeforeClose(Cancel As Boolean)
    Dim oData As DataObject
      Set oData = New DataObject
      oData.SetText ""
      oData.PutInClipboard
    'Application.CutCopyMode = False
    End Sub

    Gruß, Dieter(Drummer)


      

    Betrifft: AW: Zwischenspeicher leeren bei Mappe schliessen von: Werner
    Geschrieben am: 18.08.2016 20:52:34

    Hallo Dieter,

    pack den Code doch mal in ein Modul und lass ihn laufen. Schau dann mal nach ob das Clipboard geleert ist. Wenn ja dann hängt es wohl mit dem Before Close Event zusammen.

    Gruß Werner


      

    Betrifft: AW: Zwischenspeicher leeren bei Mappe schliessen von: Dieter(Drummer)
    Geschrieben am: 18.08.2016 21:06:30

    Hallo Werner,

    habe es auch versucht und klappt auch nicht. Kann man wohl nichts machen.
    Danke für deine Hilfe.
    Gruß, Dieter(Drummer)


      

    Betrifft: AW: Gerne auch wenn ich nicht helfen konnte. von: Werner
    Geschrieben am: 18.08.2016 21:11:33

    Hallo Dieter,

    ich stell mal auf offen, vielleicht fällt ja noch jemandem was ein. Interessiert mich aus.

    Gruß Werner


      

    Betrifft: AW: Zwischenspeicher leeren bei Mappe schliessen von: Dieter(Drummer)
    Geschrieben am: 18.08.2016 20:22:28

    Hallo Hajo,

    hier ist mal meine Testdatei. Über den grünen Button wird ein Makro aufgerufen, dass eine Text kopiert, also in den Zwischenspeicher einfügt. Beim schliessen der Datei wird er nicht geleert.
    Gruß, Dieter(Drummer)
    https://www.herber.de/bbs/user/107699.xlsm


      

    Betrifft: AW: Zwischenspeicher leeren bei Mappe schliessen von: Nepumuk
    Geschrieben am: 18.08.2016 21:22:12

    Hallo,

    im Modul "DieseArbeitsmappe":

    Option Explicit

    Private Sub Workbook_BeforeClose(Cancel As Boolean)
        Call ClearClipboard
    End Sub

    In einem Standardmodul:

    Option Explicit

    Private Declare PtrSafe Function OpenClipboard Lib "user32.dll" ( _
        ByVal hwnd As LongPtr) As Long
    Private Declare PtrSafe Function EmptyClipboard Lib "user32.dll" () As Long
    Private Declare PtrSafe Function CloseClipboard Lib "user32.dll" () As Long

    Public Sub ClearClipboard()
        Call OpenClipboard(Application.hwnd)
        Call EmptyClipboard
        Call CloseClipboard
    End Sub


    Gruß
    Nepumuk


      

    Betrifft: AW: Zwischenspeicher leeren bei Mappe schliessen von: Dieter(Drummer)
    Geschrieben am: 18.08.2016 21:35:06

    Danke Nepumuk,

    es funktioniert. Der Zwischenspeicher wird aber erst geleert, wenn Excel komplett geschlossen wird und NICHT, wenn nur die Datei geschlossen wird.
    Danke und noch einen schönen Abend.

    Gruß, Dieter(Drummer)


    Beiträge aus den Excel-Beispielen zum Thema "Zwischenspeicher leeren bei Mappe schliessen"