Anzeige
Archiv - Navigation
560to564
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
560to564
560to564
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

An VB Profis

An VB Profis
03.02.2005 08:08:47
Slugger
Hallo,
wer ist so kompetent und kann mir folgendes in einen VB Code übersetzen?
Nimm den ersten Dateinamen aus Bereich A1 - A 65536. Durchsuche alle Unterverzeichnisse danach. Wenn die Datei gefunden ist, übertrage Zelle A1 und A3 der Datei in Zelle B2 und B4 meiner Datei. Nächster Dateiname. Das gleiche nochmal bis kein Dateiname mehr übrig ist.
Meine VB Kenntnisse reichen hierfür leider noch nicht aus.
Viele Grüße
Slugger

7
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: An VB Profis
03.02.2005 09:21:24
Matthias
Hallo Slugger,
mal eine Teillösung:
Sub DateienListen()
Const Verz = "c:\test"
Dim lz As Long, i As Long
Dim anz As Integer
Dim fn As String
lz = Range("A65536").End(xlUp).Row
For i = 1 To lz
fn = Cells(i, 1).Value
With Application.FileSearch
.NewSearch
.LookIn = Verz
.FileType = msoFileTypeExcelWorkbooks
.Filename = fn
.SearchSubFolders = True
.Execute
anz = .FoundFiles.Count
If anz = 0 Then
MsgBox "Keine Datei namens " & fn & " in " & Verz & " gefunden!"
ElseIf anz > 1 Then
MsgBox "Es wurden " & anz & " Dateien namens " & fn & " in " & Verz & " gefunden!", vbCritical, "Mehrdeutiger Name"
Else
MsgBox "Datei in Zeile " & i & ": " & .FoundFiles(1)
End If
End With
Next i
End Sub
Hier hast du dann schonmal alle Dateien beieinander.
Du kannst die Datei jetzt öffnen und die Zellen auslesen oder aber aus der geschlossenen Datei, Dazu gibt's irgendeinen ExcecutEcel4Makro-Befehl (o.s.ä.), siehe Recherche.
Gruß Matthias
Anzeige
Lösungsansatz?
03.02.2005 09:35:57
Slugger
Hallo,
danke dir wiedermal für deine Hilfe. Problem ist nur das die Dateien auch in Unterverzeichnissen stehen. Ich habe mir bei ein paar Leuten was abgekuckt und es zumindest im Ansatz so gemacht, das er mir alle Dateinamen untereinander schreibt, das in 5er Schritten und die Unterverzeichnisse mit einbezieht. Ich kann als filename auch nur xls Dateien angeben. Genau hier müsste nun der Befehl für das einlesen starten und danach eine Schleife, die den nächsten Namen bearbeitet. Ich steig aber mit dem Excel4Macro noch nicht so durch. Wäre gut wenn mir das jemand etwas erklären könnte.

Private Sub CommandButton1_Click() 'Dateien überprüfen
Dim I As Long
Range("a6:A65536").Clear
With Application.FileSearch
.LookIn = "H:\FT13\BERICHTE\Artikeldatenbank\"
.SearchSubFolders = True
.Filename = "*.xls"
If .Execute() > 0 Then
For I = 1 To .FoundFiles.Count
Sheets(1).Cells(65536, 1).End(xlUp).Offset(5, 0) = .FoundFiles(I)
Next I
End If
End With
End Sub

Vielen Dank und gruß
Slugger
Anzeige
andere idee, Hilfe
03.02.2005 10:11:36
Slugger
Hallo, nochmal. Dein Code funktioniert wunderbar. (wie immer) :-)
Ich habe mir mal Gedanken gemacht und eine Idee gehabt. Dadurch das in Spalte A ja der komplette Dateiname mit Verzeichnisangabe steht, müsste nur in den darauf folgenden Spalten die Funktion ='h:\ft13\[artikel.xls]test!B1 oder so stehen. Gibt es eine Möglichkeit das so zu realisieren? Dann würde der ganz Code eigentlich wegfallen, was auch einfacher wäre. Nur wie macht man das? Die Angabe des Verzeichnisses könnte er sich von Zelle A1 holen. jemand hat so was ähnliches geschrieben, ist aber nicht beantwortet worden.
gruß
Slugger
Anzeige
AW: Lösungsansatz
03.02.2005 11:11:42
Slugger
Hallo,
hier eine frage nochmal zu dem Code:

Private Sub CommandButton1_Click()
Const Verz = "H:\FT13\BERICHTE\Artikeldatenbank\backup1"
Dim lz As Long, i As Long
Dim anz As Integer
Dim fn As String
Dim vLink As Variant
lz = Range("A65536").End(xlUp).Row
For i = 1 To lz
fn = Cells(i, 1).Value
With Application.FileSearch
.NewSearch
.LookIn = Verz
.FileType = msoFileTypeExcelWorkbooks
.Filename = fn
.SearchSubFolders = True
.Execute
anz = .FoundFiles.Count
If anz = 0 Then
MsgBox "Keine Datei namens " & fn & " in " & Verz & " gefunden!"
ElseIf anz > 1 Then
MsgBox "Es wurden " & anz & " Dateien namens " & fn & " in " & Verz & " gefunden!", vbCritical, "Mehrdeutiger Name"
Else
MsgBox "Datei in Zeile " & i & ": " & .FoundFiles(1)
Range("D1").Value = ExecuteExcel4Macro("'H:\FT13\BERICHTE\Artikeldatenbank\backup1\[referenzen.xls]Tabelle1'!R1C1")
End If
End With
Next i
End Sub

Meine Frage: Wie macht man VB klar, das z. B. die Referenzen.xls eine Variable sein muss?
Da ja in A2 nicht refernzen.xls steht, sondern z. B. test.xls? Ich steig mit dem Befehl nicht so richtig durch.
gruß Slugger
Anzeige
Wirklich noch offen? o.T.
03.02.2005 17:07:24
Matthias
-
Bin noch dabei :-) o. T.
04.02.2005 12:09:55
Slugger
-

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige