9.1k Aufrufe
Gefragt in Datenbanken von dutchi1972 Mitglied (419 Punkte)
Hallo zusammen,

benötige mal wieder eure Hilfe.

Ich hab eine Datei, die wird per Macro mit Daten gefüllt.

Daten werden über die Zwischenablage kopiert und in die Zieldatei eingefügt.

Beim ersten mal (Zwischenablage noch LEER) läuft es super schnell.

Beim zwieten Mal läuft es super laaaangsaaaam weil die alten daten noch in der Zwiwschenablage liegen.

Geh ich zwischen den 1. und 2. kopieren hin und lösche alle Inhalte aus der Zwischenablage (manuell) läuft es super.

Hat einer ein Makro oder Idee wie ich mir den manuellen Schritt sparen kann und es automatisch läuft.

application.cutcopymode=False  .... funktioniert leider nicht, die Zwischenablage bleibt gefüllt !

vielen Dank im voraus an alle die mir helfen möchten.

Grüße Dutchi

7 Antworten

0 Punkte
Beantwortet von m-o Profi (22.7k Punkte)
Bearbeitet von m-o

Hallo Dutchi,

versuche es mal mit folgenden Befehlt:

ClearClipboard = True

oder so:

Sub Speicher_loeschen()
' Unter Extras - Verweise einen Verweis auf Microsoft Forms x.x Object Library setzen
' Oder eine Userform einfuegen und wieder loeschen - setzt den Verweis automatisch
Dim ClipAblage As Object
Set ClipAblage = New DataObject
ClipAblage.SetText ""
ClipAblage.PutInClipboard
End Sub

Gruß

M.O.

0 Punkte
Beantwortet von dutchi1972 Mitglied (419 Punkte)
Hallo M.O.

Hab einiges verstellt und Makros ausprobiert.

Leider bleibt die Zwischenablge voll und das Makro läuft langsam.

Grüße Dutchi
0 Punkte
Beantwortet von m-o Profi (22.7k Punkte)
Hallo Dutchi,

der zweite Code sollte auf alle Fälle funktionieren. Beachte aber hierbei, dass du einen Verweis auf die Micosoft Forms x.x Object Libary (aktuell: Microsoft Forms 2.0 Object Libary) setzen bzw. eine Userform einfügen musst, die du dann aber wieder löschen kannst.

Ansonsten poste mal deinen Code.

Gruß

M.O.
0 Punkte
Beantwortet von dutchi1972 Mitglied (419 Punkte)
Das ist nur ein teil in der die Daten kopiert und in die Zieldatei eingefügt werden. !

.....

' Dateiname für Zieldatei wird aus FH-RG-xml Datei gelesen-festgelegt
Zielname = ActiveSheet.Cells(3, 4)

'org. Daten werden kopiert
Rows("2:10000").Copy

objQuellblatt.Activate
Range("A2").Select
ActiveSheet.Paste

Application.CutCopyMode = False

.......

spater wird nochmal abgefragt ob eine Weitere Datei ausgelesen werden soll.

Reicht der Auszug vom Makro ß

grüße#
0 Punkte
Beantwortet von m-o Profi (22.7k Punkte)
Hallo Dutchi,

normalerweise sollte durch den Application.CutCopyMode = False die Zwischenablage geleert werden. Wenn ich mit deinem Codeteil Zeilen kopiere, dann kann ich nach dem Kopiervorgang die kopierten Daten nicht mehr einfügen. Ohne den Befehl ist das aber noch möglich.

Hast du mal geschaut, was nach der Ausführung des Makros überhaupt in der Zwischenablage ist? Werden in deinem restlichen Code noch irgendwelche Daten verarbeitet?

Gruß

M.O.
0 Punkte
Beantwortet von dutchi1972 Mitglied (419 Punkte)
Hallo M.O. ,

hab gestern abend weiter probiert,

wenn ich die Zwischenablage sichtbar lasse im Fenster seh ich was in der Zwischenablage kopiert wurde und was da noch drin ist.

auch mit den Application.CutCopyMode. bleibt es noch drin und sichtbar.

Werde wenn ich später nochmal Zeit hab etwas ausprobieren mit Screenupdate !

vielleicht liegt es daran.

grüße Dutchi
0 Punkte
Beantwortet von
Funktioniert bei mir wie folgt.

------------------------------Einträge im Makro-Modul 1 ------------------------------------------
Option Explicit

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

Public Sub ZWLeeren()
    Call OpenClipboard(0&)
    Call EmptyClipboard
    Call CloseClipboard
End Sub

-----------------------------------------------------------------------------------------------------------

Dann an der Stelle in deinem Code an der die Zwischenablage geleert werden soll

das Macro "ZWLeeren" aufrufen.

Gruß
...