2009-06-05 7 views
2

J'ai été invité à créer une macro qui envoie les données Excel à un site Web. Aucune base de données ne devrait être impliquée. J'ai essayé d'utiliser HTTP Post après avoir lu des exemples sur ce site. J'ai fait une page Web ASP.NET qui fonctionne sur localserver. Lors du débogage de la macro, le contrôle atteint l'événement de la page Web Page_load, mais je ne parviens pas à y voir les données.Envoi de données d'Excel à un site Web

Quelqu'un peut-il m'aider à trouver mon erreur?

Excel Code:

Sub SendData() 
' 
' SendData Macro 
' 
Dim sdata As String 
sdata = "Abhh" 
' 
Set objHTTP = CreateObject("MSXML2.ServerXMLHTTP") 
URL = "localhost:2782/Default.aspx?"; + sdata 
objHTTP.Open "POST", URL, False objHTTP.setRequestHeader "User-Agent", "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0)" 
objHTTP.send ("") 
End Sub 

code C#

using System; 
using System.Data; 
using System.Configuration; 
using System.Collections; 
using System.Web; 
using System.Web.Security; 
using System.Web.UI; 
using System.Web.UI.WebControls; 
using System.Web.UI.WebControls.WebParts; 
using System.Web.UI.HtmlControls; 

namespace Fetch 
{ 
     public partial class _Default : System.Web.UI.Page 
     { 
      protected void Page_Load(object sender, EventArgs e) 
      { 
       Label1.Text = Request.Url.Query; 
       // I dont know where the data is in the Request object.(If it is there at all..) 
      } 
     } 
} 

Merci

Abi

+0

peut vous envoyer le code que vous avez? –

+0

Vous devriez regarder la page Init() au lieu de la page Load() –

+0

partie Excel du code: - Sous SendData() ' ' SendData Macro ' Dim sdata As String sdata = "Abhh" ' Définissez objHTTP = CreateObject ("MSXML2.ServerXMLHTTP") URL = "http: // localhost: 2782/Default.aspx?" + sdata objHTTP.Open "POST", URL, Faux objHTTP.setRequestHeader "Utilisateur-Agent", "Mozilla/4.0 (compatible, MSIE 6.0, Windows NT 5.0)" objHTTP.send ("") End Sub –

Répondre

1

Est-ce que le 'site' doivent être une page Web norme? Ne pouvez-vous pas l'envoyer à un «site Web» exécutant un WebService ASP.NET à la place?

Voir here & here sur la façon d'écrire un webservice, puis lisez here & here sur la façon d'appeler le webservice via VBA.

0

Bien que je ne puisse pas vous donner un exemple exact dans Excel, je suis à peu près certain qu'Excel a une fonction ou deux pour rechercher des valeurs à partir de n'importe quel site Web en utilisant une requête GET. La différence entre une requête GET et une requête POST est que dans la première, toutes les données transmises font partie de la chaîne d'URL. En supposant que le support HTTP dans Excel est basique, je suppose que vous aurez plus de chance d'utiliser une requête GET, en construisant soigneusement votre URL avec les données avec une simple manipulation de chaîne. Bien que je ne connais pas la syntaxe exacte, imaginez une formule dans une cellule comme = lookuphtml ("http://some.url.com/send?var1=" & B2 & "& var2 =" & B3), où les cellules B2 et B3 contiendraient vos valeurs de variables (les valeurs que vous voulez passer au script). Cela suppose que l'extrémité réceptrice est capable de recevoir des données via des requêtes GET (pas seulement des requêtes POST). La plupart des bibliothèques côté serveur acceptent les données transmises via les requêtes GET et POST, bien que YMMV.

+1

Merci de prendre le temps, mais je ne peux pas envoyer les données en l'ajoutant à l'URL (qui fonctionne) car les données peuvent être énormes et sensibles. –

0

Je ne suis pas un gars .NET mais il ressemble beaucoup à URI.Query afficherait seulement les données GET car les données POST ne font pas partie de l'URI.

Vous pouvez regarder en utilisant la syntaxe de forme standard de name1=value1&name2=value2&... dans votre chaîne sData puis sur l'utilisation du serveur Request.Form selon les exemples here

Questions connexes