offene Excel Dateien prüfen

12/01/2010 - 18:30 von Hubert Holler | Report spam
Ich verwende folgenden Code um eine bereits geöffnete Excel Datei zu prüfen.
Sobald diese geöffnet ist soll sie ausgewàhlt werden.

Dim bExists As Boolean
Dim oWorkbook As Object
Dim i As Integer

Dim xlApp As Object
Set xlApp = CreateObject("Excel.Application")


With xlApp
' Prüfen ob Datei bereits geöffnet ist
bExists = False
For i = 1 To .Workbooks.Count
If .Workbooks(i).name = "c:\programme\abrechnung\export_gesamt.xls"
Then
.Workbooks(i).Activate
bExists = True
Exit For
End If
Next i

Wenn ich aber die Datei exort_gesamt.xls öffne und ich im Code in die Zeile
For i = 1 To .Workbooks.Count komme, erhalte ich bei .Workbooks.Count 0 als
Ergebnis. Ich habe als Verweis Excel Application 11.0 Object Libary
eingebunden, da ich Office 2003 verwende. Ich habe aber auch Office 2007 auf
dem selben Rechner installiert. Ich habe aber die Datei export_gesamt.xls
mit Excel 2003 geöffnet.

Keine Ahnung was ich da falsch mache.

Hoffe da kann mir jemand weiterhelfen.
Vielen Dank
 

Lesen sie die antworten

#1 Peter Wenzel
12/01/2010 - 19:08 | Warnen spam
Hallo Hubert,

ich prüfe dies mit dieser Funktion im Modul:

Function fctFileOccupied(file As String) As Boolean

Dim hFile As Integer
hFile = FreeFile

Debug.Print file
On Error Resume Next
Open file For Binary Access Read Write Lock Read Write As hFile
Debug.Print Err
Select Case Err
Case 0
fctFileOccupied = False
Case 70
fctFileOccupied = True
Case Else
fctFileOccupied = Err
End Select
Close hFile
On Error GoTo 0

End Function

Aufruf mit:

If fctFileOccupied(file) = True Then
MsgBox "Der Beilagenauftrag wird gerade von einem anderen Benutzer
verwendet!", vbOKOnly
Exit Sub
Else

... weiter im Text ...

Das klappt sehr zuverlàssig


Gruß
Peter


Hubert Holler schrieb :
Ich verwende folgenden Code um eine bereits geöffnete Excel Datei zu prüfen.
Sobald diese geöffnet ist soll sie ausgewàhlt werden.

Dim bExists As Boolean
Dim oWorkbook As Object
Dim i As Integer

Dim xlApp As Object
Set xlApp = CreateObject("Excel.Application")


With xlApp
' Prüfen ob Datei bereits geöffnet ist
bExists = False
For i = 1 To .Workbooks.Count
If .Workbooks(i).name = "c:\programme\abrechnung\export_gesamt.xls"
Then
.Workbooks(i).Activate
bExists = True
Exit For
End If
Next i

Wenn ich aber die Datei exort_gesamt.xls öffne und ich im Code in die Zeile
For i = 1 To .Workbooks.Count komme, erhalte ich bei .Workbooks.Count 0 als
Ergebnis. Ich habe als Verweis Excel Application 11.0 Object Libary
eingebunden, da ich Office 2003 verwende. Ich habe aber auch Office 2007 auf
dem selben Rechner installiert. Ich habe aber die Datei export_gesamt.xls mit
Excel 2003 geöffnet.

Keine Ahnung was ich da falsch mache.

Hoffe da kann mir jemand weiterhelfen.
Vielen Dank



Ich verwende Office 2003 - SP3

PS: Ein Nichtraucherbereich im Restaurant, ist genauso sinnvoll, wie
eine Pinkelzone im Pool

Ähnliche fragen