Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1784to1788
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

nur bestimmte Dateien aus Liste öffnen

nur bestimmte Dateien aus Liste öffnen
26.09.2020 15:03:05
Norman
Hallo weises Forum,
ich habe (auch in diesen) Forum nach einem ähnlichen Fall gesucht, aber nur unzureichende Lösungen gefunden.
Daher eine seperate Anfrage:
Ich möchte mit VBA nur bestimmte Dateien aus einer Tabelle mittels Bedingung per VBA öffnen (um die INDIREKT-Formeln berechnen zu lassen, die die zu öffnenden Datein benötigen).
Alternativ ginge es auch, eine Liste mit den zu öffnenden Dateien anzulegen, um die Bedingungsabfrage zu vermeiden, die die zu öffnenden Dateien ermitteln würde (SVERWEIS oder ZÄHLENWENNS).
Die Tabelle baut sich folgendermaßen auf:
Dateiname (A:A), Datei für aktuelles Quartal vorhanden? (B:B)
Nun sollen nur die Dateinamen geöffnet werden, die in Spalte B die Bedingung erfüllen. Alle anderen nicht. Alle zu potenziell zu öffnenden Dateien liegen in einem Ordner.
Ich habe Lösungen gefunden, die alle Dateien eines Ordners öffnen (falls gewünscht nur bestimmte Excel-Dateiformate. Diese Lösungwürde aber zu viel Rechenzeit beanspruchen, da mehrere hundert Dateien geöffnet werden müssten.
Meine Kenntnisse von VBA sind eher auf Beginner-Level. Daher suche ich mir noch die Dinge zusammen, die ich denke zu benötigen ;-)
Die Grundlage des Code zum öffnen einer Datei wäre diese:

Sub Referenz_Datei_öffnen()
Dim objWb As Workbook
Dim strVerzeichnis As String, strTyp As String, strDateiname As String
Dim Endung As String
Dim Trennstrich As String
Dim Pfad As String
Dim Wert As String
With Application
.EnableEvents = False
.ScreenUpdating = False
.DisplayAlerts = False
End With
Wert = Range("C9")
Quartal = Range("B9")
Trennstrich = "_"
Endung = ".xlsx"
strVerzeichnis = ActiveWorkbook.Path & "\" & Wert & Trennstrich & Quartal
strDateiname = Dir(strVerzeichnis & Endung)
do While strDateiname  ""
Set objWb = Workbooks.Open(Filename:=strDateiname)
Calculate
objWb.Close False
Next
With Application
.EnableEvents = True
.ScreenUpdating = True
.DisplayAlerts = True
.Calculation = lngCalc
End With
Set objWb = Nothing
End Sub

Ich würde gern den Code anpassen, damit er nun nur die Datein öffnet, die für das aktuelle Quartal als Wert in der Tabelle vorliegen.
Zur Zeit öffnet der Code nur eine einzelne (bestimmte) Datei (erstellt aus aus B9:C9 plus Trennstrich, aktuellem Quartalwert und Dateiendung). Das soll der automatischen Öffnung von Datein dienen, bei der sich der Dateiname varaibel selbst erstellt. Daher benötige ich die INDIREKT-Funktion (zur Verlinkung der auszulesenden Daten). Mit der INDIREKT-Funktion muss ich aber nur die zu öffnenden Dateien mittels VBA öffnen lassen.
Ih hoffe ich habe mich einigermaßen verständlich ausgedrückt und hoffe auf mögliche Antworten. Bisher fand ich immer Lösungen hier im Forum - diemal leider nicht.
Danke vorab
Norman

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: nur bestimmte Dateien aus Liste öffnen
26.09.2020 16:05:58
ralf_b
Nur aus Neugierde: do while - next funktioniert bei dir ?
AW: nur bestimmte Dateien aus Liste öffnen
30.09.2020 12:58:05
Norman
Hallo Ralf,
:-) sicher geht dies bei mir. Ich hab nur das Problem, dass ich irgendwie eine Denkstruktur besitze, die es mir deutlich erschwert die Schleifen-Logik ins Bewusstsein zu bekommen - ich kappiers einfach nicht!
Werd´ mir mal andere Do-While-Bsp anschauen, ob ich das was finde. Scheinbar ist die Lösung so einfach/nahe das ich wohl keine direkte Hilfe bekomme ;-)
Trozdem Danke
Norman
AW: nur bestimmte Dateien aus Liste öffnen
30.09.2020 13:13:03
Norman
Beitrag als noch offen markiert, da Lösung noch nicht gefunden
-Norman
AW: nur bestimmte Dateien aus Liste öffnen
30.09.2020 22:34:41
ralf_b
Hallo Norman,
Ich frage ja nicht umsonst. Es gibt do while, oder for next Schleifen . Aber do next gibts nicht. Bei mir läuft der Debugger auf einen Fehler "Next ohne for". Es ist nicht hilfreich für eine Lösungssuche das man einen Code vorgesetzt bekommt, der angeblich funktioniert aber gar nicht funktionieren kann.
Nun zu deinem Problem. Also du benötigst eine Schleife über den Zellbereich wo die Dateinamen drin stehen. Zumindest hab ich das so verstanden.
z.b.
for i = ersteZeile to letzteZeile
' Für jede Zelle im Bereich prüfst du die Bedingung mit einer If abfrage z.b.
If Range("B" & i) = "x" then
' zusammenbau des Pfades
'Öffnen der datei
end if
next
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige