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

Namen der Tabellblätter aus geschlossen xls ausles

Namen der Tabellblätter aus geschlossen xls ausles
02.05.2009 18:13:33
Fenja
Hallo Excelfachleute,
ich hätte eine große bitte, ich bräuchte einen Code, mit den ich alle Namen von Tabellenblättern einer geschlossenen xls Datei auslesen kann.
Kann mir jemand sowas basteln.
Danke und lieben Gruß
F.

10
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Namen der Tabellblätter aus geschlossen xls ausles
02.05.2009 19:04:19
Tino
Hallo,
habe Dir mal was gebastelt.
Ohne öffnen habe ich keine Möglichkeit.
Sub Test()
Dim strFile As String
Dim myFile As Workbook
Dim i As Integer, iCalc As Integer

strFile = Application.GetOpenFilename("Excel Files (*.xls), *.xls")

    If strFile Like "*.xls" Then
      
      With Application
         iCalc = .Calculation
        .ScreenUpdating = False
        .EnableEvents = False
        .Calculation = xlCalculationManual
                         
                'wo die Daten hin sollen, Tabellenname anpassen 
                 With ThisWorkbook.Sheets("Tabelle1")
                        
                        On Error GoTo ErrorFile:
                           Set myFile = Workbooks.Open(strFile, , True)
                        On Error GoTo 0
                         
            '          'Überschrift Dateiname, falls gewünscht aktivieren 
            '              .Cells(1, 1) = myFile.Name 
            '              .Cells(1, 1).Font.Bold = True 
                        
                        For i = 1 To myFile.Sheets.Count
                            'wo die Daten hin sollen, eventuell anpassen. 
                            'hier ab Zeile 2 
                            .Cells(i + 1, 1).Value = myFile.Sheets(i).Name
                        Next i
                    
                        myFile.Close False
                  
                  End With 'ThisWorkbook.Sheets("Tabelle1") 
        
ErrorFile:
                .Calculation = iCalc
                .EnableEvents = True
                .ScreenUpdating = True
        End With 'Application 
    End If


If Err.Number <> 0 Then
 MsgBox "Datei konnte nicht geöffnet werden!", vbCritical
End If
End Sub


Gruß Tino

Anzeige
AW: Namen der Tabellblätter aus geschlossen xls ausles
02.05.2009 19:27:17
Josef
Hallo Fenja,
ein Beispiel.
' **********************************************************************
' Modul: Modul1 Typ: Allgemeines Modul
' **********************************************************************

Option Explicit

Sub listSheetsInWorkbook()
  Dim objWB As Workbook, objWS As Object
  Dim strFile As String, blnClose As Boolean
  Dim strMsg As String
  
  
  On Error GoTo ErrExit
  GMS
  
  strFile = Application.GetOpenFilename("Excel Dateien (*.xls; *.xlsx; *.xlsm)," & _
    "*.xls; *.xlsx; *.xlsm")
  
  If strFile = "Falsch" Then Exit Sub
  
  If IsOpen(strFile) Then
    Set objWB = Workbooks(Mid(strFile, InStrRev(strFile, "\") + 1))
  Else
    Set objWB = Workbooks.Open(strFile)
    blnClose = True
  End If
  
  For Each objWS In objWB.Sheets
    strMsg = strMsg & "Typ: " & IIf(objWS.Type = -4167, "Arbeitsblatt", "Diagramm") & _
      vbTab & "Name: " & objWS.Name & vbLf
  Next
  
  If blnClose Then objWB.Close False
  
  If Len(strMsg) > 0 Then
    strMsg = "Die Datei """ & strFile & """ enthält folgenden Blätter:" & _
      vbLf & vbLf & strMsg
    MsgBox strMsg, vbInformation
  End If
  
  ErrExit:
  With Err
    If .Number <> 0 Then MsgBox "Fehler " & .Number & vbLf & vbLf & _
      .Description & vbLf & vbLf & "In Prozedur (listSheetsInWorkbook) in Modul Modul1", _
      vbExclamation, "Fehler in Modul1 / listSheetsInWorkbook"
  End With
  
  GMS True
  
End Sub

Private Function IsOpen(FileName As String) As Boolean
  Dim objWB As Workbook
  
  If InStr(1, FileName, "\") > 0 Then
    For Each objWB In Application.Workbooks
      If objWB.FullName = FileName Then
        IsOpen = True
        Exit For
      End If
    Next
  Else
    For Each objWB In Application.Workbooks
      If objWB.Name = FileName Then
        IsOpen = True
        Exit For
      End If
    Next
  End If
End Function

Public Sub GMS(Optional ByVal Modus As Boolean = False)
  
  Static lngCalc As Long
  
  With Application
    .ScreenUpdating = Modus
    .EnableEvents = Modus
    .DisplayAlerts = Modus
    .EnableCancelKey = IIf(Modus, 1, 0)
    If Not Modus Then lngCalc = .Calculation
    If Modus And lngCalc = 0 Then lngCalc = -4105
    .Calculation = IIf(Modus, lngCalc, -4135)
    .Cursor = IIf(Modus, -4143, 2)
    
  End With
  
End Sub

Gruß Sepp

Anzeige
AW: Namen der Tabellblätter aus geschlossen xls ausles
02.05.2009 20:31:00
Fenja
OK, lieben Dank an Euch, leider ist mir was dazwischen gekommen, melde mich morgen wieder ob ich damit zurechtgekommen bin. sorry dafür.
F.
AW: Namen der Tabellblätter aus geschlossen xls ausles
02.05.2009 20:40:44
Fenja
Habe doch noch probieren können,
habe ein Modul angelegt und den Code hineinkopiert. Meine auszulesene Datei benannt, die sich i gleichen Verzeichnis befindet.
und das schon bei Sub listSheetsInWorkbook() hält der Code an und es passiert nichts mehr.
Was ist falsch bei dem was ich gemacht habe?
L.G. F.
AW: Namen der Tabellblätter aus geschlossen xls ausles
02.05.2009 20:54:23
Josef
Hallo Fenja,
ganzen Code in ein Modul kopieren und Code entweder in VBE per F5 starten,
oder aus Excel über "Extras " > "Makro" > "Makros" ausführen.
Deine Datei brauchst du nicht benennen, das geschieht per Dialog im Makro.
Gruß Sepp

Anzeige
AW: Namen der Tabellblätter aus geschlossen xls ausles
02.05.2009 21:33:35
Fenja
Das ist der Hammer und und und ich weiß nicht, was ich sagen soll, suuuuuper
Danke, das hilft mit und nimmt mir in zukunft viel Arbeit ab.
Du könntest dem noch eins oben drauf setzten, wenn du möchtest
und die Tabellenblattnamen in eine Txt-Datei schreiben lasswn .
Das wäre dann.... mir fehlen die Worte. Aber der andere Code ist schon toll.
Danke F.
AW: Namen der Tabellblätter aus geschlossen xls ausles
02.05.2009 21:38:51
Josef
Hallo Fenja,
meinst du Tino oder mich?
Was soll in der Textdatei stehen? Nur die Tabellennamen, oder auch der Dateiname?
Wo soll die Textdatei gespeichert werden und unter welchen Namen?
Gruß Sepp

Anzeige
AW: Namen der Tabellblätter aus geschlossen xls ausles
02.05.2009 21:56:26
Fenja
Hallo ihr zwei,
ich meinte vorher nur dich Josef, der den Code geschrieben hat und der wirklich super ist. Ich freu mich sehr darüber!
Wenn du mich jetzt fragst, was drin stehen soll in der *.txt und es dir scheinbar keine Mühe macht, wäre Dateiname und Tabellblätter sehr gut und ausreichend. Mehr kommt von meiner Seite auch zu diesem Thema nicht hinzu.
Ihr/du bist klasse
Danke Fenja
AW: Namen der Tabellblätter aus geschlossen xls ausles
02.05.2009 21:59:21
Josef
Hallo Fenja,
den Pfad und Namen der Textdatei musst du im Code anpassen.
Zur zeit wird die Datei im Pfad der Exceldatei als "Tabellen.txt" abgelegt!
' **********************************************************************
' Modul: Modul1 Typ: Allgemeines Modul
' **********************************************************************

Option Explicit

Sub listSheetsInWorkbook()
  Dim objWB As Workbook, objWS As Object
  Dim strFile As String, blnClose As Boolean
  Dim strMsg As String, strTxtFile As String
  
  
  On Error GoTo ErrExit
  GMS
  
  strTxtFile = ThisWorkbook.Path & "\Tabellen.txt" 'Pfad und Name der Textdatei - Anpassen!
  
  strFile = Application.GetOpenFilename("Excel Dateien (*.xls; *.xlsx; *.xlsm)," & _
    "*.xls; *.xlsx; *.xlsm")
  
  If strFile = "Falsch" Then Exit Sub
  
  If IsOpen(strFile) Then
    Set objWB = Workbooks(Mid(strFile, InStrRev(strFile, "\") + 1))
  Else
    Set objWB = Workbooks.Open(strFile)
    blnClose = True
  End If
  
  For Each objWS In objWB.Sheets
    strMsg = strMsg & objWS.Name & vbLf
  Next
  
  If blnClose Then objWB.Close False
  
  If Len(strMsg) > 0 Then
    strMsg = Left(strMsg, Len(strMsg) - 1)
    Open strTxtFile For Output As #1
    Print #1, strFile
    Print #1, strMsg;
    Close #1
    MsgBox "Die Tabellennamen der Datei" & vbLf & vbLf & vbTab & strFile & vbLf & _
      vbLf & "wurden in der Textdatei """ & strTxtFile & """ gespeichert!", vbInformation
  End If
  
  ErrExit:
  With Err
    If .Number <> 0 Then MsgBox "Fehler " & .Number & vbLf & vbLf & _
      .Description & vbLf & vbLf & "In Prozedur (listSheetsInWorkbook) in Modul Modul1", _
      vbExclamation, "Fehler in Modul1 / listSheetsInWorkbook"
  End With
  
  GMS True
  
End Sub

Private Function IsOpen(FileName As String) As Boolean
  Dim objWB As Workbook
  
  If InStr(1, FileName, "\") > 0 Then
    For Each objWB In Application.Workbooks
      If objWB.FullName = FileName Then
        IsOpen = True
        Exit For
      End If
    Next
  Else
    For Each objWB In Application.Workbooks
      If objWB.Name = FileName Then
        IsOpen = True
        Exit For
      End If
    Next
  End If
End Function

Public Sub GMS(Optional ByVal Modus As Boolean = False)
  
  Static lngCalc As Long
  
  With Application
    .ScreenUpdating = Modus
    .EnableEvents = Modus
    .DisplayAlerts = Modus
    .EnableCancelKey = IIf(Modus, 1, 0)
    If Not Modus Then lngCalc = .Calculation
    If Modus And lngCalc = 0 Then lngCalc = -4105
    .Calculation = IIf(Modus, lngCalc, -4135)
    .Cursor = IIf(Modus, -4143, 2)
    
  End With
  
End Sub

Gruß Sepp

Anzeige
Danke und nochmal Danke
02.05.2009 22:09:00
Fenja
Danke, Danke!!! :)
Ein wahres Forum und ich komme gerne wieder und meine Empfehlungen sind diesem Forum sicher.
F.

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige