DataObject : PutInClipboard funktioniert nicht
19.05.2015 16:16:47
NoNet
ich habe 2 PCs mit folgender Software Konfiguration :
PC1 : Windows 7 Enterprise (64 Bit) + Office 365 ProPlus bzw. 2013 (32 Bit)
PC2 : Windows 8.1 Profess. (64 Bit) + Office 365 Sm.Bus. bzw. 2013 (32 Bit)
Vorgaben :
In einer Excel-Mappe bzw. AddIn verwende ich einen Code zum Kopieren von Text in die Zwischenablage mittels DataObject (aus der FM20.DLL) - hier ein exemplarisches Code-Beispiel :
Sub TextInZwischenablage()
'VBA : Extras => Verweise => "Microsoft Forms 2.0 Object Library" ist gesetzt
'Pfad 32 Bit Windows : "C:\Windows\System32\fm20.dll"
'Pfad 64 Bit Windows : "C:\Windows\SysWOW64\fm20.dll"
Dim objClipboard As New DataObject
Dim strText As String
'auslesen der Zwischenablage :
objClipboard.GetFromClipboard
strText = objClipboard.GetText
MsgBox strText
'Neuen Text in Zwischenablage kopieren :
strText = "Hello World !"
objClipboard.SetText strText
objClipboard.PutInClipboard
'Text jetzt per Strg+V in Text-Editor / Word / Excel-Zelle einfügen
End Sub
Auf PC1 funktioniert der Code einwandfrei - sowohl Auslesen wie auch Kopieren in die Zwischenablage funktionieren wie gewünscht.Auf PC2 gibt es folgende Probleme bzw. Merkwürdigkeiten :
- Der o.g. Code kopiert nur 2 Sonderzeichen ("?") in die Zwischenablage - egal welcher Text per Code kopiert werden soll !
- Der Verweis auf die "Microsoft Forms 2.0 Object Library" zeigt auf die Datei "C:\Windows\SysWOW64\fm20.dll" (Typisch für Windows 32 Bit DLLs unter 64 Bit Windows), die Datei existiert dort jedoch nicht. Dennoch ist der Verweis gesetzt !
- Deaktiviert man den Verweis, befindet sich kein Eintrag "Microsoft Forms 2.0 Object Library" in der Liste (klaro, denn die Datei ist ja nicht vorhanden - übrigens auch nicht in "C:\Windows\System32\fm20.dll")
- Per VBA-Code kann der Verweis wieder gesetzt werden :
ActiveWorkbook.VBProject.References.AddFromGuid "{0D452EE1-E08F-101A-852E-02608C4D0BB4}" 'funktioniert
ActiveWorkbook.VBProject.References.AddFromFile "C:\Windows\SysWOW64\fm20.dll" ' funktioniert nicht - da Datei nicht vorhanden
Meine Fragen zu diesem Phänomen :
- Wer kann das Verhalten auf einer ähnlichen Software-Konfiguration reproduzieren ?
- Wie kann ich die "richtige" FM20.DLL im System des PC2 finden bzw. registrieren ?
- Gibt es eine Alternative zum DataObject bzgl. Kopieren von Text in die Zwischenablage per VBA ?
Das Verhalten hat vermutlich nichts mit dem bekannten ActiveX-Steuerelemente-Problem durch das Security-Update Ende 2014 zu tun, denn die ActiveX-Steuerlemente funktionieren auf beiden PCs sowhl auf dem Tabellenblatt wie auch in den UserForms einwandfrei !
Vielen Dank fürs Lesen, Mitdenken und für eure Unterstützung -
Salut, NoNet