Live-Forum - Die aktuellen Beiträge
Datum
Titel
24.04.2024 19:29:30
24.04.2024 18:49:56
24.04.2024 17:19:09
Anzeige
Archiv - Navigation
1196to1200
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
Karl
Hallo Exceller!
Ich ersuche Euch um Eure Hilfe.
Ich benötige eine Webabfrage die ich vorläufig mit dem Macrorecorder aufgezeichnet habe und die folgendermaßen aussieht:
Sub webabfrage_3()
' webabfrage_3 Makro
'   LANDBOUWKREDIET     BEL     TeamID 2953
With ActiveSheet.QueryTables.Add(Connection:= _
"URL;http://62.50.72.82/ucinet/default.asp?page=UCITeamsdetail&discipline=ROA&continent=ALL& _
teamscategory=&teamstype=PCT&year=2011&teamnameid=2953&npage=&search=&l=ENG" _
, Destination:=Range("$A$1"))
.Name = _
"default.asp?page=UCITeamsdetail&discipline=ROA&continent=ALL&teamscategory=&teamstype= _
PCT&year=2011&teamnameid=2953&npage=&search=&l=ENG_1"
.FieldNames = True
.RowNumbers = False
.FillAdjacentFormulas = False
.PreserveFormatting = True
.RefreshOnFileOpen = False
.BackgroundQuery = True
.RefreshStyle = xlInsertDeleteCells
.SavePassword = False
.SaveData = True
.AdjustColumnWidth = True
.RefreshPeriod = 0
.WebSelectionType = xlSpecifiedTables
.WebFormatting = xlWebFormattingNone
.WebTables = "6,18"
.WebPreFormattedTextToColumns = True
.WebConsecutiveDelimitersAsOne = True
.WebSingleBlockTextImport = False
.WebDisableDateRecognition = False
.WebDisableRedirections = False
.Refresh BackgroundQuery:=False
Cells(65000, 1).End(xlUp).Offset(1, 0).Select
End With
'    ACQUA & SAPONE  ITA     TeamID 2933
With ActiveSheet.QueryTables.Add(Connection:= _
"URL;http://62.50.72.82/ucinet/default.asp?page=UCITeamsdetail&discipline=ROA&continent=ALL& _
teamscategory=&teamstype=PCT&year=2011&teamnameid=2933&npage=&search=&l=ENG" _
, Destination:=Range("$A$30"))
.Name = _
"default.asp?page=UCITeamsdetail&discipline=ROA&continent=ALL&teamscategory=&teamstype= _
PCT&year=2011&teamnameid=2933&npage=&search=&l=ENG_1"
.FieldNames = True
.RowNumbers = False
.FillAdjacentFormulas = False
.PreserveFormatting = True
.RefreshOnFileOpen = False
.BackgroundQuery = True
.RefreshStyle = xlInsertDeleteCells
.SavePassword = False
.SaveData = True
.AdjustColumnWidth = True
.RefreshPeriod = 0
.WebSelectionType = xlSpecifiedTables
.WebFormatting = xlWebFormattingNone
.WebTables = "6,18"
.WebPreFormattedTextToColumns = True
.WebConsecutiveDelimitersAsOne = True
.WebSingleBlockTextImport = False
.WebDisableDateRecognition = False
.WebDisableRedirections = False
.Refresh BackgroundQuery:=False
End With
End Sub
Ich habe hier eine Makroaufzeichung gemacht, kopiert und die nächste Tabelle 30 Zeilen weiter unten eingefügt.
Da ich aber keine Lösung gefunden habe, wie ich mit "Destination" die nach der ersten Abfrage selektierte Zelle auffinden kann, habe ich kapituliert,
da es sich hierbei um über 200 verschiedene TeamID's handelt und diese müßten nacheinander auf ein Tabellenblatt gereiht werden.
Wenn mir jemand einen Lösung anbieten könnte, wär mir sehr geholfen.
Danke
Karl

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
Anzeige
AW: Webabfrage
25.01.2011 23:18:22
Josef

Hallo Karl,
Vorarbeit:
Erstelle ein Tabellenblatt "TeamID" und trage in Spalte A ab A1 die TeamID's untereinander ein.
In B1 schreibst du ggf. das Jahr das abgefragt werden soll. Wenn du B1 leer lässt, wird das aktuelle Jahr verwendet.
Erstelle ein weiteres Arbeitsblatt "Abfrage" in diese werden die Abfrageergebnisse geschrieben.
Kopiere den Code in ein allgemeines Modul und teste mal mit zwei oder drei ID's.


Sub webabfrage()
  Dim vntID As Variant
  Dim lngNext As Long, lngIndex As Long
  Dim strQuery As String, strYear As String
  
  'In Tabelle 'TeamID' stehen in A1:Ax die TeamID's, in B1 steht das Jahr
  With Sheets("TeamID")
    vntID = .Range(.Cells(1, 1), .Cells(.Cells(.Rows.Count, 1).End(xlUp).Row, 1))
    strYear = .Range("B1").Text
    If Not IsNumeric(strYear) Or strYear = "" Then strYear = CStr(Year(Date))
  End With
  
  'In Tabelle "Abfrage" werden die Abfragen ab A1 eingetragen
  For lngIndex = 1 To UBound(vntID, 1)
    strQuery = "URL;http://62.50.72.82/ucinet/default.asp?page=UCITeamsdetail&" & _
      "discipline=ROA&continent=ALL&teamscategory=&teamstype=PCT&year=" & strYear & _
      "&teamnameid=" & vntID(lngIndex, 1) & "&npage=&search=&l=ENG"
    With Sheets("Abfrage")
      If .Cells(1, 1) = "" Then
        lngNext = 1
      Else
        lngNext = .Cells(.Rows.Count, 1).End(xlUp).Row + 1
      End If
      With .QueryTables.Add(Connection:=strQuery, _
          Destination:=.Cells(lngNext, 1))
        .Name = vntID(lngIndex, 1)
        .RowNumbers = False
        .RefreshStyle = xlInsertDeleteCells
        .SaveData = False
        .RefreshPeriod = 0
        .WebSelectionType = xlSpecifiedTables
        .WebTables = "6,18"
        .Refresh BackgroundQuery:=False
      End With
    End With
  Next
  
End Sub

Gruß Sepp

Anzeige
Korrektur!
26.01.2011 00:37:22
Josef

Hallo Karl,
habe noch eine Fehler entdeckt.
Nimm diesen Code

Sub webabfrage()
  Dim vntID As Variant, rng As Range
  Dim lngIndex As Long
  Dim strQuery As String, strYear As String
  
  'In Tabelle 'TeamID' stehen in A1:Ax die TeamID's, in B1 steht das Jahr
  With Sheets("TeamID")
    vntID = .Range(.Cells(1, 1), .Cells(.Cells(.Rows.Count, 1).End(xlUp).Row, 1))
    strYear = .Range("B1").Text
    If Not IsNumeric(strYear) Or strYear = "" Then strYear = CStr(Year(Date))
  End With
  
  'In Tabelle "Abfrage" werden die Abfragen ab A1 eingetragen
  For lngIndex = 1 To UBound(vntID, 1)
    strQuery = "URL;http://62.50.72.82/ucinet/default.asp?page=UCITeamsdetail&" & _
      "discipline=ROA&continent=ALL&teamscategory=&teamstype=PCT&year=" & strYear & _
      "&teamnameid=" & vntID(lngIndex, 1) & "&npage=&search=&l=ENG"
    With Sheets("Abfrage")
      If .Cells(1, 1) = "" Then
        Set rng = .Cells(1, 1)
      Else
        Set rng = .Cells(.Rows.Count, 1).End(xlUp).Offset(3, 0)
      End If
      
      With .QueryTables.Add(Connection:=strQuery, _
          Destination:=rng)
        .Name = vntID(lngIndex, 1)
        .RowNumbers = False
        .RefreshStyle = xlInsertDeleteCells
        .SaveData = False
        .RefreshPeriod = 0
        .WebSelectionType = xlSpecifiedTables
        .WebTables = "6,18"
        .Refresh BackgroundQuery:=False
      End With
    End With
  Next
  Set rng = Nothing
End Sub

Gruß Sepp

Anzeige
AW: Korrektur!
26.01.2011 08:39:24
Karl
Hallo Sepp!
Funktioniert auf Anhieb perfekt!
Vielen Dank
Karl
Und noch eine Anpassung!
26.01.2011 00:57:58
Josef

Hallo Karl,
habe den Code noch etwas optimiert.

Sub webabfrage()
  Dim vntID As Variant, rng As Range
  Dim lngIndex As Long, lngC As Long
  Dim strQuery As String, strYear As String
  
  If ThisWorkbook.Connections.Count > 0 Then
    For lngC = 1 To ThisWorkbook.Connections.Count
      ThisWorkbook.Connections(lngC).Delete
    Next
  End If
  'In Tabelle 'TeamID' stehen in A1:Ax die TeamID's, in B1 steht das Jahr
  With Sheets("TeamID")
    vntID = .Range(.Cells(1, 1), .Cells(.Cells(.Rows.Count, 1).End(xlUp).Row, 1))
    strYear = .Range("B1").Text
    If Not IsNumeric(strYear) Or strYear = "" Then strYear = CStr(Year(Date))
  End With
  
  'In Tabelle "Abfrage" werden die Abfragen ab A1 eingetragen
  With Sheets("Abfrage")
    On Error Resume Next
    If .QueryTables.Count > 0 Then
      For lngC = .QueryTables.Count To 1 Step -1
        .QueryTables(lngC).Delete
      Next
    End If
    On Error GoTo 0
    .UsedRange.Clear
    For lngIndex = 1 To UBound(vntID, 1)
      strQuery = "URL;http://62.50.72.82/ucinet/default.asp?page=UCITeamsdetail&" & _
        "discipline=ROA&continent=ALL&teamscategory=&teamstype=PCT&year=" & strYear & _
        "&teamnameid=" & vntID(lngIndex, 1) & "&npage=&search=&l=ENG"
      
      If .Cells(1, 1) = "" Then
        Set rng = .Cells(1, 1)
      Else
        Set rng = .Cells(.Rows.Count, 1).End(xlUp).Offset(3, 0)
      End If
      
      With .QueryTables.Add(Connection:=strQuery, _
          Destination:=rng)
        .Name = vntID(lngIndex, 1)
        .RowNumbers = False
        .RefreshStyle = xlInsertDeleteCells
        .SaveData = False
        .RefreshPeriod = 0
        .WebSelectionType = xlSpecifiedTables
        .WebTables = "6,18"
        .Refresh BackgroundQuery:=False
      End With
      
      On Error Resume Next
      ThisWorkbook.Connections(1).Delete
      On Error GoTo 0
    Next
  End With
  Set rng = Nothing
End Sub

Gruß Sepp

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige