Supportnet / Forum / Tabellenkalkulation
Excel VBA mehrere Dateien öffnen
Frage
Wenn ich das jetzt richtig gesehen haben geht ja mit dem Open.Worksheet befehl nur das öffnen einer mappe.. wie kann ich das denn umschreiben, dass er einfach der reihe nach alle dateien in einem ordner öffnet? bzw von mir aus auch, dass er die namen der dateien aus einer tabellen ausliest und dann halt alle öffnet... die dateien sind alle im gleichen ordner...
vielen dank für die hilfe im vorraus
Gruß
Antwort 1 von nighty
hi all :)
wie gewünscht :))
gruss nighty
Option Explicit
Private Type BrowseInfo
hwndOwner As Long
pIDLRoot As Long
pszDisplayName As Long
lpszTitle As Long
ulFlags As Long
lpfnCallback As Long
lParam As Long
iImage As Long
End Type
Private Declare Function SHBrowseForFolder Lib "shell32" (lpbi As BrowseInfo) As Long
Private Declare Function SHGetPathFromIDList Lib "shell32" (ByVal pIDList As Long, ByVal lpBuffer As String) As Long
Private Declare Function lstrcat Lib "kernel32" Alias "lstrcatA" (ByVal lpString1 As String, ByVal lpString2 As String) As Long
Sub makro01()
Dim i As Integer, letzte As Integer
Application.DisplayAlerts = False
With Application.FileSearch
.NewSearch
Rem alternativ die function der ordnerwahl weglassen und pfad angeben
Rem funktionname ist Ordnerwählen
.LookIn = Ordnerwählen("Ab welchem Verzeichnis einlesen?")
.SearchSubFolders = False
.Filename = "*.xls"
If .Execute() > 0 Then
For i = 1 To .FoundFiles.Count
Workbooks.Open Filename:=.FoundFiles(i)
Next i
End If
End With
Application.DisplayAlerts = True
End Sub
Private Function Ordnerwählen(ByVal strTitle As String) As String
Dim lngIDList As Long
Dim strBuffer As String
Dim UserBrowseInfo As BrowseInfo
With UserBrowseInfo
.hwndOwner = 0
.lpszTitle = lstrcat(strTitle, "")
.ulFlags = 3
End With
lngIDList = SHBrowseForFolder(UserBrowseInfo)
If (lngIDList) Then
strBuffer = Space(260)
SHGetPathFromIDList lngIDList, strBuffer
strBuffer = Left(strBuffer, InStr(strBuffer, vbNullChar) - 1)
Ordnerwählen = strBuffer
End If
End Function
wie gewünscht :))
gruss nighty
Option Explicit
Private Type BrowseInfo
hwndOwner As Long
pIDLRoot As Long
pszDisplayName As Long
lpszTitle As Long
ulFlags As Long
lpfnCallback As Long
lParam As Long
iImage As Long
End Type
Private Declare Function SHBrowseForFolder Lib "shell32" (lpbi As BrowseInfo) As Long
Private Declare Function SHGetPathFromIDList Lib "shell32" (ByVal pIDList As Long, ByVal lpBuffer As String) As Long
Private Declare Function lstrcat Lib "kernel32" Alias "lstrcatA" (ByVal lpString1 As String, ByVal lpString2 As String) As Long
Sub makro01()
Dim i As Integer, letzte As Integer
Application.DisplayAlerts = False
With Application.FileSearch
.NewSearch
Rem alternativ die function der ordnerwahl weglassen und pfad angeben
Rem funktionname ist Ordnerwählen
.LookIn = Ordnerwählen("Ab welchem Verzeichnis einlesen?")
.SearchSubFolders = False
.Filename = "*.xls"
If .Execute() > 0 Then
For i = 1 To .FoundFiles.Count
Workbooks.Open Filename:=.FoundFiles(i)
Next i
End If
End With
Application.DisplayAlerts = True
End Sub
Private Function Ordnerwählen(ByVal strTitle As String) As String
Dim lngIDList As Long
Dim strBuffer As String
Dim UserBrowseInfo As BrowseInfo
With UserBrowseInfo
.hwndOwner = 0
.lpszTitle = lstrcat(strTitle, "")
.ulFlags = 3
End With
lngIDList = SHBrowseForFolder(UserBrowseInfo)
If (lngIDList) Then
strBuffer = Space(260)
SHGetPathFromIDList lngIDList, strBuffer
strBuffer = Left(strBuffer, InStr(strBuffer, vbNullChar) - 1)
Ordnerwählen = strBuffer
End If
End Function
Antwort 2 von JoeKe
Hallo,
oder so:
Sub Dateien_öffnen()
Dim zähler As Long, Pfad As String
Pfad = InputBox("Verzeichnis:", "Welches Verzeichnis?", Default:=CurDir)
If Pfad = "" Then Exit Sub
With Application.FileSearch
.NewSearch
.FileType = msoFileTypeExcelWorkbooks
.LookIn = Pfad
.SearchSubFolders = True
If .Execute <> 0 Then
For zähler = 1 To .FoundFiles.Count
Workbooks.Open Filename:=.FoundFiles.Item(zähler)
Next zähler
End If
End With
End Sub
MfG
JöKe
oder so:
Sub Dateien_öffnen()
Dim zähler As Long, Pfad As String
Pfad = InputBox("Verzeichnis:", "Welches Verzeichnis?", Default:=CurDir)
If Pfad = "" Then Exit Sub
With Application.FileSearch
.NewSearch
.FileType = msoFileTypeExcelWorkbooks
.LookIn = Pfad
.SearchSubFolders = True
If .Execute <> 0 Then
For zähler = 1 To .FoundFiles.Count
Workbooks.Open Filename:=.FoundFiles.Item(zähler)
Next zähler
End If
End With
End Sub
MfG
JöKe
Antwort 3 von wundi123
danke erstmal!
aber:
die methode filesearch für das objekt _application ist fehlgeschlagen...
^^
aber:
die methode filesearch für das objekt _application ist fehlgeschlagen...
^^
Antwort 4 von JoeKe
Hallo wundi123,
ich vermute mal das bezieht sich auf meinen Code.
Welcher Zeile wird denn in der VBA Umgebeung gelb gekennzeichnet?
Gruß
ich vermute mal das bezieht sich auf meinen Code.
Welcher Zeile wird denn in der VBA Umgebeung gelb gekennzeichnet?
Gruß
Antwort 5 von wundi123
bezieht sicvh auf beide codes
und der code wird von excel als fehlerfrei geshcluckt... keine farbigen makierungen oder sonstige "proteste"
=/
und der code wird von excel als fehlerfrei geshcluckt... keine farbigen makierungen oder sonstige "proteste"
=/
Antwort 6 von nighty
hi all :)
sollten in beiden makros der selbe fehler kommen ist es wohl ein excel versionskonflikt,die filesearchmethode ist schon lange integriert und sollte immer funktionieren oder viellicht eine andere länderversion benutzt wird ?
ansonsten ratlos :(
gruss nighty
sollten in beiden makros der selbe fehler kommen ist es wohl ein excel versionskonflikt,die filesearchmethode ist schon lange integriert und sollte immer funktionieren oder viellicht eine andere länderversion benutzt wird ?
ansonsten ratlos :(
gruss nighty
Antwort 7 von nighty
hi all :)
die unterschiede der excel varianten (wie ländervarianten)sind enorm und mir fehlt es an grundlagen,bin halt nur ein amatuer,kann daher nur vermutungen anstellen.
gruss nighty
die unterschiede der excel varianten (wie ländervarianten)sind enorm und mir fehlt es an grundlagen,bin halt nur ein amatuer,kann daher nur vermutungen anstellen.
gruss nighty
Antwort 8 von CaroS
Hallo JöKe,
sorry, ich schon wieder :-) Habe gerade Deinen Code aus Antwort 2 getestet und festgestellt, dass er viel besser arbeitet als erwartet. Und das erscheint mir dann doch verdächtig. Ich konnte nämlich bei der Pfadeingabe in der Inputbox den größten Quark eingeben, Excel hat trotzdem immer auf das Verzeichnis zugegrifen, in dem meine aktuelle Datei gerade gespeichert ist.
Kann das sein?
Ich dachte nämlich, ach, probierste einfach mal, ob es vielleicht nur an einer weggelassenen Laufwerksbezeichnung liegt, aber ich konnte weglassen oder angeben was ich wollte, auch nicht existierende Ordner, das hat mein Excel (2002) alles nicht gestört. Leider kann ich nicht erkennen, warum das so ist.
Eigentlich wollte ich ja mithelfen, das Problem zu lösen, aber mit dem filesearch gibt´s bei mir weit und breit kein Problem.
Gruß,
CaroS
sorry, ich schon wieder :-) Habe gerade Deinen Code aus Antwort 2 getestet und festgestellt, dass er viel besser arbeitet als erwartet. Und das erscheint mir dann doch verdächtig. Ich konnte nämlich bei der Pfadeingabe in der Inputbox den größten Quark eingeben, Excel hat trotzdem immer auf das Verzeichnis zugegrifen, in dem meine aktuelle Datei gerade gespeichert ist.
Kann das sein?
Ich dachte nämlich, ach, probierste einfach mal, ob es vielleicht nur an einer weggelassenen Laufwerksbezeichnung liegt, aber ich konnte weglassen oder angeben was ich wollte, auch nicht existierende Ordner, das hat mein Excel (2002) alles nicht gestört. Leider kann ich nicht erkennen, warum das so ist.
Eigentlich wollte ich ja mithelfen, das Problem zu lösen, aber mit dem filesearch gibt´s bei mir weit und breit kein Problem.
Gruß,
CaroS
Antwort 9 von JoeKe
Hallo CaroS,
erstmal freut es mich das du meine Beiträge mit solcher interesse verfolgst. :-)
Das von dir beobachtete Verhalten ist leider richtig und ich kann es dir auch nicht erklären. Ich habe bishere nirgends eine Möglichkeit gefunden das zu unterdrücken. :-(
Werde mich morgen nochmal damit beschäftigen.
Gruß
JöKe
erstmal freut es mich das du meine Beiträge mit solcher interesse verfolgst. :-)
Das von dir beobachtete Verhalten ist leider richtig und ich kann es dir auch nicht erklären. Ich habe bishere nirgends eine Möglichkeit gefunden das zu unterdrücken. :-(
Werde mich morgen nochmal damit beschäftigen.
Gruß
JöKe
Antwort 10 von nighty
hi :)
hi ihr beiden :)
bei mir laeuft jöke sein makro ohne das beschriebene verhalten von caros :)))
gruss nighty
p.s.
vielleicht habt ihr beide einen poltergeist im haus grrr
hi ihr beiden :)
bei mir laeuft jöke sein makro ohne das beschriebene verhalten von caros :)))
gruss nighty
p.s.
vielleicht habt ihr beide einen poltergeist im haus grrr
Antwort 11 von fürLau
Die Größen am Boden Mirakolielsoft angelangt???
Gruß[h3]{[h1]Ó¤[sup...fürLau
Signatur wurde ganz und gar ohne SNTool erstellt.
Gruß[h3]{[h1]Ó¤[sup...fürLau
Signatur wurde ganz und gar ohne SNTool erstellt.