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

Überflüssige Daten löschen

Überflüssige Daten löschen
19.11.2008 09:01:02
Jürgen
Hallo liebe Leser,
in meiner Arbeitsmappe habe ich eine Vielzahl von Webabfragen (QueryTables),
und zwar je eine pro Arbeitsblatt.
Um sie gelegentlich zu aktualisieren benutze ich folgendes Makro:

Public Sub DatenErneuern()
Dim WS As Worksheet, QT As QueryTable
Range("H2:I100").Value = Range("E2:F100").Value
For Each WS In ThisWorkbook.Worksheets
For Each QT In WS.QueryTables
QT.Refresh
Next QT
Next WS
Set WS = Nothing: Set QT = Nothing
End Sub


Da die Arbeitsblätter letztendlich mehr Informationen enthalten als ich benötige,
ich sie aber vor der Abfrage leider nicht einschränken kann,
möchte ich unmittelbar nach der Aktualisierung eines Blattes einiges löschen.
(zur Verringerung von Datenmüll)
Und zwar kann Spalte B,C,D...
sowie Zeile 101,102,103...entfallen.
Oder mit anderen Worten: Ich benötige jeweils nur A1:A100.
Vor dem Löschen sollten noch alle verbundenen Zellen getrennt werden,
damit es kein Kuddelmuddel gibt.
Ich würde mich sehr freuen,
wenn mir jemand dabei behilflich sein könnte,
diesen Wunsch in den o.g. Code einzubauen.
(Oder Alternativ-Lösung)
MFG
Jürgen

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

Betreff
Datum
Anwender
Anzeige
AW: Überflüssige Daten löschen
19.11.2008 10:15:00
Chris
Servus,
probier mal:

Public Sub DatenErneuern()
Dim WS As Worksheet, QT As QueryTable, rngBereich As Range
Range("H2:I100").Value = Range("E2:F100").Value
For Each WS In ThisWorkbook.Worksheets
For Each QT In WS.QueryTables
QT.Refresh
Next QT
Set rngBereich = Union(WS.Range("A101:A65536"), WS.Range("B1:IV65536"))
rngBereich.ClearContents
Next WS
Set WS = Nothing: Set QT = Nothing : Set rngBereich = Nothing
End Sub


ungetestet!
Gruß
Chris

AW: Überflüssige Daten löschen
19.11.2008 10:53:20
Jürgen
Hallo Chris,
danke für die schnelle Antwort.
Hat noch nicht ganz funktioniert.
Ich bekomme die Meldung:
Laufzeitfehler'1004'
Kann Teil einer verbundenen Zelle nicht ändern.
Wie ich schon vermutet habe.
Zitat aus meinem letzten Beitrag:

Vor dem Löschen sollten noch alle verbundenen Zellen getrennt werden,
damit es kein Kuddelmuddel gibt


Ein zweiter Punkt,den ich vergaß zu erwähnen,sorry:
In der Mappe befindet sich ein Tabellenblatt namens 'Auflistung'.
Das muß von der Löschaktion verschont bleiben.
(Darin sind meine Formeln und Bezüge auf alle anderen Blätter enthalten)
MFG
Jürgen

Anzeige
AW: Überflüssige Daten löschen
19.11.2008 11:04:00
Jürgen
So,nochmal ohne Leerzeilen :-)
Hallo Chris,
danke für die schnelle Antwort.
Hat noch nicht ganz funktioniert.
Ich bekomme die Meldung:
Laufzeitfehler'1004'
Kann Teil einer verbundenen Zelle nicht ändern.
Wie ich schon vermutet habe.
Zitat aus meinem letzten Beitrag:

Vor dem Löschen sollten noch alle verbundenen Zellen getrennt werden,
damit es kein Kuddelmuddel gibt


Ein zweiter Punkt,den ich vergaß zu erwähnen,sorry:
In der Mappe befindet sich ein Tabellenblatt namens 'Auflistung'.
Das muß von der Löschaktion verschont bleiben.
(Darin sind meine Formeln und Bezüge auf alle anderen Blätter enthalten)
MFG
Jürgen

Anzeige
AW: Überflüssige Daten löschen
19.11.2008 11:37:00
Chris
Servus Jürgen,
dann probier mal:

Public Sub DatenErneuern()
Dim WS As Worksheet, QT As QueryTable, rngBereich As Range
Range("H2:I100").Value = Range("E2:F100").Value
For Each WS In ThisWorkbook.Worksheets
For Each QT In WS.QueryTables
QT.Refresh
Next QT
If WS.Name  "Auflistung" then
Ws.Cells.MergeCells = False
Set rngBereich = Union(WS.Range("A101:A65536"), WS.Range("B1:IV65536"))
rngBereich.ClearContents
End if
Next WS
Set WS = Nothing: Set QT = Nothing : Set rngBereich = Nothing
End Sub


Gruß
Chris

AW: Überflüssige Daten löschen
19.11.2008 12:07:00
Jürgen
Hallo Chris,
wir nähern uns den Ziel mit großen Schritten.
Aber leider stimmt die Bearbeitungsreihenfolge noch nicht.
Es wird erst nach dem Löschen aktualisiert.
MFG
Jürgen
Anzeige
AW: versteh ich nicht!
19.11.2008 12:27:00
Chris
Servus Jürgen,
die Querytable-Aktualisierung findet ja nun eigentlich vor dem Löschvorgang statt. Daher kann ich das nicht nachvollziehen, hast du mal eine Beispieldatei?
Evtl hilft das:

Public Sub DatenErneuern()
Dim WS As Worksheet, QT As QueryTable, rngBereich As Range
Range("H2:I100").Value = Range("E2:F100").Value
For Each WS In ThisWorkbook.Worksheets
For Each QT In WS.QueryTables
QT.Refresh
Next QT
Next WS
For Each WS In ThisWorkbook.Worksheets
If WS.Name  "Auflistung" then
Ws.Cells.MergeCells = False
Set rngBereich = Union(WS.Range("A101:A65536"), WS.Range("B1:IV65536"))
rngBereich.ClearContents
End if
Next WS
Set WS = Nothing: Set QT = Nothing : Set rngBereich = Nothing
End Sub


Gruß
Chris

Anzeige
AW: versteh ich nicht!
19.11.2008 13:10:20
Jürgen
Hallo Chris,
auch mit Deiner neuen Variante wird erst zum Schluß aktualisiert.
Ich habe hier mal eine Beispieldatei hochgeladen.
Weiß nicht ob es hilft.
https://www.herber.de/bbs/user/56939.xls
MFG
Jürgen
AW: Hilft nicht!
19.11.2008 13:16:03
Chris
Servus Jürgen,
nö hilft nicht, wo holst du denn deine Daten her, da sind ja keine QTs drin.
Gruß
Chris
AW: vielleicht hilft das!
19.11.2008 13:22:00
Chris
Servus,

Public Sub DatenErneuern()
Dim WS As Worksheet, QT As QueryTable, rngBereich As Range
Range("H2:I100").Value = Range("E2:F100").Value
For Each WS In ThisWorkbook.Worksheets
For Each QT In WS.QueryTables
QT.Refresh
Next QT
Next WS
Set WS = Nothing: Set QT = Nothing
End Sub


und:
Sub löschen()
Dim WS As Worksheet, rngBereich as Range
For Each WS In ThisWorkbook.Worksheets
If WS.Name "Auflistung" then
Ws.Cells.MergeCells = False
Set rngBereich = Union(WS.Range("A101:A65536"), WS.Range("B1:IV65536"))
rngBereich.ClearContents
End if
Next WS
End if
Set rngBereich = Nothing
End Sub


Also erst aktualisieren, das scheint ja wohl zu gehen und nach der Aktualisierung dann löschen.
gruß
Chris

Anzeige
AW: vielleicht hilft das!
19.11.2008 13:39:45
Jürgen
Hallo Chris,
beide Codes in ein Modul?
MFG
Jürgen
AW: ja ! owT.
19.11.2008 13:43:00
Chris
.
AW: vielleicht hilft das!
19.11.2008 13:55:00
Jürgen
Hallo Chris,
also wenn ich es richtig verstanden habe sind es jetzt 2 Makros,
die unabhängig voneinander laufen sollen.
Erst Aktualisieren,dann 2. Makro starten und löschen.
So hab ichs gerade gemacht,und bekomme "Fehler beim kompilieren"
"End If ohne If-Block"
MFG
Jürgen
AW: vielleicht hilft das!
19.11.2008 14:02:49
Jürgen
Hallo Chris,
hab end if gelöscht.
Jetzt klappts!!!
Vielen herzlichen Dank für Deine Hilfe.
MFG Jürgen
AW: Hilft nicht!
19.11.2008 13:32:28
Jürgen
Hallo Chris,
die .iqy-Dateien stehen bei mir im Ordner Abfragen im Programmordner von Microsoft Office.
(bestückt mit je einer Web-Adresse)
Und in den Tabellenblättern T1-T3 stehen ja nur die "Verweise" auf sie.
Oder verstehe ich Deine frage jetzt falsch?
Mfg
Jürgen
Anzeige

301 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige