Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

utilisation de winsock MSWINSCK.OCX

5 réponses
Avatar
Thierry
bonjour,

j'utilise MsOffice 1997 et 2003
je cherche à écrire une macro qui doit interroger un serveur HTTP pour
provoquer un traitement.
je souhaitais le faire via Winsock et l'OCX cité en Objet.

Mais....
je butte sur un message d'erreur me parlant de pb de licence. Tous les liens
que j'ai trouvé parle de Visual Studio
que je n'ai pas et ne souhaite pas installer même en version express.

Mon problème est il solluble ?
Une altenrative à winsock (autre que Set IE =
CreateObject("InternetExplorer.Application") ) ?

merci d'avance

thierry

5 réponses

Avatar
Jacques93
Bonjour Thierry,
Thierry a écrit :
bonjour,

j'utilise MsOffice 1997 et 2003
je cherche à écrire une macro qui doit interroger un serveur HTTP pour
provoquer un traitement.
je souhaitais le faire via Winsock et l'OCX cité en Objet.

Mais....
je butte sur un message d'erreur me parlant de pb de licence. Tous les liens
que j'ai trouvé parle de Visual Studio
que je n'ai pas et ne souhaite pas installer même en version express.

Mon problème est il solluble ?
Une altenrative à winsock (autre que Set IE > CreateObject("InternetExplorer.Application") ) ?




Sauf erreur de ma part, le contrôle MSWINSCK.OCX est lié à la version
Pro de Office (avec Access), ou à *Visual Studio 6.0* (qui date de
1997/1998), la version Express 2005 n'utilise plus les composants COM.

En fait ce qu'il te manque, je pense, c'est la licence développeur qui
permet d'ajouter le contrôle sur une feuille. Ensuite si tu as VS 6.0 tu
peux redistribuer librement le composant, mais si c'est lié à office, je
crains qu'il ne faille que Office Pro soit installé sur le poste client
(bien que cela marche quand même si ce n'est pas le cas, c'est une
question de droit...).

--
Cordialement,

Jacques.
Avatar
Thierry
>
En fait ce qu'il te manque, je pense, c'est la licence développeur qui
permet d'ajouter le contrôle sur une feuille. Ensuite si tu as VS 6.0 tu
peux redistribuer librement le composant, mais si c'est lié à office, je
crains qu'il ne faille que Office Pro soit installé sur le poste client
(bien que cela marche quand même si ce n'est pas le cas, c'est une
question de droit...).



Donc si
- j'installe Visual Basic Express 2005
- j''écris ma macro
- je l'installe (Dieu sait comment) à mes offices basic

ça va passer ?


--
Cordialement,


de même et merci d'avance

thierry
Avatar
François Picalausa
On 4月6日, 午後2:46, "Thierry" <thierry.sch...@ free.notreBeauPays> wrote:
bonjour,

j'utilise MsOffice 1997 et 2003
je cherche à écrire une macro qui doit interroger un serveur HT TP pour
provoquer un traitement.
je souhaitais le faire via Winsock et l'OCX cité en Objet.

Mais....
je butte sur un message d'erreur me parlant de pb de licence. Tous les li ens
que j'ai trouvé parle de Visual Studio
que je n'ai pas et ne souhaite pas installer même en version express.

Mon problème est il solluble ?
Une altenrative à winsock (autre que Set IE =
CreateObject("InternetExplorer.Application") ) ?



Hello,

Le contrôle winsock n'est effectivement fourni avec sa licence qu'avec
Visual Studio 6 (pour les éditions suivantes, je pense que c'est
remplacé par le .Net framework, et pour VS3,4,5 je ne sais pas).

Par conséquent, tu ne pourras pas l'employer pour réaliser cette
opération. Il y a néanmoins cinq autres solutions envisageables, à mon
sens:
- Employer une librairie winsock tierce. Il y a(vait?) notament une
excellent librairie (http://www.vbip.com/winsock-api/csocket-class/
csocket-class-01.asp) sur www.vbip.com/, mais le site semble down pour
le moment.
- Employer les API Winsock directement (cfr vbip et/ou
http://msdn2.microsoft.com/en-us/library/ms740673.aspx)
- Effectuer la même opération que les scripts sur toutes page web
AJAX, c'est à dire, employer XMLHttpRequest (http://en.wikipedia.org/
wiki/XMLHttpRequest) à l'aide de CreateObject("Msxml2.XMLHTTP")
- Utiliser les méthodes http de l'API URL Monikers d'Internet Explorer
telles que URLDownloadToFile, URLDownloadToCacheFile ou URLOpenStream;
de nombreux exemples d'utilisation de la première fonction en
particulier sont disponibles dans les archives de ce groupe et sur
internet en général.
http://msdn2.microsoft.com/en-us/library/ms774900.aspx
- Utiliser les méthodes de l'API Windows Internet (aussi connue sous
le nom de WinInet), les méthodes à utiliser étant alors prob ablement
(de mémoire, donc des inexactitudes peuvent apparaitre):
InternetConnect, HttpOpenRequest, HttpSendRequest, HttpQueryInfo et
les éventuels close correspondant.
http://msdn2.microsoft.com/en-us/library/aa383630.aspx
[- Sous VB6, il est aussi possible d'utiliser les méthodes de
connexion d'un UserControl. Cette méthode devrait pouvoir être po rtée
à VBA par l'intermédiaire de Visual Basic Control Creation Editio n.]

A noter que les deux premières méthodes ne permettent pas de faire
abstraction du protocol HTTP (il faut coder plus, donc maintenir plus
de code, ... ce qui n'est pas forcément souhaitable).
La troisième nécessite que la communication se fasse avec une
enveloppe XML.
Les deux dernières effectuent strictement la communication HTTP, la
dernière méthode étant plus explicite (notament sur les erre urs
pouvant survenir), mais légèrement moins simple d'utilisation.
[et celle entre crochets étant juste là à titre d'informatio n]

François
Avatar
Thierry
merci pour cette excellente réponse

j'étais parti sur

Private Sub bExtraire_Click()
Dim url As String

url = "http://intra.domaine.local/etats/extBre.php?"

If pays.Value <> "" Then
url = url & "&pays=" & pays.Value
Else
'res = MsgBox("Vous devez saisir un pays!", vbOKOnly,
"Attention...")
End ' <============== question ici
End If

Dim IE As Object
Set IE = CreateObject("InternetExplorer.Application")

IE.MenuBar = 0
IE.ToolBar = 0
IE.Visible = True
IE.Navigate url

While IE.Busy
Wend

'IE.Quit
UserForm1.Hide
End Sub

mais je vais me pencher sur ta solution 4, ou 3 j'ai pas encore décidé.

une autre question relative à mon code si tu permets.
Pourquoi le End provoque la fermeture de UserForm1 alors que UserForm1.Hide
n'est pas appelé ???

encore merci

thierry
Avatar
Jacques93
Thierry a écrit :
En fait ce qu'il te manque, je pense, c'est la licence développeur qui
permet d'ajouter le contrôle sur une feuille. Ensuite si tu as VS 6.0 tu
peux redistribuer librement le composant, mais si c'est lié à office, je
crains qu'il ne faille que Office Pro soit installé sur le poste client
(bien que cela marche quand même si ce n'est pas le cas, c'est une
question de droit...).



Donc si
- j'installe Visual Basic Express 2005
- j''écris ma macro
- je l'installe (Dieu sait comment) à mes offices basic

ça va passer ?



J'ai du mal m'exprimer, Visual Basic Express 2005, est une version
gratuite de Visual Studio 2005, qui n'utilise plus le modèle COM (Common
Object Model), mais le .Net Framework. Le successeur de MSWINSCK.OCX
dans VB 2005 Express, est le spacename System.Net.Sockets.Socket,
inutilisable en VBA.

VBA et VB6 utilisent le modèle COM (.OCX)

--
Cordialement,

Jacques.