Neues Tabellenblatt wenn noch nicht vorhanden

Bild

Betrifft: Neues Tabellenblatt wenn noch nicht vorhanden
von: worm77
Geschrieben am: 13.08.2015 11:24:18

Hallo zusammen
Ich möchte über VBA ein neues Tabellenblatt einfügen, falls noch keines mit einem bestimmten Namen existiert.
Über ein Forum habe ich dann was gefunden und angepasst.
Mein Code sieht wie folgt aus:
#############################################################################


    
Windows("TimesSeries_Basis.xlsx").Activate
Dim ws As Worksheet
For Each ws In ActiveWorkbook.Sheets
If ws.Name = Master_Sheet_Name Then
GoTo WEITER
Else
GoTo NEUES_BLATT_EINFUEGEN
End If
Next ws

GoTo WEITER
NEUES_BLATT_EINFUEGEN:
Sheets.Add
New_Sheet_Name = ActiveSheet.Name
Sheets(New_Sheet_Name).Name = Master_Sheet_Name
WEITER:>

#############################################################################
Wenn das Blatt noch nicht existiert, funktioniert alles wunderbar, aber wenn
es bereits vorhanden ist, versucht der Code trotzdem, ein neues einzufügen und
umzubenennen. Es geht also in jedem Fall zu der Sprungmarke NEUES_BLATT_EINFUEGEN.
Kann mir da jemand sagen, wie ich das Problem lösen kann?
Besten Dank für eure Hilfe!
Gruss Rolf

Bild

Betrifft: AW: Neues Tabellenblatt wenn noch nicht vorhanden
von: Nepumuk
Geschrieben am: 13.08.2015 11:31:19
Hallo,
teste mal:

Public Sub Einfuegen()
    Dim objWorksheet As Worksheet
    Dim blnFound As Boolean
    For Each objWorksheet In ThisWorkbook.Worksheets
        If objWorksheet.Name = Master_Sheet_Name Then
            blnFound = True
            Exit For
        End If
    Next
    If Not blnFound Then
        Set objWorksheet = ThisWorkbook.Worksheets.Add
        objWorksheet.Name = Master_Sheet_Name
    End If
    Set objWorksheet = Nothing
End Sub

Gruß
Nepumuk

Bild

Betrifft: AW: Neues Tabellenblatt wenn noch nicht vorhanden
von: worm77
Geschrieben am: 13.08.2015 11:59:05
Hallo Nepumuk
Leider funktioniert's noch nicht so richtig...
Anscheinend prüft es im falschen Workbook ...
Ich habe ein Excel-Sheet ("TimesSeries.xlsm"), in dem ich verschiedene Konfigurationen vornehme und dann mit +a das Makro ausführe.
Das Tabellenblatt soll dann aber im File "TimesSeries_Basis.xlsx" mit Daten aus einem Textfile befüllt, resp. eingefügt warden...
Nun fügt es ein neues Sheet in "TimesSeries.xlsm" ein, obwohl ich das Basis-File vorher extra aktiviere (Windows("TimesSeries_Basis.xlsx").Activate).
Hier mal mein ganzer code, den ich mit deinem angepasst habe:

    Dim Auswahl, SourceFile, Master_Sheet_Name, New_Sheet_Name
    Dim LastRow As Long
    Dim Zelle As Range
    
    Windows("TimesSeries.xlsm").Activate
    Sheets("Mastertable").Select
    Range("E16").Select
    SourceFile = ActiveCell.Value
    
    Master_Sheet_Name = "MASTERDATA_" & Range("E21").Value & "_Q" & Range("E22").Value
    
    Windows("TimesSeries_Basis.xlsx").Activate
    Dim objWorksheet As Worksheet
    Dim blnFound As Boolean
    For Each objWorksheet In ThisWorkbook.Worksheets
        If objWorksheet.Name = Master_Sheet_Name Then
            Sheets(Master_Sheet_Name).Select
            Sheets(Master_Sheet_Name).Cells.Clear
            blnFound = True
            Exit For
        End If
    Next
    If Not blnFound Then
        Set objWorksheet = ThisWorkbook.Worksheets.Add
        objWorksheet.Name = Master_Sheet_Name
    End If
    Set objWorksheet = Nothing
    
    With ActiveSheet.QueryTables.Add(Connection:="TEXT;" & SourceFile, 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 = 1
        .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


Bild

Betrifft: AW: Neues Tabellenblatt wenn noch nicht vorhanden
von: Nepumuk
Geschrieben am: 13.08.2015 12:02:27
Hallo,
na dann:

Public Sub Einfuegen()
    Dim objWorksheet As Worksheet
    Dim blnFound As Boolean
    For Each objWorksheet In Workbooks("TimesSeries_Basis.xlsx").Worksheets
        If objWorksheet.Name = Master_Sheet_Name Then
            blnFound = True
            Exit For
        End If
    Next
    If Not blnFound Then
        Set objWorksheet = Workbooks("TimesSeries_Basis.xlsx").Worksheets.Add
        objWorksheet.Name = Master_Sheet_Name
    End If
    Set objWorksheet = Nothing
End Sub

Gruß
Nepumuk

Bild

Betrifft: AW: Neues Tabellenblatt wenn noch nicht vorhanden
von: worm77
Geschrieben am: 13.08.2015 12:08:26
Perfekt!
Vielen herzlichen Dank!
Gruss Rolf

 Bild

Beiträge aus den Excel-Beispielen zum Thema "Neues Tabellenblatt wenn noch nicht vorhanden"