Live-Forum - Die aktuellen Beiträge
Datum
Titel
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
1444to1448
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

Sheet per VBA löschen

Sheet per VBA löschen
25.08.2015 09:53:38
worm77
Hallo zusammen
Ich habe ein VBA-Makro erstellt, das Daten zusammen sucht und dann ein Diagramm erstellt.
Das Diagramm soll in ein neues Sheet gestellt werden, das CHART heisst.
Nun wird eben das Exel-Sheet immer gespeichert, um die historischen Daten zu behalten.
Ich habe dann im VBA folgende Zeile eingefügt, die das Sheet CHART löschen soll, bevor das neue Diagramm erstellt wird:
Worksheets("CHART").Delete
Nur leider wird das Sheet CHART nicht gelöscht... Das neue Diagramm wird dann im Sheet erstellt, wo die Daten her sind.
Weiss jemand, woran das liegen könnte?
Bin euch für eure Hilfe sehr dankbar!
Gruss Rolf

18
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Sheet per VBA löschen
25.08.2015 10:01:22
Rudi
Hallo,
Weiss jemand, woran das liegen könnte?
an deinem Code, woran sonst?
Gruß
Rudi

AW: Sheet per VBA löschen
25.08.2015 10:13:09
worm77
Hahaha ... toller Beitrag.

Glaskugel defekt. owT
25.08.2015 10:15:06
Rudi

AW: Sheet per VBA löschen
25.08.2015 10:24:51
Dieter(Drummer)
Hi Rolf,
wenn Du den ganzen Code nicht zeigst, wird auch kaum jemand helfen können.
Eine Vermutung von mir, dass das CHART auch ein Zahl hat, z.B. "CHART1" ...
Sonst kann ich nicht weiter helfen.
Gruß, Dieter(Drummer)

AW: Sheet per VBA löschen
25.08.2015 10:34:49
Gerd
Hallo Rolf!
Welche Fehlermeldung erhältst du, wenn das Löschen des Blattes scheitert?
Gruß Gerd

AW: Sheet per VBA löschen
25.08.2015 10:55:15
worm77
Hallo zusammen
Ich erhalte leider gar keine Fehlermeldung...
Hab jetzt auch in nem Forum gesehen, dass man Warnmeldungen ausschalten soll, was ich auch versucht habe... aber mit dem gleichen Ergebnis.
Das Diagramm wird einfach im Sheet Masterdata erstellt.
Hier das Daten-File: https://www.herber.de/bbs/user/99814.xlsx
Hier der gesamte Code:

On Local Error Resume Next
' getsource Makro
Dim Auswahl, RetVal
Dim LastRow, NewRow As Long
Dim Zelle As Range
InputDrive = ThisWorkbook.Sheets("Mastertable").Range("E16").Value
InputDirectory = ThisWorkbook.Sheets("Mastertable").Range("E17").Value
ChDrive InputDrive
ChDir InputDirectory
ThisWorkbook.Sheets("Mastertable").Range("E30").Value = Replace(CStr(Time()), ":", "")
Calculate
ArchiveDrive = ThisWorkbook.Sheets("Mastertable").Range("E19").Value
ArchiveDirectory = ThisWorkbook.Sheets("Mastertable").Range("E20").Value
StatsDrive = ThisWorkbook.Sheets("Mastertable").Range("E22").Value
StatsDirectory = ThisWorkbook.Sheets("Mastertable").Range("E23").Value
StatsName = ThisWorkbook.Sheets("Mastertable").Range("E24").Value
' Prüfen, ob Input-Folder leer ist. Wenn leer, dann Makro abbrechen
If Dir$(InputDrive & ":\" & InputDirectory & "\*.*") = vbNullString Then
RetVal = MsgBox("Input-Verzeichnis ist leer!" & vbCrLf & vbCrLf & "Verarbeitung  _
abgebrochen!", vbCritical, "Keine Daten vorhanden!")
Exit Sub
End If
'Basis-File öffnen
Application.Run "KRun_Statistik.xlsm!getbasis"
Windows("KRun_Statistik_Basis.xlsx").Activate
' Importiere alle Files in Input-Folder
ChDrive InputDrive
ChDir InputDirectory
Dim lngR As Long
Dim strFile As String, strTabName As String
strFile = Dir(InputDrive & ":\" & InputDirectory & "\" & "*.txt")
lngR = 1
With ActiveWorkbook.Sheets("TEMP")
.Range("A2:B" & Rows.Count).ClearContents
Do Until strFile = ""
lngR = lngR + 1
ActiveWorkbook.Sheets("TEMP").Cells.Clear
Sheets("TEMP").Select
With ActiveSheet.QueryTables.Add(Connection:="TEXT;" & strFile, Destination:=Range("$A$ _
1"))
.Name = "file"
.FieldNames = False
.RowNumbers = False
.FillAdjacentFormulas = False
.PreserveFormatting = True
.RefreshOnFileOpen = False
.RefreshStyle = xlInsertDeleteCells
.SavePassword = False
.SaveData = True
.AdjustColumnWidth = True
.RefreshPeriod = 0
.TextFilePromptOnRefresh = False
.TextFilePlatform = 437
.TextFileStartRow = 2
.TextFileParseType = xlDelimited
.TextFileTextQualifier = xlTextQualifierDoubleQuote
.TextFileConsecutiveDelimiter = False
.TextFileTabDelimiter = True
.TextFileSemicolonDelimiter = False
.TextFileCommaDelimiter = False
.TextFileSpaceDelimiter = False
.TextFileColumnDataTypes = Array(4, 1, 1)
.TextFileTrailingMinusNumbers = True
.Refresh BackgroundQuery:=False
End With
Dim Bereich As Range
For x = 1 To Cells(Rows.Count, 1).End(xlUp).Row 'letzte Zeile
If Range("C" & x).Value = "Start" And Range("C" & x + 1).Value = "Stop" Then
Range("E" & x & ":H" & x).Value = Range("A" & x + 1 & ":D" & x + 1).Value
Range("A" & x + 1).Value = "löschen"
End If
Next x
Do
Set Bereich = Range("A:A").Find(What:="löschen", LookIn:=xlFormulas, _
LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, _
MatchCase:=False, SearchFormat:=False)
If Bereich Is Nothing Then
Exit Do
Else: Rows(Bereich.Row).Delete Shift:=xlUp
End If
Loop
' Berechnung Runtime einfügen
Range("A1:H1").Select
Range(Selection, Selection.End(xlDown)).Select
Auswahl = Selection.Address
LastRow = Selection.Row + Selection.Rows.Count - 1
With Range("I1:I" & LastRow)
.Formula = "=F1-B1"
End With
' Daten in MASTERDATA übertragen
Range("A1:I1").Select
Range(Selection, Selection.End(xlDown)).Select
Selection.Copy
Sheets("MASTERDATA").Select
Range("A1").Select
Range(Selection, Selection.End(xlDown)).Select
NewRow = Selection.Rows.Count + 1
If NewRow > 1000000 Then
NewRow = 2
End If
Range("A" & NewRow).Select
ActiveSheet.Paste
Dim fso As Object
Set fso = CreateObject("Scripting.FileSystemObject")
fso.MoveFile strFile, ArchiveDrive & ":\" & ArchiveDirectory & "\"
strFile = Dir
Loop
End With
' Daten kopieren für CHART
Range("A1:I1").Select
Range(Selection, Selection.End(xlDown)).Select
Auswahl = Selection.Address
LastRow = Selection.Row + Selection.Rows.Count - 1
With Range("N1:N" & LastRow)
.Formula = "=A1"
End With
With Range("O1:O" & LastRow)
.Formula = "=D1"
End With
With Range("P2:P" & LastRow)
.Formula = "=CONCATENATE(TEXT(N2,""tt.MM.jjjj""),"" "",O2)"            ' 

Anzeige
AW: Sheet per VBA löschen
25.08.2015 11:11:38
Rudi
Hallo,
wie schon erwähnt: CHART ist kein Worksheet, sondern ein Chart.
Charts("Chart").Delete
Das hat man vom Einsatz von On Error...
Gruß
Rudi

AW: Sheet per VBA löschen
25.08.2015 11:33:42
worm77
Super!
Vielen herzlichen Dank!
Hat bestens funktioniert!
Jetzt muss ich nur noch herausfinden, wieso das File mit jeder Ausführung extrem viel grösser und sehr langsam wird.
Gruss Rolf

AW: Sheet per VBA löschen
25.08.2015 13:07:48
selli
hallo rolf,
Jetzt muss ich nur noch herausfinden, wieso das File mit jeder Ausführung extrem viel grösser und sehr langsam wird.
du solltest mal überlegen, dass du bei jedem mal wenn dein code läuft, eine abfrage eingefügt wird.
die bleiben natürlich erhalten solange sie nicht gelöscht werden.
wie oft hast du den code denn schon ausgeführt?
gruß
selli

Anzeige
AW: Sheet per VBA löschen
25.08.2015 14:02:45
worm77
Hallo Selli
Nun, während dem "Programmieren" führe ich das natürlich zich mal aus.
Ging so weit, dass gar nichts mehr ging... Also das File gar nicht mehr verwendet werden konnte ("Excel reagiert nicht").
Kannst du mir da vielleicht sagen, wie ich diese Abfragen löschen kann?
Am besten natürlich per VBA :-)
Vielen herzlichen Dank schon mal im Voraus.
Gruss Rolf

AW: Sheet per VBA löschen
25.08.2015 14:12:03
selli
hallo rolf,
....QueryTable.Delete
gruß
selli

AW: Sheet per VBA löschen
25.08.2015 15:25:22
worm77
Hoi Selli
Hab's jetzt mal so gemacht:
Dim qt As QueryTable
Dim WSh As Worksheet
For Each WSh In ThisWorkbook.Worksheets
For Each qt In WSh.QueryTables
qt.ResultRange.ClearContents
qt.Delete
Next qt
Next WSh
Nun, das File wird jetzt pro Ausführungen nur noch 2kb grösser (obwohl die genau gleichen Daten eingelesen werden) ...
Dies würde mich ja nicht weiter stören...
Aber mit jeder Ausführung braucht's ca. doppelt so lang, bis das File geöffnet wird.
Irgendwo muss da noch was im Hintergrund sein, was nicht passt...
Hab in den Dokument-Eigenschaften gesehen, dass da für das Blatt MASTERDATA über 600 Files angezeigt werden...
Userbild
Kann es vielleicht daran liegen und wie könnte ich das dann beheben?
Die Auswertung muss einmal pro Woche gemacht werden und dabei werden Dateien von 20 Servern abgeholt und importiert... Also müsste ich schon eine Lösung haben, dass es nicht immer länger dauert. :-)
Besten Dank und
Gruss Rolf

Anzeige
AW: Sheet per VBA löschen
25.08.2015 15:32:56
Rudi
Hallo,
das sind Namen!
Wahrscheinlich kannst du sie löschen.
Gruß
Rudi

oder...
25.08.2015 16:02:03
selli
hallo rolf,
...es könnten auch die 600 abfragen sein, die du bislang angelegt aber nicht wieder gelöscht hast.
gruß
selli

noch die Verbindungen köschen.
25.08.2015 16:15:59
Rudi
dann wird's gleich schneller.
  For Each c In ActiveWorkbook.Connections
c.Delete
Next

Gruß
Rudi

=ERSETZEN("köschen";1;1;"l") owT
25.08.2015 16:18:18
Rudi

AW: =ERSETZEN("köschen";1;1;"l") owT
25.08.2015 16:33:47
worm77
Hoi Rudi
Super! Vielen herzlichen Dank!
Hatte schon fast 900 Connections...
Jetzt öffnet es sich bedeutend schneller.
Gruss Rolf

Schuss ins Blaue
25.08.2015 10:44:45
RPP63
Hi!
Handelt es sich wirklich um ein Worksheet?
Wenn es ein Diagramm-Blatt ist, dann
Sheets("Chart").Delete
(die Groß- Kleinschreibung im String ist irrelevant)
Gruß Ralf
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige