Live-Forum - Die aktuellen Beiträge
Datum
Titel
18.04.2024 18:04:29
18.04.2024 16:33:24
Anzeige
Archiv - Navigation
1432to1436
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
Pfad per VBA auslesen
09.07.2015 09:53:19
André
Guten Morgen,
ich habe folgendes Makro im Archiv gefunden, welches auch perfekt funktioniert.
Allerdings möchte ich den Pfad, in dem sich die Dateien befinden nicht im Makro eingeben, sondern mittels Fenster, welches sich öffnet, eingeben bzw. wie im Explorer möglich hinverzweigen. Wäre schön, wenn mir das jemand einbauen könnte.
Vielen Dank vorab und schönen Gruß
André
Sub kopieren()
'Makro zum Öffnen aller Dateien eines Zielverzeichnisses
'Die Daten aus den Dateien Rapporte Tabelle1
'werden in Zieldatei (diese Datei)
'Tabelle1 Spalten A bis H kopiert.
'die Daten jeder Datei werden in eine eigene Zeile geschrieben
' Variablen deklarieren
Dim datei As String
Dim pfad As String
Dim i As Integer
i = 1
' Quellordner wird festgelegt
pfad = "c:\test\"
' Dateien des Quellordners ermitteln
datei = Dir(pfad)
' Schleife, um jede Datei auszulesen
Do While datei  ""
' Datei öffnen (Pfad wird aus den Variablen pfad und datei zusammengesetzt
Workbooks.Open Filename:=pfad & datei
' Zählvariable für die Zeilen (je Datei eine neue Zeile)
i = i + 1
' Cells wird wie folgt verwendet Cells(Zeilennummer, Spaltennummer)
' Wenn das Makro in der Zieldatei steht, kann die Datei ThisWorkbook genannt werden.
' Die erste Zahl in der Klammer zeigt die Zeile, die Spalte die Spalte
ThisWorkbook.Sheets("Tabelle1").Cells(i, 1) = ActiveWorkbook.Sheets("Tabelle1").Cells(  _
_
13, 2)
ThisWorkbook.Sheets("Tabelle1").Cells(i, 2) = ActiveWorkbook.Sheets("Tabelle1").Cells(  _
_
12, 8)
ThisWorkbook.Sheets("Tabelle1").Cells(i, 3) = ActiveWorkbook.Sheets("Tabelle1").Cells(  _
_
10, 8)
ThisWorkbook.Sheets("Tabelle1").Cells(i, 4) = ActiveWorkbook.Sheets("Tabelle1").Cells(9, _
_
19)
ThisWorkbook.Sheets("Tabelle1").Cells(i, 5) = ActiveWorkbook.Sheets("Tabelle1").Cells(  _
_
51, 23)
ThisWorkbook.Sheets("Tabelle1").Cells(i, 6) = ActiveWorkbook.Sheets("Tabelle1").Cells(  _
_
51, 24)
ThisWorkbook.Sheets("Tabelle1").Cells(i, 7) = ActiveWorkbook.Sheets("Tabelle1").Cells(  _
_
51, 25)
ThisWorkbook.Sheets("Tabelle1").Cells(i, 8) = ActiveWorkbook.Sheets("Tabelle1").Cells(  _
_
51, 26)
ThisWorkbook.Sheets("Tabelle1").Cells(i, 9) = ActiveWorkbook.Sheets("Tabelle1").Cells(  _
_
51, 27)
ThisWorkbook.Sheets("Tabelle1").Cells(i, 11) = ActiveWorkbook.Sheets("Tabelle1").Cells(  _
_
51, 28)
ThisWorkbook.Sheets("Tabelle1").Cells(i, 12) = ActiveWorkbook.Sheets("Tabelle1").Cells(  _
_
51, 29)
ThisWorkbook.Sheets("Tabelle1").Cells(i, 13) = ActiveWorkbook.Sheets("Tabelle1").Cells(  _
_
51, 30)
ThisWorkbook.Sheets("Tabelle1").Cells(i, 14) = ActiveWorkbook.Sheets("Tabelle1").Cells(  _
_
51, 31)
ThisWorkbook.Sheets("Tabelle1").Cells(i, 15) = ActiveWorkbook.Sheets("Tabelle1").Cells(  _
_
51, 32)
ThisWorkbook.Sheets("Tabelle1").Cells(i, 16) = ActiveWorkbook.Sheets("Tabelle1").Cells(  _
_
51, 33)
ThisWorkbook.Sheets("Tabelle1").Cells(i, 17) = ActiveWorkbook.Sheets("Tabelle1").Cells(  _
_
51, 34)
'ThisWorkbook.Sheets("Tabelle1").Cells(i, 17) = ActiveWorkbook.Sheets("Tabelle1").Cells( _
_
51, 35)
' Datei schließen, ohne Änderungen zu speichern
ActiveWorkbook.Close savechanges:=False
' neue Datei aus dem Ordner lesen
datei = Dir()
' Ende der Schleife
Loop
End Sub

*******************

11
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Pfad per VBA auslesen
09.07.2015 10:35:16
JoWE
Hallo André,
diese Funktion in ein Modul:
Function getFolderName()
Dim AppShell As Object
Dim BrowseDir As Variant
Set AppShell = CreateObject("Shell.Application")
Set BrowseDir = AppShell.BrowseForFolder(0, "Ordner auswählen", &H1000, 17)
On Error Resume Next
getFolderName = BrowseDir.items().Item().Path
On Error GoTo 0
End Function
In Deinem Makro ersetzt Du pfad = "c:\test\" durch pfad = getFolderName
Gruß
Jochen

AW: Pfad per VBA auslesen
09.07.2015 10:44:12
André
Hallo Jochen,
meinst Du so?
**************************
' Quellordner wird festgelegt
Function getFolderName()
Dim AppShell As Object
Dim BrowseDir As Variant
Set AppShell = CreateObject("Shell.Application")
Set BrowseDir = AppShell.BrowseForFolder(0, "Ordner auswählen", &H1000, 17)
On Error Resume Next
getFolderName = BrowseDir.items().Item().Path
On Error GoTo 0
End Function

Pfad = getFolderName
******************************
Da bekomm ich immer eine meldung "Fehler beim kompilieren"
Gruß
André

Anzeige
AW: Pfad per VBA auslesen
09.07.2015 11:22:47
JoWE
Hallo André,
vermutlich fehlt jetzt in Pfad der Backslash "\"
Ändere so: pfad = getFolderName & "\"
Gruß
Jochen

AW: Pfad per VBA auslesen
09.07.2015 13:58:13
André
Hallo Jochen,
so sieht das Makro aus, es komtm aber immer "Fehler beim kompilieren"
Hast Du noch eine Idee?
Gruß
André

Sub kopieren()
'Makro zum Öffnen aller Dateien eines Zielverzeichnisses
'Die Daten aus den Dateien Rapporte Tabelle1
'werden in Zieldatei (diese Datei)
'Tabelle1 Spalten A bis H kopiert.
'die Daten jeder Datei werden in eine eigene Zeile geschrieben
' Variablen deklarieren
Dim datei As String
Dim Pfad As String
Dim i As Integer
i = 1
' Quellordner wird festgelegt

Function getFolderName()
Dim AppShell As Object
Dim BrowseDir As Variant
Set AppShell = CreateObject("Shell.Application")
Set BrowseDir = AppShell.BrowseForFolder(0, "Ordner auswählen", &H1000, 17)
On Error Resume Next
getFolderName = BrowseDir.items().Item().Path
On Error GoTo 0
End Function

Pfad = getFolderName & "\"
datei = Dir(Pfad)

Anzeige
AW: Pfad per VBA auslesen
09.07.2015 14:15:03
JoWE
eieieiei,
nein!!!
Die Funktion kommt nicht mitten in Dein Makro!!!
Sondern als selbständige Funktion in ein Modul.
Schneide den Teil von Function.. bis End Function unbedingt wieder aus
und füge ihn hinter dein Makro als eigenständigen Teil ein
Function getFolderName()
Dim AppShell As Object
Dim BrowseDir As Variant
Set AppShell = CreateObject("Shell.Application")
Set BrowseDir = AppShell.BrowseForFolder(0, "Ordner auswählen", &H1000, 17)
On Error Resume Next
getFolderName = BrowseDir.items().Item().Path
On Error GoTo 0
End Function
die Funktion ist quasi ein eigenes Makro und wird aus Deinem Makro über den Befehl pfad = getFolderName & "\" ausgeführt und gibt dann den Ordnernamen an Dein MAkro zurück.
Viel Erfolg,
Gruß
Jochen

Anzeige
AW: Pfad per VBA auslesen
09.07.2015 14:52:12
André
Tschuldigung ;-(
Aber bin Laie in VBA
Wäre es nicht einfacher du stellst mir das Makro komplett ein, weil, auch wenn ich es ans Ende stelle
kommt "Fehler beim kompilieren".
Gruß
André

AW: Pfad per VBA auslesen
09.07.2015 14:56:55
André
Hallo Jochen
hab es hinbekommen. Man muss einfach mal noch genauer hinsehen.
Danke sehr.
Gruß
André

AW: Pfad per VBA auslesen
09.07.2015 15:21:10
André
Hallo Jochen,
habe 2 Dateien als Text. Die erste bringt Excel ohne Probleme rein, bei der zweiten, kommt die Meldung:
Exception has been thrown by the target of an invocation.
Und im makro hängt er bei:
Workbooks.Open Filename:=Pfad & datei
Dateien sind identisch?
Ich glaube ich gebs auf....
Gruß
André

Anzeige
AW: Pfad per VBA auslesen
09.07.2015 15:36:06
André
Die zweite Datei ist beschädigt, deswegen funzt es nicht...

AW: Pfad per VBA auslesen
09.07.2015 15:36:37
JoWE
Hallo André,
kannst Du die Dateien mal hochladen?
Gruß
Jochen

AW: Pfad per VBA auslesen
10.07.2015 07:00:39
André
Hallo Jochen,
hat sich erledigt. Es funktioniert jetzt, nach mehrmaligen Test.
Danke sehr.
André

18 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige