Office Forum
www.Office-Loesung.de
Access :: Excel :: Outlook :: PowerPoint :: Word :: Office :: Wieder Online ---> provisorisches Office Forum <-
In Access feststellen, welche Excel-Dateien offen sind?
zurück: Tabellen löschen und neu verknüpfen weiter: Kombinationsfeld Filterung VBA 2 Kriterien Unbeantwortete Beiträge anzeigen
Neues Thema eröffnen   Neue Antwort erstellen     Status: Feedback Facebook-Likes Diese Seite Freunden empfehlen
Zu Browser-Favoriten hinzufügen
Autor Nachricht
tiger17
Fortgeschritten


Verfasst am:
09. Sep 2010, 15:16
Rufname: tigi
Wohnort: Berlin

In Access feststellen, welche Excel-Dateien offen sind? - In Access feststellen, welche Excel-Dateien offen sind?

Nach oben
       Version: Office 2003

Hallo zusammen,

mal wieder wende ich mich vertrauensvoll an euch... ich habe folgendes Problem:

Ich kann unter Access eine Excel-Datei öffnen und bearbeiten, dazu erstelle ich ein Objekt:
Code:
    'Open Connection and Excel
    Set MyDB = Application.CurrentDb
    Set MyExcel = CreateObject("Excel.Application")
    MyExcel.Visible = True
    MyExcel.Application.Workbooks.Open MyExportPath
    'Hier folgt, was dann in Excel passieren soll
Wenn die Datei, die ich bearbeiten möchte, schon vorher offen ist, kommt Windows dabei ziemlich durcheinander, öffnet schreibgeschützt oder unsichtbar. Deshalb möchte ich vorher prüfen, ob die Datei bereits offen ist. Erster Ansatz war erstmal die Auflistung widerzugeben:
Code:
    For Each MyWB In Workbooks
        Debug.Print MyWB.Name
    Next MyWB
Da hat sich nie was getan - offenbar sind alle parallel geöffneten Workbooks aus Access heraus unsichtbar! Mad

Wenn ich dasselbe weiter unten im Code mache, also dort, wo ich die Datei per vba bereits geöffnet habe, zeigt mir die Auflistung nur die so geöffnete Datei, und der "Zwilling", der vorm Aufruf des Codes schon offen war, steht nicht im Direktfenster!

Das ist der Code nach dem "zweiten" der Datei per vba:
Code:
    For Each MyWB In MyExcel.Application.Workbooks
        Debug.Print MyWB.Name
    Next MyWB
Kann man da irgendwas machen? Bin auch hin und wieder auf das Stichwort "Shell" gestoßen, kann das aber nicht richtig einordnen - kennt jemand dafür vielleicht ein gutes Tutorial??

Also, freue mich auf Antworten Razz

VG tiger17
Louisleon
man muß nicht alles wissen...


Verfasst am:
10. Sep 2010, 12:55
Rufname:


AW: In Access feststellen, welche Excel-Dateien offen sind? - AW: In Access feststellen, welche Excel-Dateien offen sind?

Nach oben
       Version: Office 2003

Hallo,

ich vermute Du meinst wenn die Datei bereits durch einen anderen Benutzer oder eine andere Instanz geöffnet ist.

Schau Dir doch mal diesen Thread (Excel 2003 - VBA File already opened) an, der sollte Dir weiterhelfen.

Gruß

LL
Gast



Verfasst am:
10. Sep 2010, 14:12
Rufname:

AW: In Access feststellen, welche Excel-Dateien offen sind? - AW: In Access feststellen, welche Excel-Dateien offen sind?

Nach oben
       Version: Office 2003

@tiger17: In einer von Dir neu geöffneten Excelinstanz können nur die Arbeitsmappen offen sein, die Du selber geöffnet hast. Alles andere sollte Dich extrem nachdenklich stimmen.
Zum Überblick schaue Dir die aktiven Prozesse im Taskmanager an.

Um die Instanz einer geöffneten Mappe zu ermitteln, müsstest Du die GetObject-Methode auf die Mappe verwenden. Wenn die einen (auffangbaren) Fehler erzeugt, ist die Mappe geschlossen und kann so wie oben verwendet geöffnet werden. Ohne Fehler hättest Du sofort die benötigte Referenz.

Eine andere alternative Methode zur Prüfung: Datei in Benutzung?
tiger17
Fortgeschritten


Verfasst am:
14. Sep 2010, 14:35
Rufname: tigi
Wohnort: Berlin

AW: In Access feststellen, welche Excel-Dateien offen sind? - AW: In Access feststellen, welche Excel-Dateien offen sind?

Nach oben
       Version: Office 2003

Hallo Forum!

Vielen Dank für eure Antworten, die wahren genau richtig und haben es in Kombination gebracht Very Happy

Das tückische ist offenbar tatsächlich, dass eine eigenständige Instanz von Excel geöffnet wird, wenn man ein Excel-Objekt aus Access heraus erstellt. Man kann dann nicht einfach das andere Fenster anzeigen lassen... Daher habe ich es zunächst mal mit dem Hinweis von Gast probiert, eine Fehlermeldung mit GetObject zu provozieren. Leider hat das keinen Fehler hervorgerufen, warum auch immer..

Jedenfalls habe ich jetzt auch die Funktion implementiert, die prüft, ob die betreffende Excel Datei offen ist, indem sie versucht, sie exklusiv zu öffnen:

Code:

Public Function CheckFile(MyTestFile As String) As Boolean
Dim MyFileNumber, MyErrorNumber As Long

On Error Resume Next

MyFileNumber = FreeFile()   'Das ist die nächste Indexnummer die zum Öffnen benutzt werden kann
Open MyTestFile For Input Lock Read As #MyFileNumber
Close MyFileNumber

MyErrorNumber = Err
Select Case MyErrorNumber
    Case 0: CheckFile = False
    Case 70: CheckFile = True
    Case Else: MsgBox "Unknown Error" & MyErrorNumber
End Select

On Error GoTo 0     'Deaktiviert das Resume Next

End Function

Wer sich wie ich mit dem open/close von oben schwer tut: Die Datei wird nicht wirklich in Excel geöffnet, ich hatte ja Zweifel, das das dann ewig dauern würde - es geht aber ganz schnell!

Meine Prozedur erstellt jetzt nur dann ein neues Objekt mit CreateObject, wenn die Datei nicht offen ist. Ist sie es doch, dann "holt" sie sich das Objekt einfach:
Code:
'Mit der Funktion CheckFile prüfen, ob Datei offen ist
If CheckFile(MyExportPath) = True Then
    Set MyExcel = GetObject(MyExportPath)                          'Objekt holen
    MyExcel.Application.Workbooks(MyFileName).Activate               'aktivieren
Else
    Set MyExcel = CreateObject("Excel.Application")              'Objekt erstellen
    MyExcel.Visible = True
    MyExcel.Application.Workbooks.Open MyExportPath                 'ist dann eh aktiviert
End If

AppActivate ("Microsoft Excel")         'Excel anzeigen

Dann kann ganz normal mit dem aktiven Sheet weitergearbeitet werden Wink

Also nochmal vielen Dank ans Forum - melde mich sicher bald wieder Laughing

tigi
tiger17
Fortgeschritten


Verfasst am:
15. Sep 2010, 13:19
Rufname: tigi
Wohnort: Berlin


AW: In Access feststellen, welche Excel-Dateien offen sind? - AW: In Access feststellen, welche Excel-Dateien offen sind?

Nach oben
       Version: Office 2003

Kleiner Nachtrag: AppActivate verursacht einen Fehler ("Ungültiges Argument"), wenn Excel vorher mal abgestürzt ist, egal, mit welcher Datei. Das verschwindet, sobald man Windows neu gestartet hat...

VG tigi

_________________
Ich hab Nerven aus Stahl! Außer dann, wenn mein PC meine Absichten nicht von selbst erkennt - argh!
Neues Thema eröffnen   Neue Antwort erstellen Alle Zeiten sind
GMT + 1 Stunde

Diese Seite Freunden empfehlen

Seite 1 von 1
Gehe zu:  
Du kannst Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.
Du kannst Dateien in diesem Forum nicht posten
Du kannst Dateien in diesem Forum herunterladen

Verwandte Themen
Forum / Themen   Antworten   Autor   Aufrufe   Letzter Beitrag 
Keine neuen Beiträge Access Programmierung / VBA: ExcelDateien durchsuchen in einer Spalte code beschleunigen 8 Nils88 193 10. Jan 2013, 12:09
Nils88 ExcelDateien durchsuchen in einer Spalte code beschleunigen
Keine neuen Beiträge Access Programmierung / VBA: Import von Excel-Dateien - möglichst fehlerfrei 43 MissPh! 2276 10. Apr 2012, 12:23
MissPh! Import von Excel-Dateien - möglichst fehlerfrei
Keine neuen Beiträge Access Programmierung / VBA: Auslesen alles Excel-Dateien eines Ordners und Importieren 6 ingarudi 295 03. Sep 2010, 11:40
ingarudi Auslesen alles Excel-Dateien eines Ordners und Importieren
Keine neuen Beiträge Access Tabellen & Abfragen: Verknüpfen von Excel-Dateien und Zusammenfassung der Daten 6 onkelbobby 1423 28. Apr 2010, 15:35
onkelbobby Verknüpfen von Excel-Dateien und Zusammenfassung der Daten
Keine neuen Beiträge Access Tabellen & Abfragen: Erledigt oder offen filtern 22 ranti 1122 10. Apr 2010, 18:35
ranti Erledigt oder offen filtern
Keine neuen Beiträge Access Programmierung / VBA: Frontendversion feststellen 9 gisiangel 391 21. Feb 2010, 20:16
gisiangel Frontendversion feststellen
Keine neuen Beiträge Access Tabellen & Abfragen: Import von Excel-Dateien in ACCESS-Datenbank 1 mjuliusg 502 25. Jan 2009, 20:47
jens05 Import von Excel-Dateien in ACCESS-Datenbank
Keine neuen Beiträge Access Programmierung / VBA: Excel-Dateien suchen und in Access importieren 1 H1 1513 28. Aug 2008, 10:33
Moeffz_ Excel-Dateien suchen und in Access importieren
Keine neuen Beiträge Access Formulare: 2 Formulare gleichzeitig offen 2 Frankster 401 25. Aug 2008, 12:53
Frankster 2 Formulare gleichzeitig offen
Keine neuen Beiträge Access Programmierung / VBA: Zugriff auf Exceldateien für Transferspreadsheet 8 Etze 710 05. Mai 2008, 11:11
Etze Zugriff auf Exceldateien für Transferspreadsheet
Keine neuen Beiträge Access Programmierung / VBA: Dimension eines Arrays feststellen 6 Darkness 3713 04. Apr 2008, 09:44
Darkness Dimension eines Arrays feststellen
Keine neuen Beiträge Access Programmierung / VBA: Auswertung von Excel-Dateien in Access? 2 Anfänger2008 496 26. Dez 2007, 12:48
Mo1982 Auswertung von Excel-Dateien in Access?
 

----> Diese Seite Freunden empfehlen <------ Impressum - Besuchen Sie auch: Expression Web Forum