Live-Forum - Die aktuellen Beiträge
Datum
Titel
18.04.2024 18:04:29
18.04.2024 16:33:24
Anzeige
Archiv - Navigation
1508to1512
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

Zeile aus externen Datei einlesen

Zeile aus externen Datei einlesen
23.08.2016 11:56:42
Blue
Servus,
ich versuche seit einer gewissen Zeit mir ein VBA zu schreiben.
Komme da aber leider nicht wirklich voran, hoffentlich könnte ihr mir helfen.
Ich brauche ein Makro das im Ordner "X" aus allen Dateien in diesem Fall der Dateityp f jeweils die 3. Zeile kopiert und mir ins Excel untereinander schreibt.
Das Sahnehäupchen wäre noch wenn man hinsichtlich dem Ordner noch ein Art Logik einpflegen könnte.
Da meine Exceldatei im selben Ordner liegt aber der Ordner in dem gesucht werden soll, in einem Anderen aber auch immer an der selben stelle des Gesamtordners.
Bsispiel.
Userbild
Wäre spitze wenn Ihr mir da weiter helfen könnt.
mfg Blue Bird

12
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Zeile aus externen Datei einlesen
23.08.2016 13:00:49
ChrisL
Hi
Sub t()
Dim sPfad As String, sExt As String, sDatei As String
Dim WB1 As Workbook, WB2 As Workbook
Set WB1 = ThisWorkbook
sPfad = Left(WB1.Path, InStrRev(WB1.Path, "\")) & "Ordner c\Ordner cb\"
sExt = "*.xlsx"
sDatei = Dir(sPfad & sExt)
Application.ScreenUpdating = False
Do While Len(sDatei) > 0
Set WB2 = Workbooks.Open(sPfad & sDatei)
WB2.Worksheets(1).Rows(3).Copy WB1.Worksheets(1).Cells(Rows.Count, 1).End(xlUp).Offset(1, 0)
WB2.Close
sDatei = Dir()
Loop
End Sub

cu
Chris
AW: Zeile aus externen Datei einlesen
25.08.2016 10:21:54
Blue
Servus Chris,
erstmal vielen dank für die schnelle Hilfe!
So wie ich es angegeben habe funktioniert es Prima.
Nun hätte ich nur noch eine Frage wie müsste ich den Pfad anpassen, wenn mein Hauptordner noch in weiteren Unterordnern im Ordner f liegt.
Userbild
Des weitern hatte ich leider vergessen zu erwähnen das die Dateien in Tabelle2 geschrieben werden sollen.
Könntest du mir die Anpassung bitte noch mit angeben.
mfg Blue Bird
Anzeige
AW: Zeile aus externen Datei einlesen
25.08.2016 10:49:20
ChrisL
Hi
sPfad = Left(WB1.Path, InStrRev(WB1.Path, "\") - 1)
sPfad = Left(sPfad, InStrRev(sPfad, "\")) & "Ordner c\Ordner cb\"
und statt Worksheets(1) ein Worksheets(2)
oder Worksheets("Tabelle2")
cu
Chris
AW: Zeile aus externen Datei einlesen
25.08.2016 11:15:14
Blue
Servus ChrisL,
die Sache mit dem Tabelle2 funktioniert, allerdings die Sache mit dem anderen Ordner klappt irgendwie nicht.
Hier mal das Makro vlt siehst du was ich falsch gemacht habe.
Sub t()
Dim sPfad As String, sExt As String, sDatei As String
Dim WB1 As Workbook, WB2 As Workbook
Set WB1 = ThisWorkbook
sPfad = Left(WB1.Path, InStrRev(WB1.Path, "\") - 1)
sPfad = Left(sPfad, InStrRev(sPfad, "\")) & "Ordner c\Ordner cb\"
sExt = "*.f"
sDatei = Dir(sPfad & sExt)
Application.ScreenUpdating = False
Do While Len(sDatei) > 0
Set WB2 = Workbooks.Open(sPfad & sDatei)
WB2.Worksheets(1).Rows(3).Copy WB1.Worksheets(2).Cells(Rows.Count, 1).End(xlUp).Offset(1, 0)
WB2.Close
sDatei = Dir()
Loop
End Sub

Dann ist mir noch aufgefallen das wenn ich das Makro mehrfach ausführe die neuen Einträge immer unter die alten kommen, hätte es gerne so das die alten verschwinden und nur die neuen eingetragen werden.
Damit ich wirklich immer nur die aktuellen Einträge aus den Dateien habe.
Vielen vielen dank schonmal für deine spitzen Hilfe!
mfg Blue Bird
Anzeige
AW: Zeile aus externen Datei einlesen
25.08.2016 11:28:13
ChrisL
Hi
Problem 1:
Teste mal...
Sub t()
Dim wb1 As Workbook, spfad As String
Set wb1 = ThisWorkbook
spfad = Left(wb1.Path, InStrRev(wb1.Path, "\") - 1)
spfad = Left(spfad, InStrRev(spfad, "\")) & "Ordner c\Ordner cb\"
MsgBox spfad
End Sub

kommt da nicht der richtige Pfad raus? zwei Unterordner zurück
Problem 2, lösche vor dem Schreiben einfach den Tabelleninhalt:
WB1.Worksheets(2).Cells.Delete
cu
Chris
AW: Zeile aus externen Datei einlesen
25.08.2016 11:40:36
Blue
Servus ChrisL,
Problem 1, findet nicht den richtigen Pfad sondern folgenden: Ordner f\Ordner fa\Ordner c\Ordner cb\
der richtige Pfad wäre: Ordner c\Ordner cb\
Problem 2, wo müsste ich den Befehl in das Makro hinschreiben?
mfg Blue Bird
Anzeige
AW: Zeile aus externen Datei einlesen
25.08.2016 12:37:22
ChrisL
Hi
Sorry, aber das kann nicht sein. Wenn du in Unterordner "fb" bist, wird daraus nicht einfach "fa" (ich habe mit Lupe deinen letzten ScreenShot analysiert). Vielleicht so...
spfad = Left(wb1.Path, InStrRev(wb1.Path, "\") - 1)
spfad = Left(spfad, InStrRev(spfad, "\") - 1)
spfad = Left(spfad, InStrRev(spfad, "\")) & "Ordner c\Ordner cb\"
(einen Ordner weiter zurück)
Und die Löschen-Zeile machst du z.B. nach ScreenUpdating rein.
cu
Chris
AW: Zeile aus externen Datei einlesen
25.08.2016 12:59:42
Blue
Servus ChrisL,
meine Datei befindet sich aber im Ordner fbb, also noch eine unter fb.
Sorry für das zukleine Bild was ich eingestellt habe.
mfg Blue Bird
Anzeige
AW: Zeile aus externen Datei einlesen
25.08.2016 13:11:07
ChrisL
Hi
Ich verstehe langsam gar nichts mehr, aber wenn du noch einen Unterordner weiter zurück musst...
spfad = Left(wb1.Path, InStrRev(wb1.Path, "\") - 1)
spfad = Left(spfad, InStrRev(spfad, "\") - 1)
spfad = Left(spfad, InStrRev(spfad, "\") - 1)
spfad = Left(spfad, InStrRev(spfad, "\")) & "Ordner c\Ordner cb\"
cu
Chris
AW: Zeile aus externen Datei einlesen
25.08.2016 13:12:45
Blue
Servus ChrisL,
habe es hinbekommen das es im Ordner fbb funktioniert, nun habe ich auch das Makro an dieser Stelle verstanden.
Set wb1 = ThisWorkbook
spfad = Left(wb1.Path, InStrRev(wb1.Path, "\") - 1)
spfad = Left(spfad, InStrRev(spfad, "\") - 1)
spfad = Left(spfad, InStrRev(spfad, "\") - 1)
spfad = Left(spfad, InStrRev(spfad, "\")) & "Ordner c\Ordner cb\"
Könntest du mir zum Abschluß noch sagen, wie die Einträge nicht erst ab Zeile zwei geschrieben werden sondern schon in Zeile 1?
mfg Blue Bird
Anzeige
AW: Zeile aus externen Datei einlesen
25.08.2016 13:18:49
ChrisL
Hi
Ungetestet...
Sub t()
Dim sPfad As String, sExt As String, sDatei As String
Dim WB1 As Workbook, WB2 As Workbook
Dim letzteZeile As Long
Set WB1 = ThisWorkbook
spfad = Left(wb1.Path, InStrRev(wb1.Path, "\") - 1)
spfad = Left(spfad, InStrRev(spfad, "\") - 1)
spfad = Left(spfad, InStrRev(spfad, "\") - 1)
spfad = Left(spfad, InStrRev(spfad, "\")) & "Ordner c\Ordner cb\"
sExt = "*.f"
sDatei = Dir(sPfad & sExt)
Application.ScreenUpdating = False
Do While Len(sDatei) > 0
Set WB2 = Workbooks.Open(sPfad & sDatei)
if WB1.Worksheets(2).Range("A1") = "" Then
letzteZeile = 1
Else
letzteZeile = WB1.Worksheets(2).Cells(Rows.Count, 1).End(xlUp).Row + 1
End If
WB2.Worksheets(1).Rows(3).Copy WB1.Worksheets(2).Cells(letzteZeile,1)
WB2.Close
sDatei = Dir()
Loop
End Sub

cu
Chris
Anzeige
AW: Zeile aus externen Datei einlesen
25.08.2016 14:28:06
Blue
Servus ChrisL,
ich habe mir einfach ein separates Makro geschrieben was mir die Zeile 1 in Tabelle2 löscht.
Trotzdem sehr vielen Dank für die hilfen!
mfg Blue Bird

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige