Megosztás a következőn keresztül:


XML-webszolgáltatás használata Office VBA-makróból származó ASP.NET használatával a Wordben vagy az Excelben

Ö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

  1. 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.

  2. A Nézet menüBen kattintson a Kód elemre a Service1 kódablakának megjelenítéséhez.

  3. Illessze be a következő kódot a kódablak elejére:

    Imports System.Data.SqlClient
    
  4. 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

  1. 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.

  2. 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.

  3. Zárja be a böngészőablakot vagy az ablakokat, és térjen vissza a Visual Studióba.

  4. A webszolgáltatás futtatásához nyomja le ismét az F5 billentyűt.

  5. 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.

  6. 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:

  1. Indítsa el az Office telepítővarázslót.
  2. A varázslóban kattintson a Szolgáltatások hozzáadása vagy eltávolítása elemre.
  3. 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:

  1. Indítsa el a Word alkalmazást. Alapértelmezés szerint létrejön egy üres dokumentum.

  2. 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.

  3. Az **Eszközök **menüben kattintson a Hivatkozások elemre.

  4. 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.

  5. 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.

  6. A Beszúrás menüben kattintson a UserForm elemre egy üres felhasználói űrlap beszúrásához.

  7. Helyezzen el egy nagy listamezőt és egy parancsgombot az űrlapon.

  8. A Nézet menüben kattintson a Kód elemre a felhasználói űrlap kódablakának módosításához.

  9. 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
    
  10. Zárja be a VBA-szerkesztőt a dokumentumhoz való visszatéréshez.

  11. 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:

  1. Indítsa el az Office telepítővarázslót.
  2. A varázslóban kattintson a Szolgáltatások hozzáadása vagy eltávolítása elemre.
  3. 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:

  1. Indítsa el az Excelt. Alapértelmezés szerint létrejön egy üres munkafüzet.

  2. 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.

  3. Az **Eszközök **menüben kattintson a Hivatkozások elemre.

  4. 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.

  5. 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.

  6. A Beszúrás menüben kattintson a UserForm elemre egy üres felhasználói űrlap beszúrásához.

  7. Helyezzen el egy nagy listamezőt és egy parancsgombot az űrlapon.

  8. A Nézet menüben kattintson a Kód elemre a felhasználói űrlap kódablakának módosításához.

  9. 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
    
    
  10. Zárja be a VBA-szerkesztőt a munkafüzethez való visszatéréshez.

  11. 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