WebServis çağırma

tirEdsOuL

Altın Üye
Katılım
3 Şubat 2009
Mesajlar
326
Excel Vers. ve Dili
Microsoft 365 Tr-En 64 Bit
Altın Üyelik Bitiş Tarihi
24-08-2026
Merhaba,

Kullanmakta olduğum e-fatura portalının webservis dökümanları ve kullanıcı bilgileri elimde mevcut. SOAP üzerinden sorgu yapabiliyorum, ama bunu excel üzerinden de yapabilir miyim? Örnek SOAP sorgusu aşağıdaki gibidir. Ben bunu nasıl macro ile sorgulayabilirim ? Yani Sorguladığım web adresini, sorgu parametresini, kullanıcı adı şifremi nasıl belirtip bir sorgu oluşturabilirim ve dönen sonucu da istediğim hücre aralığına nasıl yazdırabilirim?

XML:
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ein="http://isisbilisim.com.tr/services/einvoice" xmlns:arr="http://schemas.microsoft.com/2003/10/Serialization/Arrays">
   <soapenv:Header/>
   <soapenv:Body>
      <ein:GetActiveListByVknList>
         <!--Optional:-->
         <ein:vknList>
            <!--Zero or more repetitions:-->
            <arr:string>6160000009</arr:string>
         </ein:vknList>
      </ein:GetActiveListByVknList>
   </soapenv:Body>
</soapenv:Envelope>
 

Haluk

Özel Üye
Katılım
7 Temmuz 2004
Mesajlar
12,398
Excel Vers. ve Dili
64 Bit 2010 - İngilizce
+
Google Sheets
+
JScript
Altın Üyelik Bitiş Tarihi
E-Fatura değil ama aşağıdaki kısa videoda görüldüğü gibi başka bir web servisinden Excel ile SOAP üzerinden kullanıcı adı ve şifreyle veri alma işini yapmıştım.

Eğer isterseniz, ücretli olarak yardımcı olabilirim... İlgilenirseniz, özel mesajla bana ulaşabilirsiniz.




.
 
Son düzenleme:

tirEdsOuL

Altın Üye
Katılım
3 Şubat 2009
Mesajlar
326
Excel Vers. ve Dili
Microsoft 365 Tr-En 64 Bit
Altın Üyelik Bitiş Tarihi
24-08-2026
İlginiz için teşekkürler Haluk bey,

Yabancı forumlarda yaptığım araştırmalar sonucu birazcık ilerleyebildim. Tek sıkıntım gelen datanın tamamını alamamak, aşağıdaki kodda sorgu sonucundaki ilk verinin datalarını getiriyor, ben istiyorum ki bulduğu tüm sonuçları belirtilen hücrenin altından devam ettirmesi..

Kod:
Private Sub CommandButton1_Click()
 'Set and instantiate our working objects
    Dim Req As Object
    Dim sEnv As String
    Dim Resp As New MSXML2.DOMDocument60
    Set Req = CreateObject("MSXML2.XMLHTTP")
    Set Resp = CreateObject("MSXML2.DOMDocument.6.0")
    Req.Open "Post", "https://xxxxx.yyyyy.com.tr/MaestroCoreEkstre/services/xxxxService", False
    
 ' we create our SOAP envelope for submission to the Web Service
     sEnv = sEnv & "<soapenv:Envelope xmlns:soapenv=""http://schemas.xmlsoap.org/soap/envelope/"" xmlns:has=""http://xxxxekstre.yyyyyekstre.driver.yyyy.ccccc.com"">"
     sEnv = sEnv & "  <soapenv:Header/>"
     sEnv = sEnv & "  <soapenv:Body>"
     sEnv = sEnv & "  <has:getTransactionInfo>"
     sEnv = sEnv & "  <transactionInfo>"
     sEnv = sEnv & "  <password>XXXXXXXX</password>"
     sEnv = sEnv & "  <transactionInfoInputType>"
     sEnv = sEnv & "  <accountNo>11111111</accountNo>"
     sEnv = sEnv & "  <endDate>2018-12-26T18:00:00</endDate>"
     sEnv = sEnv & "  <startDate>2018-12-26T00:00:00</startDate>"
     sEnv = sEnv & "  </transactionInfoInputType>"
     sEnv = sEnv & "  <userName>YYYYYY</userName>"
     sEnv = sEnv & "   </transactionInfo>"
     sEnv = sEnv & "   </has:getTransactionInfo>"
     sEnv = sEnv & "  </soapenv:Body>"
     sEnv = sEnv & "</soapenv:Envelope>"
    Req.send (sEnv)

    Resp.LoadXML Req.responseText
    Range("B6").Value = Resp.SelectSingleNode("//transactionDescription").Text
    Range("C6").Value = Resp.SelectSingleNode("//valueDate").Text
    Range("D6").Value = Resp.SelectSingleNode("//transactionAmount").Text
    
  'clean up code
    Set Req = Nothing
    Set Resp = Nothing
    
    
End Sub
 

veyselemre

Özel Üye
Katılım
9 Mart 2005
Mesajlar
3,655
Excel Vers. ve Dili
Pro Plus 2021
Kod:
 Req.send (sEnv)
den sonra
Kod:
[a1]= Req.responseText
veya
Kod:
debug.print Req.responseText
ekleyip a1 deki veriyi veya vba daki immediate panelindeki metni text dosyasına yapıştırıp, buraya eklersiniz, bir ilgilenen çıkabilir.
 

tirEdsOuL

Altın Üye
Katılım
3 Şubat 2009
Mesajlar
326
Excel Vers. ve Dili
Microsoft 365 Tr-En 64 Bit
Altın Üyelik Bitiş Tarihi
24-08-2026
Başka bir yolu yok mudur? Çünkü "Req.responseText" ile dönen sonuçta özel bilgiler içermektedir.
 

tirEdsOuL

Altın Üye
Katılım
3 Şubat 2009
Mesajlar
326
Excel Vers. ve Dili
Microsoft 365 Tr-En 64 Bit
Altın Üyelik Bitiş Tarihi
24-08-2026
Dönen sonuç ektedir.
 

Ekli dosyalar

Haluk

Özel Üye
Katılım
7 Temmuz 2004
Mesajlar
12,398
Excel Vers. ve Dili
64 Bit 2010 - İngilizce
+
Google Sheets
+
JScript
Altın Üyelik Bitiş Tarihi
Var kendiniz uğraşıp çözebilirsiniz ya da bi zahmet oradaki verileri yapıyı bozmadan değiştirip ekleyebilirsiniz.
@tirEdsOuL,

3ncü bir çözüm olarak; yukarıda benim 2nci mesajımdan sonra bana gönderdiğiniz özel mesaja istinaden size yolladığım ancak, sizin cevap vermediğiniz özel mesajımı dikkate alabilirdiniz.

.
 
Son düzenleme:

veyselemre

Özel Üye
Katılım
9 Mart 2005
Mesajlar
3,655
Excel Vers. ve Dili
Pro Plus 2021
Kod:
    Set mylist = Resp.SelectNodes("//transactions")
    For i = 0 To mylist.Length - 1
        Cells(i + 7, "B") = mylist(i).SelectSingleNode("transactionDescription").Text
        Cells(i + 7, "C") = mylist(i).SelectSingleNode("valueDate").Text
        Cells(i + 7, "D") = mylist(i).SelectSingleNode("transactionAmount").Text
    Next i
 

tirEdsOuL

Altın Üye
Katılım
3 Şubat 2009
Mesajlar
326
Excel Vers. ve Dili
Microsoft 365 Tr-En 64 Bit
Altın Üyelik Bitiş Tarihi
24-08-2026
@tirEdsOuL,

3ncü bir çözüm olarak; yukarıda benim 2nci mesajımdan sonra bana gönderdiğiniz özel mesaja istinaden size yolladığım ancak, sizin cevap vermediğiniz özel mesajımı dikkate alabilirdiniz.

.
Sn. @Haluk bey, özel mesajınızı dikkate alarak aşağıdaki cevabı verdim diye düşünüyordum, mesajınızı cevapsız bıraktığımı düşündüyseniz kusuruma bakmayın lütfen.
İlginiz için teşekkürler Haluk bey,
Sn. @veyselemre ilginiz için çok teşekkür ederim, sorun çözülmüştür.
Kod:
    Set mylist = Resp.SelectNodes("//transactions")
    For i = 0 To mylist.Length - 1
        Cells(i + 7, "B") = mylist(i).SelectSingleNode("transactionDescription").Text
        Cells(i + 7, "C") = mylist(i).SelectSingleNode("valueDate").Text
        Cells(i + 7, "D") = mylist(i).SelectSingleNode("transactionAmount").Text
    Next i
 
Üst