Office: Abfrage ob Tabellenblatt vorhanden ist

Helfe beim Thema Abfrage ob Tabellenblatt vorhanden ist in Microsoft Excel Hilfe um das Problem gemeinsam zu lösen; Hallo zusammen, ich bin noch neu im Forum. Habe vor ca. 8 Jahren schonmal meine Erfahrungen mit VBA Programmierung gemacht, jetzt ist aber so einiges... Dieses Thema im Forum "Microsoft Excel Hilfe" wurde erstellt von Natural born Kieler, 21. Januar 2015.

  1. Abfrage ob Tabellenblatt vorhanden ist


    Hallo zusammen,

    ich bin noch neu im Forum. Habe vor ca. 8 Jahren schonmal meine Erfahrungen mit VBA Programmierung gemacht, jetzt ist aber so einiges eingerostet und ich könnte ein wenig Hilfe gebrauchen.

    Ich bin dabei ein Makro zu schreiben, mit dessen Hilfe man mehrere Excel Dateien aus einem Verzeichnis in PDF Dateien speichern kann. Dabei soll aus den Tabellen nur ein vorbestimmtes Tabellenblatt gespeichert werden. Das klappt soweit auch ganz gut. Ich habe einen Filter eingebaut, der den Dateinamen filtert. Nun kann es vorkommen, das irgendwer einfach einen * als Filter eingibt, was bedeuten würde alle Excel Dateien aus dem Verzeichnis werden als PDF gespeichert. Jetzt kommen wir zu meinem Problem, Das Makro stoppt wenn es kein Tabellenblatt mit dem vorbestimmten Namen findet, ist ja auch logisch, nur läuft dann auch meine Schleife nicht mehr weiter.

    Ich würde gern eine IF...Then...Else Abfrage einbauen, die praktisch die Tabelle ohne das Tabellenblatt schließt und dann mit der Schleife weitermacht. Stehe da irgendwie auf dem Schlauch Abfrage ob Tabellenblatt vorhanden ist :confused:. Wäre schön wenn mir einer von Euch weiterhelfen könnte.

    Grad gesehen: Ich arbeite mit Office 2010

    Hier noch mein Makro-Code:
    Code:
    Sub AlleDrucken()
     
        'Aus welchen Zellen werden die Informationen bezogen
        'Verbessert die Struktur des Excel-Makros, eigene Modifikatioen sind leichter einzupflegen
        Const z_Pfad As String = "F10"
          'in dieser Zelle stehen die Angaben zum Pfad, an welcher Stelle die Quell Excels liegen
        Const z_Filter As String = "F12"
          'in dieser Zelle stehen die Angaben zum Filter, welcher eine Einschränkung der betrachteten Dateien ermöglicht
        Const z_Endung As String = "F14"
          'in dieser Zelle stehen die Angaben zur Endung der Quelldatei
        Const z_Tabellenblatt As String = "F16"
          'in dieser Zelle steht der Blattname
        Const z_Speicherpfad As String = "F18"
          'Speicherpfad der PDF Dateien
        Const z_SeiteVon = "F20"
          'Seiten drucken bzw. als PDF Datei ausgeben, von Seite x
        Const Z_SeiteBis = "F22"
          'Seiten drucken bzw. als PDF Datei ausgeben, bis Seite x
                
        'Variablen
        Dim v_AktuelleDatei As String
          'Name der aktuelle Datei
                
        'Main
        Application.ScreenUpdating = False
          'schaltet die Aktualisierung des Inhalts der Excel ab
         
        v_AktuelleDatei = Dir(Range(z_Pfad).Value & "\" & Range(z_Filter).Value & Range(z_Endung).Value)
          'Gibt den ersten Dateinamen wieder, der auf die angegebenen Filterkriterien passt
         
        v_BlattName = Range(z_Tabellenblatt)
          'Gibt den Namen des ausgewählten Tabellenblattes wieder
        v_SeiteVon = Range(z_SeiteVon)
        
        v_SeiteBis = Range(Z_SeiteBis)
        
        While v_AktuelleDatei <> ""
          'Eine Schleife die so lange läuft bis kein weiteres Excel mehr auf die Filterkriteren zutrifft
              
             OutFile = Range(z_Speicherpfad).Value & "\" & Replace(v_AktuelleDatei, Range(z_Endung).Value, "pdf")
               'Pfad und Endung für die Ausgabe der Datei werden angepasst
              
             Workbooks.Open Filename:=Range(z_Pfad).Value & "\" & v_AktuelleDatei, UpdateLinks:=False
               'Öffnen der zu druckenden Excel ohne den Inhalt zu aktualisieren
     
            ActiveWorkbook.Sheets(Array(v_BlattName)).Select
     
             ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:=OutFile, From:=v_SeiteVon, To:=v_SeiteBis
             'Export der Excels als PDF. Hier wären auch alternative "Druck" bzw Export Optionen einzustellen
              
             ActiveWorkbook.Close savechanges:=False
               'Excel ohne zu speichern schließen
              
             v_AktuelleDatei = Dir
               'Übergibt den Dateinamen der nächsten Excel die auf die Filterkriterien zutrifft
              
        Wend
     
       Application.ScreenUpdating = True
          'Ab hier werden Änderungen in der Excel wieder angezeigt
        
    End Sub
    
     
    Zuletzt bearbeitet: 22. Januar 2015
    Natural born Kieler, 21. Januar 2015
    #1
  2. miriki Erfahrener User
    Moinsens!

    Die einfachste und kürzeste Methode ist wohl, den Fehler abzufangen:

    Code:
        dim n as integer
        dim s1 as worksheet
    
        for n = 1 to filecount
            ' mappe öffnen
    
            on error goto keinblatt
            set s1 = worksheets("blattname")
            ' wasauchimmer
    
    naechstedatei:
            on error goto 0
            ' mappe schließen
        next n
        exit sub
    
    keinblatt:
        resume naechstedatei
    Also ganz simpel: Öffne der Reihe nach alle Mappen und setz die Variable auf das gewünschte Blatt. Ist das Blatt nicht existent, wird die Fehlerbehandlung zuschlagen.

    Der eigentlich schönere, aber auch umständlichere, Weg ist: Laufe in einer Schleife alle Blätter durch und schau, ob der gewünschte Blattname enthalten ist.
    Code:
        dim f as boolean
        dim n as integer
        dim m as integer
    
        for n = 1 to filecount
            ' mappe öffnen
            f = false
            for m = 1 to activeworkbook.worksheets.count
                if activeworkbook.worksheets(m).name="blattname" then f = true
            next m
            if (f) then
                ' wasauchimmer
            end if
            ' mappe schließen
        next n
    Ich bin mir jetzt aber gerade nicht ganz sicher, ob die Schleife von 1 bis count oder doch eher von 0 bis count-1 laufen muß. Auspobieren... (Oder über "dim ws as worksheet ... for each ws in ..." die Zählung völlig bei Seite liegen lassen.)

    Gruß, Michael
     
  3. Beverly
    Beverly Erfahrener User
    Hi,

    versuche es mal auf diesem Weg:

    Code:
        While v_AktuelleDatei <> ""
          'Eine Schleife die so lange läuft bis kein weiteres Excel mehr auf die Filterkriteren zutrifft
          
             OutFile = Range(z_Speicherpfad).Value & "\" & Replace(v_AktuelleDatei, Range(z_Endung).Value, "pdf")
               'Pfad und Endung für die Ausgabe der Datei werden angepasst
             Workbooks.Open Filename:=Range(z_Pfad).Value & "\" & v_AktuelleDatei, UpdateLinks:=False
               'Öffnen der zu druckenden Excel ohne den Inhalt zu aktualisieren
     
             If Not IsError(Evaluate("'[" & v_AktuelleDatei & "]" & v_BlattName & "'!A1")) Then
                ActiveWorkbook.Sheets(v_BlattName).ExportAsFixedFormat Type:=xlTypePDF, Filename:=OutFile, From:=v_SeiteVon, To:=v_SeiteBis
                'Export der Excels als PDF. Hier wären auch alternative "Druck" bzw Export Optionen einzustellen
             End If
             ActiveWorkbook.Close savechanges:=False
              'Excel ohne zu speichern schließen
             v_AktuelleDatei = Dir
               'Übergibt den Dateinamen der nächsten Excel die auf die Filterkriterien zutrifft
        Wend
    

    Vorausgesetzt wird, dass in der Variablen v_AktuelleDatei auch die Dateiendung enthalten ist - andernfalls noch ergänzen.

    Bis später,
    Karin
     
    Beverly, 23. Januar 2015
    #3
  4. Abfrage ob Tabellenblatt vorhanden ist

    Ich bedanke mich bei Euch beiden, letztendlich habe ich auf die Lösung von Karin zurückgegriffen.

    Nochmal vielen Dank für die tolle Hilfe, hatte da wirklich n Brett vor dem Kopf
     
    Natural born Kieler, 26. Januar 2015
    #4
Thema:

Abfrage ob Tabellenblatt vorhanden ist

Die Seite wird geladen...
  1. Abfrage ob Tabellenblatt vorhanden ist - Similar Threads - Abfrage Tabellenblatt vorhanden

  2. Abfrage: Anzahl von Kriterium >0

    in Microsoft Access Hilfe
    Abfrage: Anzahl von Kriterium >0: Hallo, [ATTACH] Ich versuche gerade, die Anzahl der belegten Plätze auf einem LKW per Abfrage zu ermitteln. Dabei wäre dann FSPal > 0. Leider zeigt er mir die Anzahl der Plätze an. [ATTACH]...
  3. Variable Abfrage auf verschiedene Tabellenblätter

    in Microsoft Excel Hilfe
    Variable Abfrage auf verschiedene Tabellenblätter: Hallo zusammen, bitte um Hilfe bei folgendem Problem: Ausgangssituation: Tabelle "Artikel" mit allgemeinen Stammdaten, darunter je eine Spalte "Artikelnummer" und "Sachmerkmalnummer" Tabellen...
  4. Abfrage ob Tabellenblatt-Name bereits vorhanden

    in Microsoft Excel Hilfe
    Abfrage ob Tabellenblatt-Name bereits vorhanden: Hallo Leute, ich habe ein Marko, das mit den Inhalt eines Tabellenblattes in eine andere Excel-Datei abspeichert (Archiv). Dabei wird eine bestimmte Zelle (Datumsangabe) als Tabellenblatt-Name...
  5. Aktives Tabellenblatt abfragen

    in Microsoft Excel Hilfe
    Aktives Tabellenblatt abfragen: Hallo Forumsgemeinde, bastle gerade an einem Stundenerfassungsprogramm. Dieser "Stunden.xls" habe ich eine eigene Symbolleiste angebunden. Einige Schalter dieser Symbolleiste können nur in den...
  6. 2x Abfrage mit Inputbox nach Tabellenblatt und anscjließend Passwort

    in Microsoft Excel Hilfe
    2x Abfrage mit Inputbox nach Tabellenblatt und anscjließend Passwort: Hallo zusammen, ich möchte ein einer Datei die Tabellenblätter nur mit Passwort ein / ausblenden. Am liebsten wären mir zwei codes um 1. ein ausgeblendetes Tabellenblatt zu suchen und per...
  7. wenn abfrage und multiplikation übers ganze tabellenblatt

    in Microsoft Excel Hilfe
    wenn abfrage und multiplikation übers ganze tabellenblatt: Hallo Zusammen, folgende Formel habe ich gemacht, um mein Problem zu lösen:...
  8. Zellen aus Tabellenblättern per Makro für bestimmte Nutzer ohne PW-Abfrage freigeben

    in Microsoft Excel Hilfe
    Zellen aus Tabellenblättern per Makro für bestimmte Nutzer ohne PW-Abfrage freigeben: Hallo zusammen, da ich ein absoluter Neuling im VBA-Editor in Excel bin, möchte ich hier um Hilfe bitten. Mein Problem besteht darin, dass ich einzelne Zellen in Tabellenblättern nur für...
  1. Diese Seite verwendet Cookies, um Inhalte zu personalisieren, diese deiner Erfahrung anzupassen und dich nach der Registrierung angemeldet zu halten.
    Auf dieser Website werden Cookies für die Zugriffsanalyse und Anzeigenmessung verwendet.
    Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies.
    Information ausblenden