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

Zwischenspeicher freigeben

Zwischenspeicher freigeben
22.06.2004 19:52:46
Björn
Huhu zusammen,
kann mir gerade jemand mitteilen, wie man den Zwischenspeicher freiräumen kann? Ich habe ein kleines Programm erstellt, dass eine Großrechnerdatenbank ausliest, indem Zahlen aus einer xl-Tabelle in die Abfragefelder der Anwendung eingelesen werden und das Ergebnis mittels set ergebnis = object.screenarea(Bereichsdefinition) definiert, per copy in den Zwischenspeicher und per Paste in die Excel-Datei zurückgelesen wird. Leider wird das Script mit der Zeit ziemlich langsam, die CPU-Nutzzung auf 90 %. Soweit ich das beurteilen kann, liegt es tatsächlich nicht an der Großrechner-Anwendung, sondern am VBA-Programm. Leeren des Zwischenspeichers nach jedem Lesevorgang könnte vielleicht helfen. Hat jemand eine andere Idee.
Vielen Dank für Eurere Hilfe!
Gruß
Björn

5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Zwischenspeicher freigeben
22.06.2004 20:14:55
Nepumuk
Hallo Björn,
so geht's:


Option Explicit
Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As StringByVal lpWindowName As StringAs Long
Private Declare Function OpenClipboard Lib "user32" (ByVal hwnd As LongAs Long
Private Declare Function EmptyClipboard Lib "user32" () As Long
Private Declare Function CloseClipboard Lib "user32" () As Long
Public Sub loeschen_Zwischenablage()
    OpenClipboard FindWindow("xlMain", vbNullString)
    EmptyClipboard
    CloseClipboard
End Sub


Gruß
Nepumuk
Anzeige
AW: Zwischenspeicher freigeben
22.06.2004 20:31:21
Philipp von Wartburg
Hallo zusammen
Ich bin überzeugt, dass Nepumuks Lösung funktioniert. Folgende Lösung erscheint mir jedoch einiges einfacher (und kürzer):

Sub ClearClipboard()
Cells.Find("").Copy
Application.CutCopyMode = False
End Sub

Man muss allerdings darauf achten, dass das aktive Arbeitsblatt ein Tabellenblatt ist. Sonst sicherheitshalber das zu verwendende Blatt explizit angeben (also Worksheets("Tabelle1").Cells.Find("").Copy).
Gruss
Philipp
AW: Zwischenspeicher freigeben
22.06.2004 20:42:28
Nepumuk
Hallo Philipp,
da bekomme ich schon in der ersten Zeile Fehler 91. Woran liegt das?
Gruß
Nepumuk
Anzeige
AW: Zwischenspeicher freigeben
22.06.2004 21:34:51
Philipp von Wartburg
Hallo Nepumuk
Du hast recht. Das ist eine Ausnahmesituation. Wenn das aktive Tabellenblatt komplett leer ist, also sämtliche Zellen weder einen Inhalt besitzen noch formatiert sind, und auch keine Zeilenhöhe verstellt wurde (technisch gesehen enthält UsedRange die Zelle A1), so findet Excel keine leere Zelle und gibt den Fehler 91 aus. Diesen Fehler müsste man im Programm noch abfangen.
Gruss
Philipp
AW: Zwischenspeicher freigeben
22.06.2004 21:40:51
andre
Hallo Nepomuk,
passiert bei einem total leeren Blatt. Wenn Du was reinschreibst und anschließend löschst funktioniert es auch, aber nur bis zum nächsten Speichern ...
So geht auch das:

Sub ClearClipboard()
If Not Cells.Find("") Is Nothing Then Cells.Find("").Copy
Application.CutCopyMode = False
End Sub

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige