Live-Forum - Die aktuellen Beiträge
Datum
Titel
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
1176to1180
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

Excel-Dateien Werte auslesen

Excel-Dateien Werte auslesen
Peter
Hallo!
Ich habe noch eine Frage.
Ich habe einen Knopf, der mir per langem VBA-Text aus anderen Excel-Arbeitsmappen Werte ausliest. Dafür kriegt der Knopf nur die Info, wie der Name dieser Arbeitsmappen lautet. Der Name der einzelnen Zellen ist in einer Spalte bzw. in deren Zellen untereinander gelistet. Der Knopf greift diese Namen Zelle für Zelle auf und listet in die jeweiligen Zellen dahinter in der Zeile eben diese Werte auf. Hat er eine Datei ausgelesen, geht es zu nächsten Zeile und eben zum nächsten Arbeitsmappennamen. Diese Arbeitsmappen werden in dem kompletten Ordner inklusive aller Unterordner gesucht.
Damit das alles so funktioniert, muss ich jede Arbeitsmappe, die auszulesen ist, bzw. deren Namen kennen und eben in diese Spalte eintragen. Die Namen der Arbeitsmappen folgen immer der gleichen Struktur:
AB-123-01
CD-456-02
Also, immer zwei Großbuchstaben, drei Ziffern, und nochmal zwei Ziffern, jeweils durch ein Minuszeichen getrennt (siehe auch https://www.herber.de/forum/messages/1176395.html).
Meine Frage: Kann ich jenen kompletten Ordner inklusive aller Unterordner auslesen und nur nach Dateien mit oben genannter Struktur suchen und in besagte Zellen eintragen?
P

5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
Anzeige
AW: Excel-Dateien Werte auslesen
08.09.2010 15:30:03
Rudi
Hallo,
Option Explicit
Dim vntFiles(), lngFiles
Sub DateiListe()
Dim FSO As Object, oFolder As Object
Dim strFolder As String
Dim wksInhalt As Worksheet
With Application.FileDialog(4)
.AllowMultiSelect = False
.InitialFileName = "c:\" 'anpassen
.InitialView = 2
.Title = "Bitte einen Ordner wählen"
If .Show = -1 Then
strFolder = .SelectedItems(1)
End If
End With
If strFolder = "" Then Exit Sub
GetMoreSpeed
On Error Resume Next
Set wksInhalt = ThisWorkbook.Worksheets("Inhalt")
On Error GoTo 0
If wksInhalt Is Nothing Then
Set wksInhalt = Worksheets.Add(before:=Sheets(1))
wksInhalt.Name = "Inhalt"
End If
Set FSO = CreateObject("Scripting.FileSystemObject")
Set oFolder = FSO.getfolder(strFolder)
lngFiles = 1
With wksInhalt
.Cells.ClearContents
.Cells(1, 1) = "Name"
End With
prcFiles oFolder
prcSubFolders oFolder
With wksInhalt
.Range(.Cells(2, 1), .Cells(lngFiles, UBound(vntFiles, 1))) = _
WorksheetFunction.Transpose(vntFiles)
.Columns.AutoFit
.Activate
End With
GetMoreSpeed False
End Sub
Sub prcSubFolders(oFolder)
Dim oSubFolder As Object
For Each oSubFolder In oFolder.subfolders
prcFiles oSubFolder
prcSubFolders oSubFolder
Next
End Sub
Sub prcFiles(oFolder)
Dim oFile As Object
For Each oFile In oFolder.Files
If oFile.Name Like "[A-Z][A-Z]-###-##.*" Then
ReDim Preserve vntFiles(1 To 1, 1 To lngFiles)
vntFiles(1, lngFiles) = oFile.Name
lngFiles = lngFiles + 1
End If
Next
End Sub
Sub GetMoreSpeed(Optional ByVal Modus As Boolean = True)
With Application
.ScreenUpdating = Not Modus
.EnableEvents = Not Modus
'      .DisplayAlerts = Not Modus
.Calculation = IIf(Modus = True, xlManual, xlAutomatic)
.Cursor = IIf(Modus = True, 2, -4143)
End With
End Sub
Gruß
Rudi
Anzeige
AW: Excel-Dateien Werte auslesen
09.09.2010 14:22:32
Peter
Hallo Rudi!
Danke für die Zeilen, klappt perfekt!
Aber: Ich komme nicht zurecht, wenn es darum geht den Eintrag von Zelle A1 nach B11 zu verlegen mithilfe deiner Programmierung. Kannst du mir da noch einmal unter die Arme greifen?
P
AW: Excel-Dateien Werte auslesen
09.09.2010 15:49:19
Rudi
Hallo,
   With wksInhalt
.Cells.ClearContents
.Cells(11, 2) = "Name"
End With
prcFiles oFolder
prcSubFolders oFolder
With wksInhalt
.Cells(12, 2).Resize(lngFiles, UBound(vntFiles, 1)) = _
WorksheetFunction.Transpose(vntFiles)
.Columns.AutoFit
.Activate
End With

Gruß
Rudi
AW: Excel-Dateien Werte auslesen
09.09.2010 16:07:03
Peter
Nun, das habe ich natürlich schon probiert. Aber genau da schreibt er mir die Zellen von A2:B12 voll mit einem Dateinamen, wenn nur eine Datei in den Unterordnern ist.
Wenn zwei drin stehen, dann schreibt er No. 1 in B3 und No. 2 in B4, darunter steht dann bis B12 "#NV".
Da stimmt was nicht....
Anzeige
AW: Excel-Dateien Werte auslesen
09.09.2010 17:14:41
Peter
Ok, hiermit schaffe ich es schon mal, dass alle Dateinamen bei B12 beginnend abwärts eingetragen werden. Allerdings ist lngFiles = 3, wenn es nur zwei Dateien gibt. Daher hat das Array vntFiles auch drei Plätze frei, wobei der letzte nicht belegt ist. Daher steht an dritter Stelle auch wieder #NV.
With wksProjektdateien
.Cells.ClearContents
.Cells(11, 2) = "Dateiname"
End With
prcFiles oFolder
prcSubFolders oFolder
With wksProjektdateien
.Range(.Cells(12, 2), .Cells(lngFiles + 11, UBound(vntFiles, 2))) = _
WorksheetFunction.Transpose(vntFiles)
.Columns.AutoFit
.Activate
End With
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige