Changement de focus d'application en VBA (Court, mais intense)

Résolu
cs_Keliah Messages postés 11 Date d'inscription lundi 24 mai 2004 Statut Membre Dernière intervention 6 avril 2005 - 27 mars 2005 à 13:06
cs_Warning Messages postés 516 Date d'inscription samedi 3 février 2001 Statut Membre Dernière intervention 24 octobre 2006 - 28 mars 2005 à 13:52
Voici mon problème,

Tout cela en VBA

Je veux pouvoir changer d'application, puis revenir sous word pour y coller les données récuperés.

J'ai récuperé une script VBS qui fait exactement ce que je veux mais je n'arrive pas à le faire fonctionner, je pense que vous savez peut être pourquoi.

Set obj_ie = CreateObject("InternetExplorer.Application")
obj_ie.Navigate("about:blank")
Set obj_wsh = WScript.CreateObject("WScript.Shell")

Cela fait je récupère les données en faisant de la facon suivante :

obj_wsh.SendKeys "{TAB}^c"
str_character = obj_ie.document.parentwindow.clipboardData.GetData("text")

Ca fonctionne parfaitement dans mon VBS, mais pas en VBA, le premier problème ce situe à ce niveau la :
Set obj_wsh = WScript.CreateObject("WScript.Shell")

Sinon autre question, seriez vous comment faire pour lancer un script VBS depuis Word, la commande shell() ne semble pas vouloir fonctionner avec l'extension .VBS

Merci d'avance aux bonnes ames qui pourront m'aider !!

4 réponses

cs_Warning Messages postés 516 Date d'inscription samedi 3 février 2001 Statut Membre Dernière intervention 24 octobre 2006 2
27 mars 2005 à 20:54
Essai de remplacer
Set obj_wsh = WScript.CreateObject("WScript.Shell")

Par
Set obj_wsh = CreateObject("WScript.Shell")

ou
Set obj_wsh = CreateObject("Shell")

Parce qu'en fait WScript n'est utilisé que par les scripts vbs ou js.


Warning
Admin Codes-Sources.com
http://www.decompiler-vb.net/
3
cs_Warning Messages postés 516 Date d'inscription samedi 3 février 2001 Statut Membre Dernière intervention 24 octobre 2006 2
27 mars 2005 à 20:57
Sinon tu peux encore remplacer directement:
Set obj_wsh = WScript.CreateObject("WScript.Shell")
obj_wsh.SendKeys "{TAB}^c"

par :
SendKeys "{TAB}^c"

Car sendkeys est deja implementé dans VB et VBA.


Warning
Admin Codes-Sources.com
http://www.decompiler-vb.net/
3
cs_Keliah Messages postés 11 Date d'inscription lundi 24 mai 2004 Statut Membre Dernière intervention 6 avril 2005
28 mars 2005 à 11:22
Merci pour ton aide, en effet cela fonctionne directemement.

J'ai maintenant un dernier problème au niveau de la récupération de donnée :

Je voudrais pouvoir stocker dans une variable ce que je récupère en faisant un SendKeys "{TAB}^c"

Malheuresement je n'arrive pas à utiliser le clipboard de Word...

J'ai trouvé cette ligne, mais cela ne fonctionne pas, visiblement il faut que je déclare un objet mais je ne sais pas comment m'y prendre...

str_character = Clipboarddata.GetDataObject.GetData(DataFormats.Text).ToString()

Merci d'avance pour ceux qui auront une idée :)
0
cs_Warning Messages postés 516 Date d'inscription samedi 3 février 2001 Statut Membre Dernière intervention 24 octobre 2006 2
28 mars 2005 à 13:52
tu met cette fonction quelque part après ta procedure:
Public Function GetOffClipboard() As Variant
Dim MyDataObj As New DataObject
MyDataObj.GetFromClipboard
GetOffClipboard = MyDataObj.GetText()
End Function

puis tu l'utilise dans ta procedure:
str_character
= CStr(GetOffClipboard)


Warning
Admin Codes-Sources.com
http://www.decompiler-vb.net/
0
Rejoignez-nous