Live-Forum - Die aktuellen Beiträge
Datum
Titel
24.04.2024 19:29:30
24.04.2024 18:49:56
Anzeige
Archiv - Navigation
1004to1008
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
28.08.2008 17:49:14
mehmet
Hallo Forum,
mit dem Macrorecorder konnte ich die Webabfrage aufzeichnen.
Nun soll aber die Abfrageadresse mit der Tabelle1 aufgelistet werden.
So sieht die Aufzeichnung aus:

Sub Web_Einlesen()
Sheets("Tabelle1").Select: Range("E2").Select
Range("E3:G99").Select: Selection.ClearContents: Range("E2").Select
With ActiveSheet.QueryTables.Add(Connection:="URL; _
http://www.dieadresse.de/haupt.htm?tp= _
sa&flag=
_
ZELLINHALT-C4%20 _
ZELLINHALT-C5%20 _
ZELLINHALT-C6%20 _
ZELLINHALT-C7" _
, Destination:=Range("E2"))
.Name = _
.FieldNames = True
.RowNumbers = False
.FillAdjacentFormulas = True
.PreserveFormatting = True
.RefreshOnFileOpen = False
.BackgroundQuery = True
.RefreshStyle = xlInsertDeleteCells
.SavePassword = False
.SaveData = True
.AdjustColumnWidth = False
.RefreshPeriod = 0
.WebSelectionType = xlSpecifiedTables
.WebFormatting = xlWebFormattingNone
.WebTables = "5"
.WebPreFormattedTextToColumns = True
.WebConsecutiveDelimitersAsOne = True
.WebSingleBlockTextImport = False
.WebDisableDateRecognition = True
.WebDisableRedirections = True
.Refresh BackgroundQuery:=False
End With
End Sub


D.H. die Abfrage sollte so verlaufen:
gehe zur Adresse: http://www.dieadresse.de/haupt.htm?tp=sa&flag=
fange mit Zellinhalt C4 an und füge noch die Zeichen %20 hinzu
gehe weiter zu Zellinhalt C5 und füge diese in die Adresse mit ein und zusätzlich noch %20
gehe weiter zu Zellinhalt C6...
gehe weiter zu Zellinhalt bis C leere Zelle hat.
Da die Liste in der C Spalte lange ist, habe ich dirt ein Filter gesetzt.
In die Adresse soll natürlich nur das erscheinen, was auch gefiltert wurde.
Ist das machbar?
Dank und Gruss
mehmet

14
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Webabfrage
29.08.2008 08:03:00
Rolf
Hallo mehmed!
Also ich kann Dir leider nicht helfen jedoch
würde ich gerne erfahren mit welchem
Macrorekorder Du solch ein guten Code
geschrieben hast!
Grüße
Rolf
AW: Webabfrage
29.08.2008 08:19:00
mehmet
Hallo Rolf,
erstmal Dank dir für deine Interesse.
Im Excel Menu unter Extras/Macro/Aufzeichnen...
Schade, dass Du mir nicht helfen kannst.
Anscheinend habe ich mich nicht Verständlich ausdrücken können zwecks Problemlösung.
Gruss
mehmet
AW: Webabfrage
29.08.2008 11:31:23
Tino
Hallo mehmet,
teste mal ob es funktioniert.
Modul Modul1
Option Explicit 
 
Sub Web_Einlesen() 
Dim WebLink As String 
Dim objZelle As Range 
 
'String zusammensetzen 
For Each objZelle In Range("C4:C" & Rows.Count).SpecialCells(xlCellTypeVisible) 
 If objZelle = "" Then Exit For 
 WebLink = WebLink & objZelle & "%20" 
Next objZelle 
If Right$(WebLink, 3) = "%20" Then WebLink = Left$(WebLink, Len(WebLink) - 3) 
 
WebLink = "http://www.dieadresse.de/haupt.htm?tp=sa&flag=" & WebLink 
 
      Sheets("Tabelle1").Select 
      Range("E2").Select 
      Range("E3:G99").ClearContents 
      With ActiveSheet.QueryTables.Add(Connection:="URL;" & WebLink, Destination:=Range("E2")) 
          .Name = "" 
          .FieldNames = True 
          .RowNumbers = False 
          .FillAdjacentFormulas = True 
          .PreserveFormatting = True 
          .RefreshOnFileOpen = False 
          .BackgroundQuery = True 
          .RefreshStyle = xlInsertDeleteCells 
          .SavePassword = False 
          .SaveData = True 
          .AdjustColumnWidth = False 
          .RefreshPeriod = 0 
          .WebSelectionType = xlSpecifiedTables 
          .WebFormatting = xlWebFormattingNone 
          .WebTables = "5" 
          .WebPreFormattedTextToColumns = True 
          .WebConsecutiveDelimitersAsOne = True 
          .WebSingleBlockTextImport = False 
          .WebDisableDateRecognition = True 
          .WebDisableRedirections = True 
          .Refresh BackgroundQuery:=False 
      End With 
 
 
End Sub 
  


Gruß Tino

Anzeige
AW: Webabfrage
29.08.2008 17:33:00
mehmet
Tino, du bist Super, und natürlich funktioniert es 8-)
Dank dir.
Einen wunsch hätte ich noch bitte.
Da es sich um sehr viele C Zellen handelt, habe ich einen Filter gesetzt, um es nach wunsch zu limitieren.
Wenn ich nun den Filter manuell einsetze, werden erst die gefilterten C Zellen eingelesen und der Rest erscheint in Spalte H. Der Filter wird von selbst aufgehoben.
Kann man es so einrichten, dass der Filter bleibt, und nur die gefilterten C Zellen gezeigt werden.
Nochmal danke
Gruss
mehmet
AW: Webabfrage
29.08.2008 17:48:00
mehmet
Tino, sorry ich nochmal
wenn ich die Splate C Breite auf 0 Pixel bringe, bricht der Makro an dieser Stelle ab:
For Each objZelle In Range("C4:C" & Rows.Count).SpecialCells(xlCellTypeVisible)
Hat es was mit ...(xlCellTypeVisible) zu tuhen?
Gruss
mehmet
Anzeige
AW: Webabfrage
29.08.2008 17:54:00
Tino
Hallo,
ja
Gruß Tino
AW: Webabfrage
29.08.2008 17:53:03
Tino
Hallo,
da musst du etwas genauer werden, komme gerate nicht so richtig mit.
Am besten wäre eine Beispieldatei.
Gruß Tino
AW: Webabfrage
29.08.2008 18:38:34
mehmet
Hallo Tino,
2 Problemchen noch:
1.
also wenn ich die Spalte C Breite auf Null bringe, bricht das Makro ab, an dieser Stelle:
For Each objZelle In Range("C4:C" & Rows.Count).SpecialCells(xlCellTypeVisible)
Ich möchte die Spalte C Breite minimieren (Null), damit man diese nicht sieht.
2.
in Spalte C4 bis C.. stehen die Zellinhalte, die das Makro als Webadresse downloadet.
Da eine Internetadresse limitiert ist (ich glaube max 256 Zeichen), muss ich ein Filter einsetzen und nur die gefilterten Zellinhalte von C als Internetadresse zu empfangen.
Wenn ich selber den Filter setze von A3 bis C3, passiert folgendes:
Die gefilterten Daten werden downgeloaded, was auch in Ordnung ist.
Anschliessend wird der Filter von selbst entfernt, ohne das ich es möchte.
Die restlichen Daten, was nicht gefiltert wurde, werden in Spalte H, unterhalb der eingelesenen Daten mit empfangen und eingetragen.
Gern würde ich dir die Datei zuschicken, allerding ist die Seite Passwort geschützt.
Dank dir im Voaraus und für dein Verständnis
Gruss
mehmet
Anzeige
AW: Webabfrage
29.08.2008 19:25:00
Tino
Hallo,
zu erstens, man kann alternativ auf Spalte A die Sichtbaren Zellen abfragen und offset
auf die Spalte C verweisen.
Zu zweitens bin ich mir aber nicht sicher, könnte mit der Webabfrage zusammenhängen.
Im unteren Code habe ich mal die Abfrage auf eine neue Tabelle ausgelagert, von dort werden die Daten in die Tabelle1 kopiert und zum Schluss wird die neue Tabelle wieder gelöscht.
Müsste so funktionieren, habe es aber nicht getestet!!!
Modul Modul1
Option Explicit 
  
Sub Web_Einlesen() 
Dim WebLink As String 
Dim objZelle As Range 
Dim TempTab As Worksheet 
On Error GoTo Fehler: 
Speed False 
'String zusammensetzen 
For Each objZelle In Sheets("Tabelle1").Range("A4:A" & Rows.Count).SpecialCells(xlCellTypeVisible) 
 If objZelle.Offset(0, 2) = "" Then Exit For 
 WebLink = WebLink & objZelle.Offset(0, 2) & "%20" 
Next objZelle 
If Right$(WebLink, 3) = "%20" Then WebLink = Left$(WebLink, Len(WebLink) - 3) 
  
WebLink = "http://www.dieadresse.de/haupt.htm?tp=sa&flag=" & WebLink 
  
 
Sheets("Tabelle1").Range("E3:G99").ClearContents 
Set TempTab = Sheets.Add 
 
      With TempTab.QueryTables.Add(Connection:="URL;" & WebLink, Destination:=TempTab.Range("A1")) 
          .Name = "" 
          .FieldNames = True 
          .RowNumbers = False 
          .FillAdjacentFormulas = True 
          .PreserveFormatting = True 
          .RefreshOnFileOpen = False 
          .BackgroundQuery = True 
          .RefreshStyle = xlInsertDeleteCells 
          .SavePassword = False 
          .SaveData = True 
          .AdjustColumnWidth = False 
          .RefreshPeriod = 0 
          .WebSelectionType = xlSpecifiedTables 
          .WebFormatting = xlWebFormattingNone 
          .WebTables = "5" 
          .WebPreFormattedTextToColumns = True 
          .WebConsecutiveDelimitersAsOne = True 
          .WebSingleBlockTextImport = False 
          .WebDisableDateRecognition = True 
          .WebDisableRedirections = True 
          .Refresh BackgroundQuery:=False 
      End With 
TempTab.UsedRange.Copy Sheets("Tabelle1").Range("E2").PasteSpecial 
 
Fehler: 
Speed True 
If Err.Number <> 0 Then MsgBox "Fehler aufgetreten!", vbCritical, Err.Description 
    On Error Resume Next 
     TempTab.Delete 
    On Error GoTo 0 
Sheets("Tabelle1").Select: Range("E2").Select 
End Sub 
 
Sub Speed(Zustand As Boolean) 
With Application 
 .ScreenUpdating = Zustand 
 .DisplayAlerts = Zustand 
End With 
End Sub 


Gruß Tino

Anzeige
AW: Webabfrage
29.08.2008 20:09:00
mehmet
Hallo Tino,
Dank dir. Ich bekomme eine Fehlermeldung.
Ich vermute, dass es daran liegt, das die tempTabelle kein Name bekommen hat.
Ich hab es versucht, so zu benennen:
'Set TempTab = Sheets.Add
Worksheets.Add.Name = "tempTabelle" 'Temp-Sheet einfügen
Set TempTab = "tempTabelle"
geht nicht 8-(
Wie kann man die TempTab benennen als tempTabelle.
Gruss
mehmet
AW: Webabfrage
29.08.2008 20:28:00
Tino
Hallo,
also ich habe Office 2003, da brauch man kein Namen zu vergeben.
Durch die Zeile
Set TempTab = Sheets.Add
kann diese durch TempTab also Objekt angesprochen werden und braucht keinen Namen.
Was für einen Fehler bekommst du?
Gruß Tino
Anzeige
AW: Webabfrage
29.08.2008 20:38:00
mehmet
Hallo Timo,
Alert Message:
Titelleiste: Die PasteSpecial-Eigenschaft des Range-Objektes kann nicht zugeordnet werden.
Bild: roter Punkt mit einem weissen X
Button: nur OK
Gruss
mehmet
AW: Webabfrage
29.08.2008 20:56:00
Tino
Hallo,
ok., ersetze die Zeile
TempTab.UsedRange.Copy Sheets("Tabelle1").Range("E2").PasteSpecial
durch
TempTab.UsedRange.Copy Sheets("Tabelle1").Range("E2")
Sollte dies nicht funktionieren, mach es mit zwei Zeilen so
TempTab.UsedRange.Copy
Sheets("Tabelle1").Range("E2").PasteSpecial

Gruß Tino
Hat geklappt, dank dir. Gruss
30.08.2008 01:38:00
mehmet
Klappt, dank dir.

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige