Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: Excel reagiert nicht mehr bem Ausführen eines Makros

Excel reagiert nicht mehr bem Ausführen eines Makros
19.08.2024 18:04:54
Christian
Hallo, hat jemand von euch einen Tipp, wie ich verhindern kann, dass Excel beim Ausführen des unteren Makros nach 44 Zeilen sagt "Keine Rückmeldung"?

CPU Auslastung 7%, RAM Auslastung 36%.

Also überfordert scheint mein Rechner nicht zu sein.

Sub old()

Dim ws As Worksheet
Dim http As Object
Dim html As Object
Dim objLinks As Object
Dim objLink As Object
Dim lngCount As Long
Dim lloRow As Long
Dim lastRow As Long
Dim wsNames As Variant
Dim i As Integer
Dim totalRows As Long
Dim processedRows As Long
Dim progressPercent As Single

' Tabellen in einem Array speichern
wsNames = Array("Tabelle1", "Tabelle2")

' HTTP-Objekt erstellen
Set http = CreateObject("MSXML2.XMLHTTP")

Application.ScreenUpdating = False
Application.Calculation = xlCalculationManual

' Berechne die Gesamtanzahl der zu verarbeitenden Zeilen (URLs) in beiden Blättern
totalRows = 0
For i = LBound(wsNames) To UBound(wsNames)
Set ws = ThisWorkbook.Worksheets(wsNames(i))
totalRows = totalRows + ws.Cells(ws.Rows.Count, 1).End(xlUp).Row
Next i

processedRows = 0 ' Zähler für verarbeitete Zeilen

' Schleife durch alle Tabellen in wsNames
For i = LBound(wsNames) To UBound(wsNames)
' Setze das Arbeitsblatt auf die aktuelle Tabelle
Set ws = ThisWorkbook.Worksheets(wsNames(i))

' Letzte Zeile in Spalte A ermitteln
lastRow = ws.Cells(ws.Rows.Count, 1).End(xlUp).Row

' Beginne bei der ersten Zeile in Spalte B
lngCount = 1

' Schleife durch alle URLs in Spalte A
For lloRow = 1 To lastRow
' URL aus Zelle A einlesen
http.Open "GET", ws.Range("A" & lloRow).Text, False
http.Send

' Überprüfen, ob die Seite erfolgreich geladen wurde
If http.Status = 200 Then
' HTML-Dokument erstellen und laden
Set html = CreateObject("HTMLFile")
html.body.innerHTML = http.responseText

' Links im HTML-Dokument durchsuchen
Set objLinks = html.getElementsByTagName("a")

' Schleife durch alle Links und liste sie in Spalte B und C auf
If objLinks.Length > 0 Then
For Each objLink In objLinks
ws.Cells(lngCount, 2).Value = objLink.href ' Hyperlink in Spalte B
ws.Cells(lngCount, 3).Value = "'" & objLink.innerText ' Hyperlink-Text in Spalte C
lngCount = lngCount + 1
Next objLink
End If
End If

' Fortschritt berechnen und anzeigen
processedRows = processedRows + 1
progressPercent = (processedRows / totalRows) * 100
Application.StatusBar = "Fortschritt: " & Format(progressPercent, "0.00") & "% - Verarbeite Tabelle " & wsNames(i) & ", Zeile " & lloRow & " von " & lastRow
Next lloRow
Next i

' Nach der Verarbeitung aller Blätter alle Berechnungen aktualisieren
Application.Calculation = xlCalculationAutomatic

' Aufräumen
Set http = Nothing
Set html = Nothing

' Statusleiste zurücksetzen und Bildschirmaktualisierung wieder aktivieren
Application.StatusBar = False
Application.ScreenUpdating = True
End Sub


Vielen Dank
Christian
Anzeige

7
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Excel reagiert nicht mehr bem Ausführen eines Makros
19.08.2024 18:32:28
Onur
Poste mal die Datei.
AW: Excel reagiert nicht mehr bem Ausführen eines Makros
20.08.2024 08:31:09
peter
Hallo

Füge in der inneren Schleife ein DoEvents() ein. So kannst Du dann auch Notfalls die Verarbeitung unterbrechen.

Peter
AW: Excel reagiert nicht mehr bem Ausführen eines Makros
20.08.2024 19:57:51
Christian
Hallo Peter,

mit DoEvents habe ich ehrlicherweise noch nie gearbeitet, weil ich immer die Befürchtung hatte, dass das Makro z.b. auch dann abbricht, wenn ich in einer ganz anderen Anwendung arbeite und da Esc drücke.

Wir reden hier von 3308 URL's, ich will mal nicht ausschließen, das ich in der Stunde die das Makro braucht, auch mal in einer anderen Anwendung arbeiten möchte.

Was sagt deine Erfahrung dazu?

Ich gehe mal davon aus, du meinst, ich soll das zwischen der Fortschrittsberechnung und vor next lloRow das DoEvents einfügen.

Gruß
Christian
Anzeige
AW: Excel reagiert nicht mehr bem Ausführen eines Makros
21.08.2024 09:06:17
peter
Hallo

ESC gilt immer nur für das aktive Program. Wenn Du Excel im Hindergrund laufen läßt und in z.B. Word ESC drückst passiert in Excel gar nichts. Und Ja, DoEvents vor next lloRow einfügen.

Peter
AW: Excel reagiert nicht mehr bem Ausführen eines Makros
21.08.2024 16:14:05
Christian
Hallo Peter,

habe jetzt nicht das ganze Maktro durchlaufen lassen, aber die ersten 10 Minuten ohne Probleme.

Danke
Christian
Anzeige
dann zumindest zunächst nicht mehr offen (owT)
22.08.2024 08:24:43
Pierre
AW: Excel reagiert nicht mehr bem Ausführen eines Makros
19.08.2024 22:34:37
Christian
Hallo Onur,

danke erstmal für die Antwort.
also das Makro läuft trotzdem vollständig durch und danach gibt Excel auch wieder Rückmeldung.
Werde morgen erstmal testen, Wartezeit einzubauen, um auszuschließen, dass da irgendwas überlauft bzw. zuviel auf einmal verarbeitet wird.

Falls das nichts bringt, poste ich die Datei.

Christian
Anzeige
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige