Supportnet Computer
Planet of Tech

Supportnet / Forum / Tabellenkalkulation

Makro





Frage

hallo ihr, ich hätte mal ein kleines Problem. wie kann ich denn in vba überprüfenlassen, ob ein datenblatt existier. und wenn es da ist soll er in das rein ansonsten die datei schließen. Danke

Antwort 1 von coros

Hi Martin,

nachfolgendes Makro sollte das machen, was Du Dir vorgestellt hast. Kopiere es in ein StandardModul und starte es über eine Befehlsschaltfläche.

Option Explicit

Sub Blattexistenz_prüfen()
Dim Wiederholungen As Integer
For Wiederholungen = 1 To Worksheets.Count
If Sheets(Wiederholungen).Name = "Blattname" Then
Sheets(Wiederholungen).Activate
Exit Sub
End If
Next
ActiveWorkbook.Close False
End Sub


Bei dem Makro wird geprüft, ob ein bestimmtes Tabellenblatt vorhanden ist. Wenn ja, wird das Blatt aufgerufen. Wenn nicht, wird die Datei geschlossen.

Du musst in dem Makro in der Zeile

If Sheets(Wiederholungen).Name = "Blattname" Then

den Text "Blattname" gegen den Blattnamen, des Tabellenblattes, das auf seine Existenz hin geprüft werden soll, geändert werden. Dazu das Wort zwischen den Anführungszeichen ("") ändern, aber ohne die Anführungszeichen zu löschen.

Ich hoffe, Du kommst klar. Bei Fragen melde Dich.

Solltest Du nicht wissen, wie Du den Code in Deine Datei bekommst, dann schau mal auf meiner HP in der Rubrik Anleitungen und dort dann in der Anleitungsnummer 3 nach. Dort stelle ich dazu eine bebilderte Anleitung zur Verfügung, die Dir sicherlich helfen wird.

MfG,
Oliver
Da hier der einzige Lohn für die Helfer eine Rückmeldung ist, wäre es nett, wenn Du ein
Feedback abgeben könntest, ob der Lösungsvorschlag Dein Problem gelöst hat.

Antwort 2 von Martin_1982

Danke für die Hilfe,
konnte leider erst jetzt zurückschreiben.
Das Programm funktioniert.
Hätte nur noch eine Frage.

Da ich das in ein anderes Programm einbauen will und es nicht klappt.

Würde ich gerne Fragen wie ich es zu machen habe.

Also wenn du mir dabei helfen könntest wäre es der Knüller.

Hier ist das andere Programm.

Option Explicit

Sub Zusammenfassung()
Dim Mappen As Integer
Dim zeile As Integer
Dim SearchFolders As Integer


With Application.FileSearch
.NewSearch
.LookIn = "S:Ordner" ´Hier den Ordner angeben, in der die Tabellen sind.
.SearchSubFolders = False
.Filename = "*.xls" ´Alle Dateien werden später einzeln aufgerufen, die auf xls enden.
If .Execute() > 0 Then
For Mappen = 1 To .FoundFiles.Count
Workbooks.Open Filename:=.FoundFiles(Mappen)


ActiveWindow.ScrollRow = 1

Sheets("Sicherheiten").Select ´Programm geht hier in das Datenblatt Sicherheiten.
zeile = Range("A65536").End(xlUp).Row ´letzte Zeile in der Spalte A in der Daten enthalten sind wird gesucht.
Rows("4:" & zeile).Select ´Zeile 4 bis letzte Zeile wird markiert.
Application.CutCopyMode = False
Selection.Copy ´ausgewähltes wird kopiert.
Windows("Sammlung.xls").Activate ´wechselt in die Datei Sammlung.xls.
Sheets("Zusammenstellung").Select ´geht ins Datenblatt Zusammenstellung.
zeile = Range("A65536").End(xlUp).Row ´sucht die letzte Zeile in der Spalte A in der Daten sind.
Rows(zeile + 1).Select ´geht eine Zeile unter die letze befüllte Seit.

Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False ´fügt das Kopierte ein. Aber nur die Werte ohne Formate.

Workbooks(2).Close ´schließt die Datei aus der kopiert wurde.
Next Mappen ´geht wieder zur nächsten Datei.
End If
End With
End Sub

Es soll da eingebaut werden, nachdem die Datei geöffnet wird und das Blatt sicherheiten geht und kopiert.
Da ich einige Dateien habe die dieses Blatt nicht haben.

Dank

Antwort 3 von Event

Hallo
alles etwas theoretisch aber:
Option Explicit
Function Blattexistenz_prüfen(blattname$) As Boolean
Dim Wiederholungen As Integer
For Wiederholungen = 1 To Worksheets.Count
If Sheets(Wiederholungen).Name = blattname Then
Sheets(Wiederholungen).Activate
Blattexistenz_prüfen = True
Exit Function
End If
Next
Blattexistenz_prüfen = False
End Function
Sub Zusammenfassung()
Dim Mappen As Integer
Dim zeile As Integer
Dim SearchFolders As Integer

Dim ist_die_Sicherheiten_Tabelle_da As Boolean ´Man will ja Speicher sparen ;-)

With Application.FileSearch
.NewSearch
.LookIn = "S:Ordner" ´Hier den Ordner angeben, in der die Tabellen sind.
.SearchSubFolders = False
.Filename = "*.xls" ´Alle Dateien werden später einzeln aufgerufen, die auf xls enden.
If .Execute() > 0 Then
For Mappen = 1 To .FoundFiles.Count
Workbooks.Open Filename:=.FoundFiles(Mappen)
ActiveWindow.ScrollRow = 1

ist_die_Sicherheiten_Tabelle_da = Blattexistenz_prüfen("Sicherheiten")
If ist_die_Sicherheiten_Tabelle_da = False Then GoTo Nexte_Mappe

Sheets("Sicherheiten").Select ´ Programm geht hier in das Datenblatt Sicherheiten.
zeile = Range("A65536").End(xlUp).Row ´letzte Zeile in der Spalte A in der Daten enthalten sind wird gesucht.
Rows("4:" & zeile).Select ´Zeile 4 bis letzte Zeile wird markiert.
Application.CutCopyMode = False
Selection.Copy ´ausgewähltes wird kopiert.
Windows("Sammlung.xls").Activate ´wechselt in die Datei Sammlung.xls.
Sheets("Zusammenstellung").Select ´geht ins Datenblatt Zusammenstellung.
zeile = Range("A65536").End(xlUp).Row ´sucht die letzte Zeile in der Spalte A in der Daten sind.
Rows(zeile + 1).Select ´geht eine Zeile unter die letze befüllte Seit.

Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False ´fügt das Kopierte ein. Aber nur die Werte ohne Formate.

Workbooks(2).Close ´schließt die Datei aus der kopiert wurde.
Nexte_Mappe:
Next Mappen ´geht wieder zur nächsten Datei.
End If
End With
End Sub


Gruß

Antwort 4 von Martin_1982

Vielen Dank Ich muss sagen Ihr seid mir ne große Hilfe hier.

Kannst du mir aber sagen wieso es so ca. 31 Dateien prüft und die Datensätze rausholt und dann einen Laufzeifehler oder sowas bringt??

In dem Ordner sind ca. 200 Dateien
ist es irgendwie begrenzt auf ne anzahl von Tabellen??

Danke

Ich möchte kostenlos eine Frage an die Mitglieder stellen:


Ähnliche Themen:


Suche in allen vorhandenen Beiträgen: