Supportnet Computer
Planet of Tech

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

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

Antwort 3 von wundi123

danke erstmal!

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ß

Antwort 5 von wundi123

bezieht sicvh auf beide codes

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

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

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

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

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

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.

Ich möchte kostenlos eine Frage an die Mitglieder stellen:


Ähnliche Themen:


Suche in allen vorhandenen Beiträgen: