Anzeige
Archiv - Navigation
1228to1232
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

Dateien öffnen und wieder schliessen

Dateien öffnen und wieder schliessen
Peter
Guten Abend
In Zeile 3 (Spalte B bis L) stehen 10 Dateinamen (möglicherweise einige mehrmals), der Pfad (immer gleich) ist in einer Variable enthalten. Die Dateien sind möglicherweise offen, oder eben nicht.
Am Anfang des Subs sollen alle Dateien die geschlossen sind, geöffnet werden.
Anschliessend läuft der eigentliche Code ab (diverse Abfragen).
Dann möchte ich alle Dateien, die nicht offen waren, wieder schliessen - ohne zu speichern. Nicht klar ist mir, wie ich die Dateien in eine Variable schreibe, die durch den ablaufenden Code geöffnet werden.
Codestruktur
- alle Dateinamen aus B3 bis L3 überprüfen ob offen
- wenn nicht offen, Dateiname in Variable xyz schreiben, resp. diese mit weiterem Dateiamen ergänzen
- nachdem alle Dateien offen, eigentlicher Code ablaufen lassen (diverse Abfragen)
anschliessend
- alle Dateien, deren Name in Variable xyz gespeichert sind schliessen ohne zu speichern.
Meine Fragen:
- wie muss ich die Variable xyz dimensionieren
- wie weise ich die einzelnen Dateinamen zu
- wie arbeite ich die der Variable zugewiesenen Dateinamen ab
Danke für jeden Hinweis.
Gruss, Peter

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

Betreff
Benutzer
Anzeige
AW: Dateien öffnen und wieder schliessen
09.09.2011 22:28:02
Josef

Hallo Peter,
das geht z. B. so.

Sub AufZu()
  Dim objWB As Workbook, objWBOpen As Workbook
  Dim rng As Range
  Dim vntOpen() As Variant
  Dim lngIndex As Long
  Dim strPath As String
  Dim bolOpen As Boolean
  
  strPath = "E:\Forum\"
  
  Redim vntOpen(0)
  
  For Each rng In ThisWorkbook.Sheets("Tabelle1").Range("B3:M3") 'Tabellenname anpassen
    If rng <> "" Then
      bolOpen = False
      If Dir(strPath & rng.Text, vbNormal) <> "" Then
        For Each objWB In Application.Workbooks
          If objWB.FullName = strPath & rng.Text Then
            bolOpen = True
            Exit For
          End If
        Next
        If Not bolOpen Then
          If IsError(Application.Match(strPath & rng.Text, vntOpen, 0)) Then
            Redim Preserve vntOpen(lngIndex)
            vntOpen(lngIndex) = strPath & rng.Text
            lngIndex = lngIndex + 1
            Workbooks.Open (strPath & rng.Text)
          End If
        End If
      End If
    End If
  Next
  
  'dein Code
  '...
  
  If lngIndex > 0 Then
    For Each objWB In Application.Workbooks
      If Not IsError(Application.Match(objWB.FullName, vntOpen, 0)) Then
        objWB.Close , False
      End If
    Next
  End If
  
End Sub



« Gruß Sepp »

Anzeige
AW: Dateien öffnen und wieder schliessen
12.09.2011 08:18:54
Peter
Hallo Sepp
Das funktioniert ausgezeichnet!
Vielen Dank und Gruss, Peter
AW: Dateien öffnen und wieder schliessen
12.09.2011 14:45:35
Peter
Hallo Sepp
Bei einem der Files, das ich öffne und wieder schliesse, kommt
bei objWB.Close, False
die Meldung: "Sollen Ihre Änderungen in ...........xls' gespeichert werden?
Geändert habe ich nichts, doch im betreffenden Workbook hat es Codes, die beim Öffnen automatisch ausgeführt werden. Allerdings ist nirgends ein Speicherbefehl enthalten.
Ich habe mir nun mit der temporären Ausschaltung von Alters geholfen
Application.DisplayAlerts = False
Gibt es eine bessere Lösung?
Gruss, Peter
'Geöffnete Files schliessen, falls nicht vor Ablauf des Codes bereits offen
Application.DisplayAlerts = False
If lngIndex > 0 Then
For Each objWB In Application.Workbooks
If Not IsError(Application.Match(objWB.FullName, vntOpen, 0)) Then
objWB.Close , False
End If
Next
End If
Application.DisplayAlerts = True
End Sub
Anzeige
AW: Dateien öffnen und wieder schliessen
12.09.2011 17:06:34
Peter
Hallo Sepp
Ich hae das Problem gefunden. Ich habe die Pfade, soweit Buchstaben enthalten waren, jeweils mit Grossbuchstaben geschrieben. Nun habe ich entdeckt, dass die Pfade auf dem Server teileweise auch in Kleinbuchstaben vorkommen. Damit ich bei solchen Unterschieden trotzdem TRUE erhalte, wenn das File schon offen ist, habe ich folgende Anpassung vorgenommen:
If UCase(objWB.FullName) = UCase(strPathStatistikFile & rng.Text) Then
bolOpen = True
Gruss, Peter

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige