Daten aus dem web in Excel einfügen?

hallo…

ich weiß es wie es funktioniert aber die Sache klappt nicht so wie gedacht. ich besitze Excel 2007!
ich brauche alle Adressen von den Stadtwerken in deutschland ink. tel und drumm und drann.
Es gibt ja die Möglichkeit bei Excel über DATEN----> Externe Daten abrufen -----> aus dem Web. damit hole ich mir aber nur die PLZ ORT und Name des Stadtwerkes in Excel rein, weil die Adressen durch ein link erst aufrufbar sind, in dem ich auf den namen klicke.

So jetzt zu meiner eigentlichen FRAGE!

Ist es möglich auch die Adressen in Excel reinzuholen?
Ohne jedes Stadtwerk einzeln aufzurufen. wenn es über Excel geht wäre es perfekt, falls es ein externes Programm benötigt dann wäre es auch kein Problem.

Danke schon mal im Vorraus für eure Antworten

MFG

weil die
Adressen durch ein link erst aufrufbar sind, in dem ich auf
den namen klicke.

Hallo HaD,

auf welcher Webseite klickst du denn?

Gruß
Reinhard

Hallo…

http://www.stadtwerke-in-deutschland.de/

MFG

Webseite mit Unterseiten auslesen

http://www.stadtwerke-in-deutschland.de/

Hallo HaD,

mit der Seite hast du Glück, die scheint leicht auslesbar.
Mal ein Anfang, nimm eine neue leere Mappe.
Dann Alt+F8 und laße das makro „Start“ ausführen.
VORHER einmalig Alt+F11, Einfügen—Modul, nachstehenden Code
reinkopieren, Vb-Editor schließen.
Ich weiß da fehlen noch Stadtwerke und auch die Adressdaten sind noch nicht sichtbar, das kommt noch.

Zeige mal hier welche Daten du genau willst. Quasi zeige die Titelzeile (Zeile 1) einer entsprechenden Tabelle.
So in etwa:
Stadtwerk Plz ort Straße Hausnr Vorwahl Telefon Fax Email

Gruß
Reinhard

Option Explicit

Sub Start()
Call Loesch
Call A\_Z
Call Zeige
End Sub

Sub Zeige()

End Sub

Sub A\_Z()
Dim N As Integer
Application.ScreenUpdating = False
For N = 1 To 26
 Worksheets.Add after:=Worksheets(Worksheets.Count)
 ActiveSheet.Name = Chr(64 + N)
 With Worksheets(Chr(64 + N)).QueryTables.Add(Connection:= \_
 "URL;http://www.stadtwerke-in-deutschland.de/index.php?buchstabe=" & Chr(64 + N), \_
 Destination:=Range("A1"))
 .Name = "index.php?buchstabe=" & Chr(64 + N)
 .FieldNames = True
 .RowNumbers = False
 .FillAdjacentFormulas = False
 .PreserveFormatting = True
 .RefreshOnFileOpen = False
 .BackgroundQuery = True
 .RefreshStyle = xlInsertDeleteCells
 .SavePassword = False
 .SaveData = True
 .AdjustColumnWidth = True
 .RefreshPeriod = 0
 .WebSelectionType = xlEntirePage
 .WebFormatting = xlWebFormattingNone
 .WebPreFormattedTextToColumns = True
 .WebConsecutiveDelimitersAsOne = True
 .WebSingleBlockTextImport = False
 .WebDisableDateRecognition = False
 .Refresh BackgroundQuery:=False
 End With
Next N
Application.ScreenUpdating = True
End Sub

Sub Loesch()
Dim N As Integer
On Error Resume Next
Application.ScreenUpdating = False
Application.DisplayAlerts = False
For N = 1 To 26
 Worksheets(Chr(64 + N)).Delete
Next N
Application.DisplayAlerts = True
On Error GoTo 0
Application.ScreenUpdating = True
End Sub

Hallo Reinhard,

meine Kopfzeile (1.Zeile) sollte so aussehen.

Stadtwerk / Straße / Hausnummer / PLZ / Ort / Telefon / Fax / E-Mail.

MFG

HerpinADerp

Stadtwerk / Straße / Hausnummer / PLZ / Ort / Telefon / Fax /
E-Mail.

Hallo HerpinADerp,

Alt+F11, suche links das Modul1, Doppelklick darauf dann mußt du die makros von mir sehen, lösche alles und ersetze es durch nachfolgende Codes.

Was mir eben erst auffiel, auf der Seite reden sie von 1092 Stadtwerken, meine Tabelle in Blatt Tabelle1 listet aber nur 977.
Egal, neuer tag neues Glück :smile:

Gruß
Reinhard

Option Explicit

Sub Start()
Call Loesch
Call A\_Z
Call Zeige
End Sub

Sub Zeige()
Dim N As Integer, wks As Worksheet, Zei1 As Long, ZeiN As Long
Set wks = Worksheets("Tabelle1")
wks.UsedRange.ClearContents
wks.Range("A1:H1").Value = \_
 Split("Stadtwerk Straße Hausnummer PLZ Ort Telefon Fax E-Mail")
For N = 1 To Worksheets.Count
 With Worksheets(N)
 Zei1 = wks.Cells(Rows.Count, 1).End(xlUp).Row + 1
 If .Name Like "Stadt\*" Then
 ZeiN = .Cells(Rows.Count, 3).End(xlUp).Row
 If ZeiN \> 16 Then
 .Cells(17, 3).Resize(ZeiN - 16, 1).Copy wks.Cells(Zei1, 1)
 .Cells(17, 1).Resize(ZeiN - 16, 1).Copy wks.Cells(Zei1, 4)
 .Cells(17, 2).Resize(ZeiN - 16, 1).Copy wks.Cells(Zei1, 5)
 End If
 End If
 End With
Next N
wks.Activate
wks.Rows("2:2").Select
ActiveWindow.FreezePanes = True
wks.Columns("A:H").AutoFit
End Sub

Sub A\_Z()
Dim N As Integer, Anz As Integer, NN As Integer
Application.ScreenUpdating = False
For N = 1 To 26
 Worksheets.Add after:=Worksheets(Worksheets.Count)
 ActiveSheet.Name = "Stadt" & Chr(64 + N) & "1"
 With Worksheets("Stadt" & Chr(64 + N) & "1").QueryTables.Add(Connection:= \_
 "URL;http://www.stadtwerke-in-deutschland.de/index.php?buchstabe=" & Chr(64 + N), \_
 Destination:=Range("A1"))
 .Name = "index.php?buchstabe=" & Chr(64 + N)
 .FieldNames = True
 .RowNumbers = False
 .FillAdjacentFormulas = False
 .PreserveFormatting = True
 .RefreshOnFileOpen = False
 .BackgroundQuery = True
 .RefreshStyle = xlInsertDeleteCells
 .SavePassword = False
 .SaveData = True
 .AdjustColumnWidth = True
 .RefreshPeriod = 0
 .WebSelectionType = xlEntirePage
 .WebFormatting = xlWebFormattingNone
 .WebPreFormattedTextToColumns = True
 .WebConsecutiveDelimitersAsOne = True
 .WebSingleBlockTextImport = False
 .WebDisableDateRecognition = False
 .Refresh BackgroundQuery:=False
 End With
 Anz = Trim(Left(Worksheets("Stadt" & Chr(64 + N) & "1").Range("A9").Value, 2))
 For NN = 1 To Int((Anz - 1) / 20)
 Worksheets.Add after:=Worksheets(Worksheets.Count)
 ActiveSheet.Name = "Stadt" & Chr(64 + N) & 1 + NN
 With Worksheets("Stadt" & Chr(64 + N) & 1 + NN).QueryTables.Add(Connection:= \_
 "URL;http://www.stadtwerke-in-deutschland.de/index.php?buchstabe=" & Chr(64 + N) & "&bs=" & NN + 1, \_
 Destination:=Range("A1"))
 'http://www.stadtwerke-in-deutschland.de/index.php?buchstabe=A&bs=2
 .Name = "index.php?buchstabe=" & Chr(64 + N) & NN
 .FieldNames = True
 .RowNumbers = False
 .FillAdjacentFormulas = False
 .PreserveFormatting = True
 .RefreshOnFileOpen = False
 .BackgroundQuery = True
 .RefreshStyle = xlInsertDeleteCells
 .SavePassword = False
 .SaveData = True
 .AdjustColumnWidth = True
 .RefreshPeriod = 0
 .WebSelectionType = xlEntirePage
 .WebFormatting = xlWebFormattingNone
 .WebPreFormattedTextToColumns = True
 .WebConsecutiveDelimitersAsOne = True
 .WebSingleBlockTextImport = False
 .WebDisableDateRecognition = False
 .Refresh BackgroundQuery:=False
 End With
 Next NN
Next N
Application.ScreenUpdating = True
End Sub

Sub Loesch()
Dim wks As Worksheet
On Error Resume Next
Application.ScreenUpdating = False
Application.DisplayAlerts = False
For Each wks In ThisWorkbook.Worksheets
 If wks.Name Like "Stadt\*" Then wks.Delete
Next wks
Application.DisplayAlerts = True
On Error GoTo 0
Application.ScreenUpdating = True
End Sub

Hallo Reinhard,

danke erstmal für deine Bemühungen. Achso ob 972 oder 1092 ist jetzt nicht das Problem. wichtig ist das er viele übernimmt.

Ich hab nur das Problem das er nicht die Straßennamen, die Hausnummer, Telefon und Email übernimmt…

Ich erläutere jetzt mal mein Vorgehen, vllt. liegt ja auch da der Fehler.

  1. Neue Excel-Mappe
  2. Mit Alt+F8 das Makro-Fenster öffnen
  3. Makro erstellen um in Virtual Basic zu gelangen
  4. Den Text aus der vorherigen Antwort kopieren und zwar in „Modul1“
  5. VB schließen bzw. speichern.
  6. Mit Alt+F8 das Makro-Fenster öffenen
  7. Im Makro-Fenster „Start“ ausführen

MFG

HerpinADerp

Adressliste aller Stadtwerke in Deutschland
Hallo HaD,

danke erstmal für deine Bemühungen. Achso ob 972 oder 1092 ist
jetzt nicht das Problem. wichtig ist das er viele übernimmt.

was issen das für 'ne lausige Arbeitseinstellung? :smile:)

Ich hab nur das Problem das er nicht die Straßennamen, die
Hausnummer, Telefon und Email übernimmt…

Das habe ich zwischenzeitlich gelöst. Bin grad an Feintuning.

Ich erläutere jetzt mal mein Vorgehen, vllt. liegt ja auch da
der Fehler.

Der Fehler mit den fehlenden Stadtwerken? Nö, den hatte ich schnell gefunden, war mein Fehler.
Ich bin jetzt bei 1088/1089 Stadtwerken je nach Ansichtssache und der
Meinung daß sich die Webseite bei ihren 1092 verzählt hat *gg*

Gruß
Reinhard

Ha, ich wußte die haben sich verzählt
Hallo,

auch die hier kommen so wie ich nur auf 1088 :

http://www.wissen-info.de/energie/stadtwerke_deutsch…

Gruß
Reinhard

Adressliste aller Stadtwerke in Deutschland
Hallo HaD,

starte die nachstehende Prozedur „Start“. Sie braucht einige Stunden.
In Tabelle1!K1:K2 steht anschließend die Anfangs- und Endzeit der Prozedur.

Den Fortschritt erkennst du in Excel unten links in der Statusleiste.
Nach Durchlauf hast du im Blatt „tabelle1“ die gewünschte Auflistung.
in K1:K2 stehen die Anfangs- und Endzeit der Prozeduren.

Wenn du die anderen 1089 Blätter nicht (mehr) brauchst so starte die Prozedur „Loesch“.

Option Explicit
Public T

Sub Start()
T = Now
Call Loesch
Call A\_Z
Call Zeige
End Sub

Sub Zeige()
Dim N As Long, Anz As Integer, S
Application.ScreenUpdating = False
With Worksheets("Tabelle1")
 .UsedRange.Clear
 .Range("A1:J1").Value = \_
 Split("Blattname Stadtwerk Straße Plz Ort Fax Telefon Mail Web Sonstiges")
 Anz = Worksheets.Count - 1
 For N = 2 To Worksheets.Count
 Application.StatusBar = \_
 "Phase 3/3 Auswerte Blatt " & Format(N - 1, "0000") & " von " & Anz
 Worksheets(N).Hyperlinks.Add Anchor:=Worksheets(N).Range("B1"), Address:="", SubAddress:= \_
 "Tabelle1!A1", TextToDisplay:="Zurück zu Tabelle1"
 .Hyperlinks.Add Anchor:=.Cells(N, 1), Address:="", SubAddress:= \_
 Worksheets(N).Name & "!A1", TextToDisplay:=Worksheets(N).Name 'Blattname
 If N 602 Then
 .Cells(N, 2).Value = Worksheets(N).Range("A6").Value 'Name
 .Cells(N, 3).Value = Worksheets(N).Range("A7").Value 'Straße
 .Cells(N, 4).Value = Split(Worksheets(N).Range("A8").Value)(0) 'Plz
 .Cells(N, 5).Value = Split(Worksheets(N).Range("A8").Value)(1) 'Ort
 Set S = Worksheets(N).Range("A6:A50").Find("Fax:", , xlValues)
 If Not S Is Nothing Then
 .Cells(N, 6).Value = Mid(S.Value, 5) 'Fax
 Else
 .Cells(N, 6).Value = "keine"
 End If
 Set S = Worksheets(N).Range("A6:A50").Find("Telefon:", , xlValues)
 If Not S Is Nothing Then
 .Cells(N, 7).Value = Mid(S.Value, 10) 'Tel
 Else
 .Cells(N, 7).Value = "keine"
 End If
 Set S = Worksheets(N).Range("A6:A50").Find("@", , xlValues)
 If Not S Is Nothing Then
 .Cells(N, 8).Value = S.Value 'Mail
 Else
 .Cells(N, 8).Value = "keine"
 End If
 Set S = Worksheets(N).Range("A6:A50").Find("www", , xlValues)
 If Not S Is Nothing Then
 .Hyperlinks.Add Anchor:=.Cells(N, 9), Address:= \_
 "http://" & Mid(S.Value, 3), TextToDisplay:="http://" & Mid(S.Value, 3)
 .Cells(N, 9).Value = "http://" & Mid(S.Value, 3) 'Web
 Else
 .Cells(N, 9).Value = "keine"
 End If
 Else
 .Cells(N, 2).Value = "Fehler" 'Fehler
 End If
 Next N
 .Activate
 .Range("B2").Select
 ActiveWindow.FreezePanes = True
 .Range("K1").Value = T
 .Range("K2").Value = Now
 .Columns("A:K").AutoFit
 .Columns(4).NumberFormat = "00000"
 .Range("A2").Select
End With
Application.StatusBar = False
Application.ScreenUpdating = True
End Sub

Sub A\_Z()
Dim N As Integer, Anz As Integer
Application.ScreenUpdating = False
Anz = 11093 - 10004 + 1
For N = 10004 To 11093
 Application.StatusBar = \_
 "Phase 2/3 Erstelle Blatt " & Format(N - 10003, "0000") & " von " & Anz
 Worksheets.Add after:=Worksheets(Worksheets.Count)
 ActiveSheet.Name = "Blatt" & N
 With Worksheets("Blatt" & N).QueryTables.Add(Connection:= \_
 "URL;http://www.stadtwerke-in-deutschland.de/adressen.php?info=" & N, \_
 Destination:=Range("A1"))
 .Name = "index.php?buchstabe=" & N
 .FieldNames = True
 .RowNumbers = False
 .FillAdjacentFormulas = False
 .PreserveFormatting = True
 .RefreshOnFileOpen = False
 .BackgroundQuery = True
 .RefreshStyle = xlInsertDeleteCells
 .SavePassword = False
 .SaveData = True
 .AdjustColumnWidth = True
 .RefreshPeriod = 0
 .WebSelectionType = xlEntirePage
 .WebFormatting = xlWebFormattingNone
 .WebPreFormattedTextToColumns = True
 .WebConsecutiveDelimitersAsOne = True
 .WebSingleBlockTextImport = False
 .WebDisableDateRecognition = False
 .Refresh BackgroundQuery:=False
 End With
Next N
Application.StatusBar = False
Application.ScreenUpdating = True
End Sub

Sub Loesch()
Dim wks As Worksheet, Anz As Integer, N As Integer
On Error Resume Next
Application.ScreenUpdating = False
Application.DisplayAlerts = False
Anz = ThisWorkbook.Worksheets.Count - 1
For Each wks In ThisWorkbook.Worksheets
 If wks.Name Like "Stadt\*" Or wks.Name Like "Blatt\*" Then
 N = N + 1
 Application.StatusBar = \_
 "Phase 1/3 Lösche Blatt " & Format(N, "0000") & " von " & Anz
 wks.Delete
 End If
Next wks
Application.DisplayAlerts = True
On Error GoTo 0
Application.StatusBar = False
Application.ScreenUpdating = True
End Sub

Hallo…

ich wollte nur nochmal danke sagen hat alles wunderbar geklappt

MFG

HerpinADerp

Reinhard, der Link funktioniert leider nicht :frowning: