Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1560to1564
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Webabfrage

Webabfrage
07.06.2017 12:28:30
Cengiz
Hallo Liebe Leute,
Ich komme leider an einem punkt nicht weiter. Bin zwar kein VBA experte aber ich habe sehr recheriert aber komme leider nicht zum ergebniss.
Folgendes.
Ich benötige einen script.
Mein Lieferant stellt mir Daten über den Web service zu Verfügung.
Ich kann maximal -30 Tage von heutigem Datum aus zurück gehen.
Hier der Link:
http://api1.boydakexport.com/b2bservice/GetMaterialSAP/43885E5D60BE9CDDE053190A3F0AE&lud=20170601
dieser Datum muss automatisch geändert werden.
(aus Sicherheitgründen schlüssel nicht Korrekt)
Diese daten sollen in excel Tabelle 1 A1 immer aktualisert werden.
Bitte um hilfe.
Gruss
Cengiz

20
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Webabfrage
07.06.2017 13:18:53
Zwenn
Hallo Cengiz,
ohne wenigstens das Wissen um die Struktur der Daten, wird Dir niemand helfen können. Der Link liefert leider keine brauchbaren Informationen.
Viele Grüße,
Zwenn
AW: Webabfrage
07.06.2017 13:30:48
Cengiz
Hallo Zwen
Leider musste ich den Link aus datenschutzgründen ändern. Der Link funtioniert einwandfrei jedoch die Datum Eingabe hinter dem = muss auromatisiert werden. Meinsdt das ist absulut nicht möglicht wenn mann den Inhalt nicht kennt?
Oder jeman eine andere Idee
Gruss
Cengiz
AW: Webabfrage
07.06.2017 13:39:07
dirk
Hallo!
Anstelle des Links solltest Du einen Screenprint der Seite machen, die dieser Link bei Dir anzeigt. Dort sollte auch die URL zu sehen sein. Diese Bild biutte hier posten. Falls Du die URL-Struktur zeigen könntest, wäre es warscheinlich möglich etwas zu erstellen, was die URL mit dem benötigten Datum automatisch versorgt.
Ohne geht leider nicht, da Dein geposteter link nichts anzeigt, was hilfreich wäre.
Gruss
Dirk aus Dubai
Anzeige
AW: Webabfrage
07.06.2017 13:56:35
Zwenn
Achso,
Die ganze Aktuallisierung der Daten in Tabelle1 steht schon? Ich dachte das es vor allem darum ging.
Wenn Du nur das Datum des Links ändern willst, nehme ich an, Du willst mehrere Tage nacheinander abrufen. Dann musst Du Dein Makro mit einer Schleife erweitern, die den Code, der die Seite ausliest mit dem entsprechendem Datum im Link so oft aufruft, wie Du es benötigst.
Dazu teilst Du den Link in einen Teil auf, der immer gleich ist (vermutlich bleibt alles bis einschließlich des Gleichheitszeichens gleich, nehme ich) und sorgst dann in der Schleife am Anfang dafür, dass der Link mit dem richtigen Datum erweitert wird, bevor die Seite aufgerufen wird, um die Daten zu aktualisieren.
Schematisch geht das so. (Da fehlt der Code, um den Datumsstempel richtig zu generieren):

urlFix = "http://api1.boydakexport.com/b2bservice/GetMaterialSAP/43885E5D60BE9CDDE053190A3F0AE& _
lud="
For i = 0 to SoVieleTageSollenGeholtWerden
urlDyn = Datum + i
url = urlFix & urlDyn
'ab hier den Code zur Aktualisierung der Daten
next i
Geht das in die richtige Richtung? Dann wäre es hilfreich zu wissen, wie Dein Code bisher aussieht.
Viele Grüße,
Zwenn
Anzeige
AW: Webabfrage
07.06.2017 13:45:00
dirk
Hallo!
Hab ich doch glatt nicht gesehen :-)
Lösung könnte sein, das Du deinen Link entsprechend änderst:
in einem Macro folgenden Code verwenden
Dim MyURL as string, MyDate as string
MyDate = 20170106
MyURL = "Https://api1.boydakexport.com/b2bservice/GetMaterialSAP/43885E5D60BE9CDDE053190A3F0AE&lud="
MyURL=Myurl & MyDate
IE.navigate MyURL
...
Falls Du Dein macro zeigen könntest, könnte man das entsprechend einbauen.
Gruss
Dirk aus Dubai
AW: Webabfrage
07.06.2017 13:52:36
Cengiz
Hallo Dirk
Ich habe nich kein makro. Kannst du mur dabei helfen? Ausser muss das datum immer das aktuell - 30 Tage sein. Kann mann das ebenfals in den makro mit einbauen?
Gruss
Cengiz
Anzeige
AW: Webabfrage
07.06.2017 13:50:28
Sepp
Hallo Cengiz,
Key anpassen und probieren.
' **********************************************************************
' Modul: Modul1 Typ: Allgemeines Modul
' **********************************************************************

Option Explicit

Sub MatMas()
Dim strKey As String, strDate As String

strKey = "43885E5D60BE9CDDE053190A3F0AE"

strDate = InputBox("Datum eingeben (Format 0 JJJJMMTT)", "Abfrage", Format(Date, "yyyymmdd"))
If Len(strDate) Then
  
  With ActiveWorkbook
    .Queries("MatMas").Delete
    .Queries.Add Name:="MatMas", Formula:= _
      "let" & Chr(13) & "" & Chr(10) & " Quelle = Xml.Tables(Web.Contents(""http://api1.boydakexport.com/b2bservice/GetMaterialSAP/" & strKey & " &lud=" & strDate & """))," & Chr(13) & "" & Chr(10) & " Table0 = Quelle{0}[Table]," & Chr(13) & "" & Chr(10) & " #""Geänderter Typ"" = Table.TransformColumnTypes(Table0,{{""Attribute:ErrorCode"", Int64.Type}, {""Attribute:ErrorMessage"", type text}})" & Chr(13) & "" & Chr(10) & "in" & Chr(13) & "" & Chr(10) & " #""Geänderter Typ"""
    With .Sheets("Tabelle1")
      .Range("A1").CurrentRegion.Clear
      With .ListObjects.Add(SourceType:=0, Source:= _
          "OLEDB;Provider=Microsoft.Mashup.OleDb.1;Data Source=$Workbook$;Location=MatMas" _
          , Destination:=.Range("A1")).QueryTable
        .CommandType = xlCmdSql
        .CommandText = Array("SELECT * FROM [MatMas]")
        .RowNumbers = False
        .FillAdjacentFormulas = False
        .PreserveFormatting = True
        .RefreshOnFileOpen = False
        .BackgroundQuery = True
        .RefreshStyle = xlInsertDeleteCells
        .SavePassword = False
        .SaveData = True
        .AdjustColumnWidth = True
        .RefreshPeriod = 0
        .PreserveColumnInfo = True
        .ListObject.DisplayName = "MatMas"
        .Refresh BackgroundQuery:=False
      End With
    End With
  End With
End If
End Sub

Gruß Sepp

Anzeige
AW: Webabfrage
07.06.2017 14:44:52
Cengiz
Hallo Sepp,
irgendwas hat leider nicht geklappt. Liegt bestimmt an mir :)
hier die bilder dazu:
Userbild
Userbild
muss ich zuvor eine Webabfrage gestartet haben dund die Verbindung in MATBAS ändern?
Gruss
Cengiz
AW: Webabfrage
07.06.2017 14:48:16
Sepp
Hallo Cengiz,
proboer es so.
' **********************************************************************
' Modul: Modul1 Typ: Allgemeines Modul
' **********************************************************************

Option Explicit

Sub MatMas()
Dim strKey As String, strDate As String

strKey = "43885E5D60BE9CDDE053190A3F0AE"

strDate = InputBox("Datum eingeben (Format = JJJJMMTT)", "Abfrage", Format(Date - 30, "yyyymmdd"))
If Len(strDate) Then
  
  With ThisWorkbook
    If .Queries.Count > 0 Then .Queries(1).Delete
    .Queries.Add Name:="MatMas", Formula:= _
      "let" & Chr(13) & "" & Chr(10) & " Quelle = Xml.Tables(Web.Contents(""http://api1.boydakexport.com/b2bservice/GetMaterialSAP/" & strKey & " &lud=" & strDate & """))," & Chr(13) & "" & Chr(10) & " Table0 = Quelle{0}[Table]," & Chr(13) & "" & Chr(10) & " #""Geänderter Typ"" = Table.TransformColumnTypes(Table0,{{""Attribute:ErrorCode"", Int64.Type}, {""Attribute:ErrorMessage"", type text}})" & Chr(13) & "" & Chr(10) & "in" & Chr(13) & "" & Chr(10) & " #""Geänderter Typ"""
    With .Sheets("Tabelle1")
      .Range("A1").CurrentRegion.Clear
      With .ListObjects.Add(SourceType:=0, Source:= _
          "OLEDB;Provider=Microsoft.Mashup.OleDb.1;Data Source=$Workbook$;Location=MatMas" _
          , Destination:=.Range("A1")).QueryTable
        .CommandType = xlCmdSql
        .CommandText = Array("SELECT * FROM [MatMas]")
        .RowNumbers = False
        .FillAdjacentFormulas = False
        .PreserveFormatting = True
        .RefreshOnFileOpen = False
        .BackgroundQuery = True
        .RefreshStyle = xlInsertDeleteCells
        .SavePassword = False
        .SaveData = True
        .AdjustColumnWidth = True
        .RefreshPeriod = 0
        .PreserveColumnInfo = True
        .ListObject.DisplayName = "MatMas"
        .Refresh BackgroundQuery:=False
      End With
    End With
  End With
End If
End Sub

Gruß Sepp

Anzeige
AW: Webabfrage
07.06.2017 17:12:32
Cengiz
Hallo Sepp,
will leider auch so nicht klappen.
Userbild
Was nun? :((
AW: Webabfrage
07.06.2017 18:39:02
Dirk
Hallo!
Klick mal debuggen und zeige mal die gelbe Zeile.
Gruss
Dirk aus Dubai
AW: Webabfrage
07.06.2017 19:02:22
Sepp
Hallo Cengiz,
mit folgendem Code werden bei mir die Daten geladen.
Die XXX must du natürlich ändern!
' **********************************************************************
' Modul: Modul2 Typ: Allgemeines Modul
' **********************************************************************

Option Explicit

Sub MatMas()
Dim strKey As String, strDate As String
Dim lngI As Long

strKey = "43885E5D60BE9CDDE053190A3F0AEXXX"

strDate = InputBox("Datum eingeben (Format = JJJJMMTT)", "Abfrage", Format(Date - 30, "yyyymmdd"))

If Len(strDate) Then
  With ThisWorkbook
    If .Queries.Count > 0 Then
      For lngI = 1 To .Queries.Count
        .Queries(lngI).Delete
      Next
      For lngI = 1 To .Sheets("Tabelle1").ListObjects.Count
        .Sheets("Tabelle1").ListObjects(lngI).Delete
      Next
    End If
    .Queries.Add Name:="MatMas", Formula:= _
      "let" & Chr(13) & "" & Chr(10) & " Quelle = Xml.Tables(Web.Contents(""http://api1.boydakexport.com/b2bservice/GetMaterialSAP/" & strKey & "&lud=" & strDate & """))," & Chr(13) & "" & Chr(10) & " Table0 = Quelle{0}[Table]," & Chr(13) & "" & Chr(10) & " #""Geänderter Typ"" = Table.TransformColumnTypes(Table0,{{""Attribute:ProductCode"", type text}, {""Attribute:ModelName"", type text}, {""Attribute:ProductName_TR"", type text}, {""" & _
      "Attribute:ProductName_EN"", type text}, {""Attribute:NetWeight"", type number}, {""Attribute:GrossWeight"", type number}, {""Attribute:packet_count"", Int64.Type}, {""Attribute:Volume"", type number}, {""Attribute:Status_Date"", type date}, {""Attribute:Status"", type text}, {""Attribute:CartelaCode"", type text}, {""Attribute:Manufacture"", type number}, {""Attribu" & _
      "te:Brand"", Int64.Type}, {""Attribute:Unit"", type text}, {""Attribute:LastUpdateDate"", type date}, {""Attribute:UrunSinifKodu"", type text}, {""Attribute:KalemTipi"", type text}, {""Attribute:UrunHiyerarsisi"", type text}, {""Attribute:UrunHiyerarsisiTanimi"", type text}, {""Attribute:MalzemeSerisi"", type text}})" & Chr(13) & "" & Chr(10) & "in" & Chr(13) & "" & Chr(10) & " #""Geänderter Typ"""
    With .Sheets("Tabelle1").ListObjects.Add(SourceType:=0, Source:= _
        "OLEDB;Provider=Microsoft.Mashup.OleDb.1;Data Source=$Workbook$;Location=""MatMas""" _
        , Destination:=Range("$A$1")).QueryTable
      .CommandType = xlCmdSql
      .CommandText = Array("SELECT * FROM [MatMas]")
      .RowNumbers = False
      .FillAdjacentFormulas = False
      .PreserveFormatting = True
      .RefreshOnFileOpen = False
      .BackgroundQuery = True
      .RefreshStyle = xlInsertDeleteCells
      .SavePassword = False
      .SaveData = True
      .AdjustColumnWidth = True
      .RefreshPeriod = 0
      .PreserveColumnInfo = True
      .ListObject.DisplayName = "MatMas"
      .Refresh BackgroundQuery:=False
    End With
  End With
End If
End Sub

Gruß Sepp

Anzeige
AW: Webabfrage
08.06.2017 00:33:15
Cengiz
Hallo Sepp,
Habe es auf einem anderen Rechner ausprobieret und es hat geklappt.
Vielen Dank an alle.
Gruss
Cengiz
AW: Webabfrage
08.06.2017 17:03:23
Cengiz
Hallo Sepp,
bei den spalten überschriften steht immer "Attribute:" vor
Kann mann ändern also ohne Attribute:
Gruss
Cengiz
AW: Webabfrage
08.06.2017 17:54:11
Sepp
Hallo Cengiz,
schreib in Code VOR den letzte "End With" folgenden Zeile.
.Sheets("Tabelle1").Rows(1).Replace "Attribute:", ""

Gruß Sepp

Anzeige
AW: Webabfrage
10.06.2017 16:50:52
Cengiz
Hallo Sepp,
ich bin mit abfrage sehr zu frieden. Super arbeit, vielen dank noch mal.
Habe in in die gleiche Arbeitsmappe eine eine weiter ODBC verbindung eingebaut, welches auch funktioniert. Das Problem allerdings ist das nach dem Starten den 1. Macros von Sepp alle Verbindungen gelöscht werden.
1.Gibt es eine möglich diese nur für "MatMats" zu begrenzen so das alle anderen Verbindungen nicht gelöscht werden?
2.Da diese Web-Verbindung Daten aus dem SAP bezieht und deshalb das Datum eingegeben muss, tauchen beim Refreshen auf Grund von Datum n ein Fehler auf.
wenn mann den Datum 1-2 Tag zurücksetzt funktioniert es wieder.
Hat man die Möglichkeit das beim Fehler wieder die Datumseingabemaske kommt damit mann den den Datum ändern kann.?
Sonst müsste man ständig Debug Beenden Mokro neu starten...
Gruss
Cengiz Gürcan
Anzeige
AW: Webabfrage
10.06.2017 23:52:02
Sepp
Hallo Cengiz,
bei mir funktioniert die Abfrage nicht mehr, vielleicht stimmter Key nicht!
Vom Prinzip her aber so.
Sub MatMas()
Dim strKey As String, strDate As String
Dim lngI As Long

On Error GoTo NewDate
strKey = "43885E5D60BE9CDDE053190A3F0AEXXX"


With ThisWorkbook
  NewDate:
  strDate = InputBox("Datum eingeben (Format = JJJJMMTT)", "Abfrage", Format(Date - 30, "yyyymmdd"))
  If Len(strDate) Then
    If .Queries.Count > 0 Then
      For lngI = 1 To .Queries.Count
        If .Queries(lngI).Name Like "*MatMas*" Then .Queries(lngI).Delete
      Next
      For lngI = 1 To .Sheets("Tabelle1").ListObjects.Count
        If .Sheets("Tabelle1").ListObjects(lngI).DisplayName Like "*MatMas*" Then .Sheets("Tabelle1").ListObjects(lngI).Delete
      Next
    End If
    
    
    .Queries.Add Name:="MatMas", Formula:= _
      "let" & Chr(13) & "" & Chr(10) & " Quelle = Xml.Tables(Web.Contents(""http://api1.boydakexport.com/b2bservice/GetMaterialSAP/" & strKey & "&lud=" & strDate & """))," & Chr(13) & "" & Chr(10) & " Table0 = Quelle{0}[Table]," & Chr(13) & "" & Chr(10) & " #""Geänderter Typ"" = Table.TransformColumnTypes(Table0,{{""Attribute:ProductCode"", type text}, {""Attribute:ModelName"", type text}, {""Attribute:ProductName_TR"", type text}, {""" & _
      "Attribute:ProductName_EN"", type text}, {""Attribute:NetWeight"", type number}, {""Attribute:GrossWeight"", type number}, {""Attribute:packet_count"", Int64.Type}, {""Attribute:Volume"", type number}, {""Attribute:Status_Date"", type date}, {""Attribute:Status"", type text}, {""Attribute:CartelaCode"", type text}, {""Attribute:Manufacture"", type number}, {""Attribu" & _
      "te:Brand"", Int64.Type}, {""Attribute:Unit"", type text}, {""Attribute:LastUpdateDate"", type date}, {""Attribute:UrunSinifKodu"", type text}, {""Attribute:KalemTipi"", type text}, {""Attribute:UrunHiyerarsisi"", type text}, {""Attribute:UrunHiyerarsisiTanimi"", type text}, {""Attribute:MalzemeSerisi"", type text}})" & Chr(13) & "" & Chr(10) & "in" & Chr(13) & "" & Chr(10) & " #""Geänderter Typ"""
    With .Sheets("Tabelle1").ListObjects.Add(SourceType:=0, Source:= _
        "OLEDB;Provider=Microsoft.Mashup.OleDb.1;Data Source=$Workbook$;Location=""MatMas""" _
        , Destination:=Range("$A$1")).QueryTable
      .CommandType = xlCmdSql
      .CommandText = Array("SELECT * FROM [MatMas]")
      .ListObject.DisplayName = "MatMas"
    End With
    .Sheets("Tabelle1").Rows(1).Replace "Attribute:", ""
  End If
End With

End Sub

Gruß Sepp

Anzeige
AW: Webabfrage
13.06.2017 14:31:21
Cengiz
Hallo Sepp,
etwas stimmt mit der Abfrage nicht er übernimmt die Daten nicht in die Excel Tabelle.
kannst du bitte bitte noch mal drüberschauen.
Hat man auch die Möglichkeit in der abfrage filter anzuwenden. Zbs. in der sparlte Attribute:Status= nicht wie "Z1"
Gruss
Cengiz G.
AW: Webabfrage
07.06.2017 14:49:24
dirk
Hallo!
Was ist denn der Text der Fehlermeldung, welcher gezeigt wird?
Ich vermute mal, das noch kein Querry existiert.
Gruss
Dirk aus Dubai
AW: Webabfrage
10.06.2017 13:24:46
Cengiz
Hallo,
ich bin mit abfrage sehr zu frieden. Super arbeit, vielen dank noch mal.
Habe in in die gleiche Arbeitsmappe eine eine weiter ODBC verbindung eingebaut, welches auch funktioniert. Das Problem allerdings ist das nach dem Starten den 1. Macros von Sepp alle Verbindungen gelöscht werden.
1.Gibt es eine möglich diese nur für "MatMats" zu begrenzen so das alle anderen Verbindungen nicht gelöscht werden?
2.Da diese Web-Verbindung Daten aus dem SAP bezieht und deshalb das Datum eingegeben muss, tauchen beim Refreshen auf Grund von Datum n ein Fehler auf.
Userbild
wenn mann den Datum 1-2 Tag zurücksetzt funktioniert es wieder.
Hat man die Möglichkeit das beim Fehler wieder die Datumseingabemaske kommt damit mann den den Datum ändern kann.?
Sonst müsste man ständig Debug Beenden Mokro neu starten...
Gruss
Cengiz Gürcan

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige