Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1716to1720
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
Inhaltsverzeichnis

natives Dag 'n Drop per Win32 API in VBA

natives Dag 'n Drop per Win32 API in VBA
10.10.2019 21:28:26
Ingo
ich weiß um das Problem bei excel mit Drag n'Drop.
Das man diese Events nicht direkt abfangen kann, ich gelesen da irgen GPO-Fix womit man Drag zumindest besser relasieren kann.
Das ist aber nicht mein Ansatz, ich würde statt dessen versuchen dieses mit WIn32-APi Funktionen zu realieren, da es damit unviersell verwendbar wäre.
mir ist klar, dass die bei weitem nicht so easy ist wie andere Win32-Api funktione bekannt zu machen.
Da es keine eile hat und ich die nächsten wochennicht dazu kommen es in c++ oder c# primär zu implementieren und dann versuchen würde es nach VBA zu portieren.
Daher einfach die Frage ob hier schon jmd. damit Erfahrungen gemacht hat.
Und hier bitte keine Alternativvorschläge als MouseEvents o.ä. auf Formular-Controls.
Aber jegliche Erfahrungen die jmd. bezüglich Win32-Api mit Drag n Drop in VBA gemacht hat wären interessant.

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: natives Dag 'n Drop per Win32 API in VBA
11.10.2019 08:03:47
EtoPHG
Hallo Ingo,
1. Was für ein XL Problem mit Drag n'Drop?
2. Universell verwendbar, wie, wo, nur innerhalb von XL ?
3. keine Alternativvorschläge als MouseEvents, ok. Aber dann bitte eine kluge, ausführliche Antwort auf Frage 2.
Gruess Hansueli
AW: natives Dag 'n Drop per Win32 API in VBA
11.10.2019 16:57:27
Ingo
Hallo Hansueli,
zu
1. erkläre ich weiter unten
2. universell verwendbar bedeutet in dem Fall auf jedem rechner wo excel + vba möglich ist beliebige Objekte per drag n drop in eine zelle zu ziehen. Dort soll dann ein Handler existierender je nach implemenitierten Objekt-Handler oder Standard-Handler dann entscheiden wie die Drag n Drop Daten in Excel eingefügt werden sollen.
Warum so kompliziert denke jetzt vermutlich einige weil mich drag and drop in der standimplementierung genervt hat und ich das ich andern Programmiersprachen (bin mir nicht mehr sicher ob c++ oder c#) das schon mal progarmmiert hatte.
die Standardimplemntierung von excel hat z.b. total diffuses Verhalten, wenn man per Drag & Drop Links nach Excel ziehen will da excel vermutlich die DOM-Elemente der HTML Siet interpretiert. Da passiert z.B. folgendes:
1. nur Link
2. Link + Alternativtext
3. Link + Alternativtext + Elemente die als Leereilen interpretiert werden
4. Grafik (link wird aufgelöst und steht)nicht mehr zur Verfügung
die ersten 3 sind einfach zu handeln, da man auf das Worksheet OnChange event reagiert und die Daten entsprechend Verarbeitet werden. Auch ob die Daten als eine Zelle oder mehrere eingfügt werden ist sehr leicht aus dem Objekt und Unterobjekten raus zu parsen.
Bei 4.Fall wird in Excel direkt eine Shape-Objekt hinzugefügt unjd kein Event generiert was man VBA-technisch so handlen kann.
Da ich mich aber vor Jahren mit nativer Windows progarmierung sebschäftigt habe, weiß ich auch dass das kein Zauberwerk ist notfalls kann man sich in windows - Nachrichtenbehandlung reinhängen als eine Programiertechnischen Hock setzen bzw. Callback-Funktion implementierung wo man das entsprechende Ereignis fängt und dann handelt.
Aber geplant ist die drag n drop api funktionen sowie clipboard Funktionen zu nutzen.
Also dass ist nicht als kurzeitprojekt geplant, ggf. macht es auch Sinn ein Github Projekt zu generieren.
Das hängt aber von den Rückmeldungen hier ab.
Bevor die Frage gestellt wird, warum ich hier post, wenn ich in andern Foren poste bekomme ich vermutlich vorschläge für c++ oder als interpretersprache wird dann eher python empfohlen.
Ich will aber, wenn möglich dieses in VBA umsetzen und such hier personen die so etwas öhnliches schon mal gemacht haben oder evtl auch daran interesse habe.
3. also wenn es wieder Erwarten doch einfache Realiserungsmöglichkeiten gibt ohne weiter Eingriffe außer VBA-Code dann lasse ich mich gerne überraschen.
Evtl. will ich das Projekt dann aber trotzdem noch realisieren
Anzeige
AW: natives Dag 'n Drop per Win32 API in VBA
11.10.2019 19:41:39
Planlos
Hallo
K.A ob das mit nem Excelsheet (eine UF wohl eher) überhaupt geht, aber technisch gesehen müsstest du das IDropTarget-Interface implementieren (ocx, tlb oder das Iface als UDT in VBA oder ggf ASM), das Iface per Api-funktion RegisterDragDrop auf das Excel-hwnd setzen, und bei den entsprechenden Events das IDataObject auswerten.
AW: natives Dag 'n Drop per Win32 API in VBA
11.10.2019 23:33:17
Ingo
Hi planlos,
an so etwas in der Art hatte ich gedacht.
Und warum sollte das nicht gehen, ich hatte auch schon mal irgendwas mit einer Callbackfunktion in vba gemacht.
Wahrscheinlich muß man dann noch aplication.Enablevents und screen updating disable. Danach die drag n drop daten aufbereiten dann events wieder aktiviert und selber ein Worksheet Change event generiert.
Wird vermutlich ein Weihnachtsprojekt aber ko-kriterium befürchte ich noch nicht.
Und wenn es examplarisch geht sollte es dann später für unterschiedliche Objekte möglich sein.
Anzeige
AW: natives Dag 'n Drop per Win32 API in VBA
12.10.2019 01:05:34
Planlos
Hallo
ja funktioniert, war auch nur eine Vermutung, ein sheet kann Drop ereignisse erfassen, habe jetzt aber kein Stresstest durchgeführt. Spassiger wirds dann mit den ganzen verschiedenen Formaten im IDataobject (Strems, Storage, hGlobals etc.) weil jedes Programm hier sein eigenes Ding macht.
AW: natives Dag 'n Drop per Win32 API in VBA
13.10.2019 01:55:58
Ingo
Hi,
Danke für die Rückmeldung und den kurzen Test.
Ist wie gesagt erst am Ende des Jahres geplant, und würde dann auch nur text,spezieller Text(z.B.URL), grafik per Drop erkennen. Und wenn das so wie geplant funktioniert würde ich dann ein Github-projekt daraus generieren bei Bedarfkönnen sich dann andere Entwickler mit den Spezialfällen rumärgern.
Gruß
Ingo
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige