Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
Összefoglalás
Ez a cikk bemutatja, hogyan használhat XML-webszolgáltatást ASP.NET Visual Basic for Applications (VBA) makróból a Wordben vagy az Excelben.
További információ
Ahhoz, hogy sikeresen kommunikálhasson egy XML-webszolgáltatással egy Office-makróból származó ASP.NET használatával, a SOAP-eszközkészletet telepíteni kell arra az ügyfélszámítógépre, amelyen a makró fut. Ennek megfelelően a jelen cikkben ismertetett bemutatóhoz szükség van a SOAP eszközkészletre. A SOAP-eszközkészlet részletei, beleértve a letöltési utasításokat.
Az XML-webszolgáltatás létrehozása a ASP.NET használatával
Indítsa el a Microsoft Visual Studio .NET-et. A Fájl menüben kattintson az Új, majd a Projekt elemre. Az Új projekt párbeszédpanelen kattintson a Projekttípusok területen a Visual Basic Projects elemre, majd kattintson az XML webszolgáltatásra ASP.NET a Sablonok területen. Adja a projektnek az SQLQuery nevet, majd kattintson az OK gombra. Alapértelmezés szerint megjelenik a Service1 tervezőűrlapja.
A Nézet menüBen kattintson a Kód elemre a Service1 kódablakának megjelenítéséhez.
Illessze be a következő kódot a kódablak elejére:
Imports System.Data.SqlClient
Illessze be a következő kódot a Service1 osztályba (a vége osztály elé).
Megjegyzés A kód futtatása előtt módosítania kell a felhasználói azonosító <felhasználónevét> és jelszavát =<erős jelszót> a megfelelő értékekre. Győződjön meg arról, hogy a felhasználói azonosító rendelkezik a megfelelő engedélyekkel a művelet végrehajtásához az adatbázisban.
Private Const strConn = "User ID=<username>;Password=<strong password>;Initial Catalog=pubs;Data Source=localhost" <WebMethod()> Public Function GetIDs() As String() Dim i As Integer ' Create an open connection. Dim oConn As New SqlConnection(strConn) oConn.Open() Dim oDataset As New System.Data.DataSet() ' Execute the query. Dim oAdapter As New SqlDataAdapter("SELECT au_id FROM authors", oConn) ' Fill the dataset. oAdapter.Fill(oDataset) Dim s(oDataset.Tables(0).Rows.Count - 1) As String ' Create an array of IDs. For i = 0 To oDataset.Tables(0).Rows.Count - 1 s(i) = oDataset.Tables(0).Rows(i).ItemArray.GetValue(0) Next i ' Return the array. Return s End Function <WebMethod()> Public Function QueryDatabase(ByVal sID As String) As String() Dim i As Integer ' Create an open a connection. Dim oConn As New SqlConnection(strConn) oConn.Open() Dim oCommand As New SqlCommand("SELECT * FROM authors WHERE au_id='" + sID + "'", oConn) Dim oReader As SqlDataReader ' Execute the query and assign results to a SqlDataReader. oReader = oCommand.ExecuteReader() oReader.Read() Dim s(7) As String ' Build an array of results. For i = 0 To 7 s(i) = CType(oReader.GetValue(i), String) Next ' Return the array. Return s End Function
Megjegyzés
Módosítsa az strConn-állandót a kódban úgy, hogy az érvényes kapcsolati sztring legyen a SQL Server pubs-adatbázishoz.
A webszolgáltatás tesztelése
Nyomja le az F5 billentyűt a webszolgáltatási megoldás létrehozásához és futtatásához. Amikor a webszolgáltatást a .NET integrált fejlesztőkörnyezetből (IDE) futtatja, a Microsoft Internet Explorer betölti a Service1.asmx szolgáltatást a megoldásból.
Tesztelje a GetIDs metódust. Ehhez kattintson a GetIDs hivatkozásra, majd a Meghívás parancsra.
A metódus visszaadja azoknak a szerzői azonosítóknak a listáját, amelyeket a webszolgáltatás kinyert a pubs adatbázisból. Az eredmények XML formátumban jelennek meg a böngészőben.
Zárja be a böngészőablakot vagy az ablakokat, és térjen vissza a Visual Studióba.
A webszolgáltatás futtatásához nyomja le ismét az F5 billentyűt.
Tesztelje a QueryDatabase metódust. Ehhez kattintson a QueryDatabase hivatkozásra, írja be a 409-56-7008 értéket az sID paraméterhez, majd kattintson a Meghívás gombra.
A metódus a 409-56-7008 azonosítójú szerző adatait adja vissza. Az eredmények XML formátumban jelennek meg a böngészőben.
A webszolgáltatás befejezéséhez zárja be a böngészőablakot vagy az ablakokat.
A Web Service használata a Wordből
Ez a minta a Wordhöz mellékelt Elegáns fax sablont használja. Ez a minta nem működik a sablon nélkül. A sablon telepítéséhez kövesse az alábbi lépéseket:
- Indítsa el az Office telepítővarázslót.
- A varázslóban kattintson a Szolgáltatások hozzáadása vagy eltávolítása elemre.
- A Telepítendő szolgáltatások területen bontsa ki a Windows Microsoft Excelt. Kattintson a Számolótáblasablonok, majd a Futtatás a saját számítógépről parancsra, majd a Frissítés gombra.
A Word webszolgáltatásának használatához kövesse az alábbi lépéseket:
Indítsa el a Word alkalmazást. Alapértelmezés szerint létrejön egy üres dokumentum.
Az Eszközök menüben kattintson a Makró, majd a Visual Basic Editor elemre. A Beszúrás menüben kattintson a Modul elemre egy üres kódmodul beszúrásához.
Az **Eszközök **menüben kattintson a Hivatkozások elemre.
A Hivatkozások párbeszédpanelen válassza a Microsoft SOAP típustár lehetőséget, majd kattintson az OK gombra.
Megjegyzés Ha a Microsoft SOAP típustár nem érhető el a Hivatkozások párbeszédpanelen, kattintson a Tallózás gombra. A Hivatkozás hozzáadása párbeszédpanelen keresse meg a C:\Program Files\Common Files\MSSoap\Binaries könyvtárat, és válassza a mssoap1.dll. Kattintson a Megnyitás, majd az OK gombra.
Illessze be a következő kódot a kódmodulba:
Public Const sServer = "localhost" Sub GenerateForm(sID As String) Dim oSOAPClient As Object On Error GoTo errhand Set oSOAPClient = CreateObject("MSSOAP.SoapClient") oSOAPClient.mssoapinit "http://" + sServer + "/SQLQuery/Service1.asmx?wsdl", "Service1", "Service1Soap" Dim arrTemp() As String arrTemp = oSOAPClient.QueryDatabase(sID) Dim oDoc As Word.Document Set oDoc = Application.Documents.Add("Elegant Fax.dot") oDoc.Bookmarks("Company").Range.Text = arrTemp(2) + " " + arrTemp(1) + vbCrLf + _ arrTemp(4) + vbCrLf + arrTemp(5) + ", " + arrTemp(6) + " " + arrTemp(7) + vbCrLf + _ arrTemp(3) Exit Sub errhand: MsgBox "Error #" + Err.Number + ": " + Err.Description End Sub Sub ShowForm() ' Show the dialog box to the user. UserForm1.Show End Sub
MEGJEGYZÉS Módosítsa az sServer állandót úgy, hogy arra a kiszolgálóra mutasson, amely az imént létrehozott webszolgáltatást üzemelteti.
A Beszúrás menüben kattintson a UserForm elemre egy üres felhasználói űrlap beszúrásához.
Helyezzen el egy nagy listamezőt és egy parancsgombot az űrlapon.
A Nézet menüben kattintson a Kód elemre a felhasználói űrlap kódablakának módosításához.
Cserélje le a kódablak tartalmát a következőre:
Private Sub CommandButton1_Click() ' Generate a FAX based on the ID. GenerateForm ListBox1.List(ListBox1.ListIndex) UserForm1.Hide End Sub Private Sub UserForm_Initialize() Dim oSOAPClient As Object ' Create a SOAP client. Set oSOAPClient = CreateObject("MSSOAP.SoapClient") ' Initialize the SOAP client to the Web service. oSOAPClient.mssoapinit "http://" + Module1.sServer + "/SQLQuery/Service1.asmx?wsdl", "Service1", "Service1Soap" Dim arrTemp() As String ' Get an array of IDs. arrTemp = oSOAPClient.GetIDs() ' Fill the list box with IDs. For i = 0 To UBound(arrTemp) ListBox1.AddItem arrTemp(i) Next End Sub
Zárja be a VBA-szerkesztőt a dokumentumhoz való visszatéréshez.
Kattintson az Eszközök menü Makró parancsára, majd a Makrók parancsra. A Makrók párbeszédpanelen futtassa az Űrlap megjelenítése makrót az azonosítók listájának megjelenítéséhez. Válasszon ki egy azonosítót a listából, majd a parancsgombra kattintva hozzon létre egy faxdokumentumot a felhasználó adataival.
Az Excel webszolgáltatásának használata
Ez a minta az Excelhez mellékelt Értékesítési számla sablont használja. Ez a minta nem működik a sablon nélkül. A sablon telepítéséhez kövesse az alábbi lépéseket:
- Indítsa el az Office telepítővarázslót.
- A varázslóban kattintson a Szolgáltatások hozzáadása vagy eltávolítása elemre.
- A Telepítendő szolgáltatások területen bontsa ki a Windows Microsoft Excelt, bontsa ki a Táblázatsablonok elemet, majd kattintson az Értékesítési számla elemre. Kattintson a Futtatás a saját számítógépről parancsra, majd a Frissítés gombra.
Az Excel webszolgáltatásának használatához kövesse az alábbi lépéseket:
Indítsa el az Excelt. Alapértelmezés szerint létrejön egy üres munkafüzet.
Az Eszközök menüben kattintson a Makró, majd a Visual Basic Editor elemre. A Beszúrás menüben kattintson a Modul elemre egy üres kódmodul beszúrásához.
Az **Eszközök **menüben kattintson a Hivatkozások elemre.
A Hivatkozások párbeszédpanelen válassza a Microsoft SOAP típustár lehetőséget, majd kattintson az OK gombra.
Megjegyzés Ha a Microsoft SOAP típustár nem érhető el a Hivatkozások párbeszédpanelen, kattintson a Tallózás gombra. A Hivatkozás hozzáadásapárbeszédpanelen keresse meg a C:\Program Files\Common Files\MSSoap\Binaries könyvtárat, és válassza mssoap1.dll. Kattintson a Megnyitás, majd az OK gombra.
Illessze be a következő kódot a kódmodulba:
Const sTemplatePath = "C:\Microsoft Office\Templates\1033\Sales Invoice.xlt" Public Const sServer = "localhost" Sub GenerateForm(sID As String) Dim oSOAPClient As Object On Error GoTo errhand Set oSOAPClient = CreateObject("MSSOAP.SoapClient") oSOAPClient.mssoapinit "http://" + sServer + "/SQLQuery/Service1.asmx?wsdl", "Service1", "Service1Soap" Dim arrTemp() As String arrTemp = oSOAPClient.QueryDatabase(sID) Dim oBook As Excel.Workbook Set oBook = Application.Workbooks.Add(sTemplatePath) With oBook.ActiveSheet If If CInt(Application.Version) = 10 Or CInt(Application.Version) = 11 Then .Range("D13").Value = arrTemp(2) + " " + arrTemp(1) .Range("D14").Value = arrTemp(4) .Range("D15").Value = arrTemp(5) .Range("F15").Value = arrTemp(6) .Range("H15").Value = arrTemp(7) .Range("D16").Value = arrTemp(3) .Range("M13").Value = CStr(Date) .Range("C19").Value = "45.8" .Range("D19").Value = "Consulting hours" .Range("L19").Value = "75" ElseIf CInt(Application.Version) = 9 Then .Range("data5").Value = arrTemp(2) + " " + arrTemp(1) .Range("data6").Value = arrTemp(4) .Range("data7").Value = arrTemp(5) .Range("data8").Value = arrTemp(6) .Range("data9").Value = arrTemp(7) .Range("data10").Value = arrTemp(3) .Range("data11").Value = "45.8" .Range("data12").Value = "Consulting hours" .Range("data13").Value = "75" End If End With Exit Sub errhand: MsgBox "Error #" + Err.Number + ": " + Err.Description End Sub Sub ShowForm() ' Show the dialog box to the user. UserForm1.Show End Sub
Megjegyzés Módosítsa az sServer állandót úgy, hogy arra a kiszolgálóra mutasson, amely az imént létrehozott webszolgáltatást üzemelteti. Módosítsa az sTemplatePath-állandót úgy, hogy a számlafájl megfelelő elérési útjára mutasson. Office 2000 esetén a fájl alapértelmezett helye a C:\Microsoft Office\Templates\1033\Invoice.xlt. Office XP esetén az alapértelmezett hely a C:\Microsoft Office\Templates\1033\Sales Invoice.xlt.
A Beszúrás menüben kattintson a UserForm elemre egy üres felhasználói űrlap beszúrásához.
Helyezzen el egy nagy listamezőt és egy parancsgombot az űrlapon.
A Nézet menüben kattintson a Kód elemre a felhasználói űrlap kódablakának módosításához.
Cserélje le a kódablak tartalmát a következőre:
Private Sub CommandButton1_Click() ' Generate a FAX based on the ID. GenerateForm ListBox1.List(ListBox1.ListIndex) UserForm1.Hide End Sub Private Sub UserForm_Initialize() Dim oSOAPClient As Object ' Create a SOAP client. Set oSOAPClient = CreateObject("MSSOAP.SoapClient") ' Initialize the SOAP client to the Web service. oSOAPClient.mssoapinit "http://" + Module1.sServer + "/SQLQuery/Service1.asmx?wsdl", "Service1", "Service1Soap" Dim arrTemp() As String ' Get an array of IDs. arrTemp = oSOAPClient.GetIDs() ' Fill the list box with IDs. For i = 0 To UBound(arrTemp) ListBox1.AddItem arrTemp(i) Next End Sub
Zárja be a VBA-szerkesztőt a munkafüzethez való visszatéréshez.
Kattintson az Eszközök menü Makró parancsára, majd a Makrók parancsra. A Makrók párbeszédpanelen futtassa az Űrlap megjelenítése makrót az azonosítók listájának megjelenítéséhez. Válasszon ki egy azonosítót a listából, és a parancsgombra kattintva hozzon létre egy számlát az adott felhasználó adataival.
Hivatkozások
A webszolgáltatásokkal kapcsolatos további információkért tekintse meg a Microsoft tudásbázisában található cikket:
301273 Egyszerű webszolgáltatás írása Visual Basic .NET használatával