Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1744to1748
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

Web Query sehr langsam

Web Query sehr langsam
20.03.2020 11:38:20
Lutz
Hallo Excel-Profis,
ich habe einen Code hier aus dem Forum gefunden und hole mir Aktienkurse über Ariva. Das ist aber sehr langsam. Hat jemand eine Idee wie man das schneller machen kann?
For i = 1 To N
loeschenAlleQueries
Sheets("Tabelle1").Select
WKNR1 = Range("Tabelle2!e8")
'WKNR2 = Range("Tabelle2!f8")
Range("a3:aa500").ClearContents
Range("A3").Select
With ActiveSheet.QueryTables.Add(Connection:= _
"URL;http://www.ariva.de/" & WKNR1, Destination:=Range("$A$3"))
.Name = "kurs"
.FieldNames = True
.RowNumbers = False
.FillAdjacentFormulas = False
.PreserveFormatting = True
.RefreshOnFileOpen = False
.BackgroundQuery = True
.RefreshStyle = xlOverwriteCells
.SavePassword = False
.SaveData = True
.AdjustColumnWidth = True
.RefreshPeriod = 0
.WebSelectionType = xlEntirePage
.WebFormatting = xlWebFormattingNone
.WebPreFormattedTextToColumns = True
.WebConsecutiveDelimitersAsOne = True
.WebSingleBlockTextImport = False
.WebDisableDateRecognition = False
.WebDisableRedirections = False
.Refresh BackgroundQuery:=False
End With
ActiveWorkbook.Connections("Verbindung").Delete
Application.Volatile
Application.Calculate
Range("A1:J1").Copy
Sheets("Tabelle2").Select
ActiveCell.PasteSpecial xlPasteValues
Application.CutCopyMode = False
Range("e9:g61").Copy Range("e8")
ActiveCell.Offset(1, 0).Range("a1").Select
Next i
.....
Sub loeschenAlleQueries()
Dim qry As QueryTable, ws As Worksheet
Set ws = ThisWorkbook.Worksheets("Tabelle1")
For Each qry In ws.QueryTables
Debug.Print qry.Name
qry.Delete
Next qry
Set qry = Nothing
Set ws = Nothing
End Sub
Ich hatte erst nicht auf
.RefreshStyle = xlOverwriteCells
gesetzt und hatte Probleme wegen der Bereiche.
Screenupdating etc. nehme ich am Anfang raus und setze es am Ende wieder rein - deswegen die Zeilen
Application.Volatile
Application.Calculate
Hat jemand eine Idee wie man das performanter erledigen kann oder sind Web-Abfragen immer so langsam?
Vielen Dank und viele Grüße
Lutz

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

Betreff
Datum
Anwender
Anzeige
AW: Web Query sehr langsam
20.03.2020 12:38:36
volti
Hallo Lutz,
mal 'ne Frage:
Die Query holt ja die komplette Seite ab (Habe mal die DTAG-Seite ausprobiert).
Brauchst Du das alles, oder nur ein/zwei Werte daraus?
viele Grüße
Karl-Heinz
AW: Web Query sehr langsam
20.03.2020 12:58:19
Lutz
Hallo Karl-Heinz,
vielen Dank für Deine Antwort.
Ich denke mal schon die Seite auch wenn ich nur 10-12 Einträge verarbeite. Ich wüsste auch nicht, wie man einzelne Werte einer Seite abruft?
Ich hatte gestern mal recherchiert und das hier gefunden:
Es reicht eine einzige Querytable pro Sheet, die Du immer wieder aus
verschiedenen URLs nachladen kannst.
Die Eigenschaften brauchst Du auch nur einmal festlegen, wenn sie für
alle Abrufe dieselben sein sollen.
Dann sollte folgender Code (sinngemäß) ausreichen:
Dim SheetQueryTable As QueryTable
Set Shee tQueryTable = Worksheets(asheet).Range("A1").QueryTable
With SheetQueryTable
'hier die Eigenschaften festlegen
'und nun die diversen Abrufe
For i=1 to 100
SheetQueryTable.Connection = uu(i) 'die URL-Angaben aus einer Liste
SheetQueryTable.Refresh BackgroundQuery:=False
'hier die Verarbeitung
Next i
Ich weiß aber nicht, wie ich meinen Code anpassen muss um das dahingegend zu ändern?
Viele Grüße Lutz
Anzeige
AW: Web Query sehr langsam
20.03.2020 13:43:58
volti
Hallo Lutz,
wie Du die Query da jetzt schneller bekommst, weiß ich leider nicht.
Ich lasse die Frage also wieder offen, vielleicht kann Dir da ja einer einen Tipp geben.
Viel Erfolg noch....
Informationshalber trotzdem mal ein unvollendetes Beispiel, wie man einzelne Tabellen abholen könnte.
Zunächst noch ohne Einzelwerte aus Einzelfeldern (z.B. Überschriften/Beschreibungen) und ohne Schleifenabarbeitung für mehrere Aktien...

Option Explicit
Sub LadeIETabelleAktien(rZiel As Range, sUrl As String)
'Tabelle aus einer WEB-Anwendung kopieren (KHV Okt 2018)
 Dim oIE As Object, sArr() As String, oTab As Object
 Dim iZeile As Long, iSpalte As Long, iAnzZl As Long, iAnzSp As Long
 Dim iOffset As Integer
 Set oIE = CreateObject("InternetExplorer.application")
 oIE.Navigate2 sUrl                                         'Zur Url surfen
 oIE.Visible = False
 While Not oIE.ReadyState = 4: DoEvents: Wend  'Warten bis Seite geladen ist
'DAX holen
 Set oTab = oIE.document.all.tags("table")(1): GoSub UP  'x.Tabelle ansprechen
 Set oTab = oIE.document.all.tags("table")(2): GoSub UP  'x.Tabelle ansprechen
 Set oTab = oIE.document.all.tags("table")(3): GoSub UP  'x.Tabelle ansprechen
 Set oTab = oIE.document.all.tags("table")(4): GoSub UP  'x.Tabelle ansprechen
 oIE.Quit
 Set oIE = Nothing
 Exit Sub
 
UP:
 Erase sArr
 With oTab
  iAnzZl = .Rows.Length
  iAnzSp = .Rows(0).Cells.Length
  ReDim sArr(iAnzZl, iAnzSp)
  For iZeile = 0 To iAnzZl - 1
   For iSpalte = 0 To iAnzSp - 1
     sArr(iZeile, iSpalte) = .Rows(iZeile).Cells(iSpalte).innerText
   Next iSpalte
  Next iZeile
 End With
 If iAnzZl > 0 Then
  rZiel.Offset(iOffset, 0).Resize(iAnzZl, iAnzSp).value = sArr()
  iOffset = iOffset + iAnzZl + 2
 End If
 Return
 
End Sub
Sub HoleTabellendatenAusWEB()
 With ThisWorkbook.Sheets("Tabelle2")
  .Select
  .Cells.Clear
'Telekom-Aktie
  LadeIETabelleAktien .Range("$A$1"), "http://www.ariva.de/555750"
 End With
End Sub

viele Grüße
Karl-Heinz

Anzeige
AW: Web Query sehr langsam
20.03.2020 15:28:48
Lutz
Hallo Karl-Heinz,
vielen Dank.
Leider bricht das Makro ohnehin immer ab und ich habe im Netz etwas gefunden mit dem man die Daten per Funktion abrufen kann.
Dafür habe ich mal einen neuen Thread erstellt...
Vielen Dank noch einmal und viele Grüße
Lutz

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige