Clever-Excel-Forum

Normale Version: Tabellenname aus geschlossener Datei [Performance]
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Hallo Zusammen,

ich habe folgenden Code. Leider braucht dieser unwahrscheinlich lange um die einzelnen Dateien und die dazugehörigen Tabellennamen auszulesen.
Vielleicht hat einer von euch eine Idee, wie man dies beschleunigen könnte.

Ich danke im Voraus Smile

Code:
Sub Blattname()

Dim fs As Object
Dim fverz As Object
Dim fDatei As Object
Dim FDateien As Object
Dim strDat As String
Dim lngzaehler As Long
Dim SpaltenOffset As Integer
Dim oWS As Worksheet, oWB As Workbook, oEA As Object, WSZaehler As Integer

lngzaehler = 2
SpaltenOffset = 2

Set fs = CreateObject("Scripting.Filesystemobject")
folderPath = Range("B1")
Set fverz = fs.getfolder(folderPath)
Set FDateien = fverz.Files
Set oEA = CreateObject("Excel.Application")

For Each fDatei In FDateien

If InStr(fDatei, "xl") > 0 Then
  Tabelle6.Cells(lngzaehler, SpaltenOffset).Value = fDatei.Name
  Set oWB = oEA.Workbooks.Open(fDatei, 0, True)
  WSZaehler = 1
   For Each oWS In oWB.Sheets
       Tabelle6.Cells(lngzaehler, SpaltenOffset + WSZaehler).Value = oWS.Name
       WSZaehler = WSZaehler + 1
   Next
   oWB.Close SaveChanges:=False
  lngzaehler = lngzaehler + 1
End If

Next fDatei

Set fs = Nothing
Set fverz = Nothing
Set FDateien = Nothing
Set oEA = Nothing
Set oWB = Nothing
End Sub


Viele Grüße,

Jules
Servus Jules,

schau mal, hier zeigt André ein Script unter Verwendung von ADO ...
http://www.clever-excel-forum.de/thread-...ml#pid5729

Extrem komplex aber vielleicht lohnt sich für Dich der Aufwand?

LG Gerd
Grüß Dich!
Danke für den Link. Den hatte ich auch schon gefunden - fand ihn aber wie du sagst etwas zu komplex. Da hören meine Kentnisse auch lange auf  :19:
Dachte vielleicht es gibt eine Möglichkeit meinen (überschaubaren) kleinen Code irgendwie zu verbessern...

VG
Jules
Hallo Jules,

Problem ist eben, dass Du alle Dateien öffnest, um die Tabellennamen auszulesen.
Wenn Du in allen Dateien ein Übersichtsblatt mit den Blattnamen hättest, könnte man diese einfach per Formel auslesen. Aber das ist ja eher selten der Fall Sad

Wenn Du mein Beispiel verwendest, nimmst Du alle codes und passt nur im Public Sub BlattNamenHolen() die Sache mit den Blattnamen an. Ich habe ja im Beispiel einen fest programmiert. Du müsstest hier nur Deine Schleife usw. für die Abarbeitung der Dateiliste einbauen.

Eine im Verhältnis kleine Beschleunigungsmöglichkeit hast Du lediglich, wenn Du die Blattnamen in ein Array oder eine Collection schreibst und dann erst in Dein Übersichtsblatt. Die Collection hat den Vorteil, dass Du sie nicht (re)dimensionieren musst.