Mit Workbooks.Open("Name") öffne ich die Datei jedoch doppelt. Das will ich nicht.
Wie mache ich es, daß ich erkenne, daß die Datei offen ist und ich dann in die schon offene Datei schreibe?
Schon einmal herzlichen Dank für die Hilfe
Mit Workbooks.Open("Name") öffne ich die Datei jedoch doppelt. Das will ich nicht.
Wie mache ich es, daß ich erkenne, daß die Datei offen ist und ich dann in die schon offene Datei schreibe?
Schon einmal herzlichen Dank für die Hilfe
Function DateiIstFrei(ByVal sDateiname As String) As Boolean
Dim hFile As Integer
On Error Resume Next
hFile = FreeFile()
Open sDateiname For Random Access Read Lock Read Write As #hFile
If Err Then
DateiIstFrei = False
Else
DateiIstFrei = True
End If
Close #hFile
End Function
aufrufen musst du mit:
If DateiIstFrei("C:\Mappe.xls") = False Then
MsgBox "Datei ist geöffnet"
end if
die Funktion gibt False zurück wenn die Datei geöffnet ist, andernfalls gibt sie True zurück
Versuch's mal so ...
' wb ist das Objekt
Code eingefügt mit Syntaxhighlighter 1.15
Option Explicit
'
Dim wb As Excel.Workbook
' Irgendeine Sub
On Error Resume Next
Set wb = myExcel.Workbooks("DeineDatei.xls")
If wb Is Nothing Then
Set wb = myExcel.Workbooks.Open("C:\DeinPfad\DeineDatei.xls")
End If
On Error GoTo 0
' End Sub
Gruß
Thomas
Risi Thomas Softwareentwicklung
'diese Zeile anpassen
DeineDatei="C:\Eigene Dateien\Mappe1.xls"
Antwort=DateiIstFrei(DeineDatei)
If Antwort=False Then MsgBox "Datei ist geöffnet"
aktiviere einfach die Mappe und fang den Fehler ab, falls sie nicht geöffnet ist.
Gruss Udo
Mein Problem ist, daß ich keine MessageBox ausgeben möchte, sondern an dieser Stelle habe ich eine Variable vom Typ Excel.Workbook, welches initialisiert werden soll, genau mit der Datei, die geöffnet wurde. Ich untersuche nämlich im nächsten Schritt, ob ein bestimmtes Blatt existiert.
kleine Ergänzung
Gruss Udo
bekomme ich den Fehler:
Laufzeitfehler 9
Ich habe auch schon geprüft, ob ich den falschen Namen eintrage. Das ist nicht der fall. Was kann ich da tun.
Danke und viele Grüße
Dunja
Gruss Udo