Dieses Forum nutzt Cookies
Dieses Forum verwendet Cookies, um deine Login-Informationen zu speichern, wenn du registriert bist, und deinen letzten Besuch, wenn du es nicht bist. Cookies sind kleine Textdokumente, die auf deinem Computer gespeichert werden. Die von diesem Forum gesetzten Cookies werden nur auf dieser Website verwendet und stellen kein Sicherheitsrisiko dar. Cookies aus diesem Forum speichern auch die spezifischen Themen, die du gelesen hast und wann du zum letzten Mal gelesen hast. Bitte bestätige, ob du diese Cookies akzeptierst oder ablehnst.

Ein Cookie wird in deinem Browser unabhängig von der Wahl gespeichert, um zu verhindern, dass dir diese Frage erneut gestellt wird. Du kannst deine Cookie-Einstellungen jederzeit über den Link in der Fußzeile ändern.

Tabellenname aus geschlossener Datei [Performance]
#1
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
Antworten Top
#2
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
Antworten Top
#3
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
Antworten Top
#4
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.
.      \\\|///      Hoffe, geholfen zu haben.
       ( ô ô )      Grüße, André aus G in T  
  ooO-(_)-Ooo    (Excel 97-2019+365)
Antworten Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste