Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
756to760
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
756to760
756to760
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Schreibschutz von Dateien

Schreibschutz von Dateien
25.04.2006 12:50:13
Dateien
Hallo liebe Excel Gemeinde,
eventuell kann mir jemand helfen. Ich möchte per VBA .xls Dateien öffnen, aber brauche die Benachrichtigung, falls diese Datei schon von jemand anders geöffnet ist. Da in dieser Datei was geschrieben werden soll, muss sie frei sein.
Die Logik wäre demzufolge:




Was ich wissen möchte, wie schreibt man diese Prüfung!
Vielen Dank
joe

7
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Schreibschutz von Dateien
25.04.2006 13:13:20
Dateien
Hallo,
mal so als Anstoß:
If activeworkbook.readonly then....
Gruß
Geist ist geil!
(Dies ist ein allgemeines Statement und nicht an bestimmte Personen gerichtet.)
AW: Schreibschutz von Dateien
25.04.2006 13:16:23
Dateien
Hallo Joe,
hilft Dir dieses Makro mit zugehöriger benutzerdefinierter Funktion weiter?

Sub DateiZustand()
Dim Pfad As String, _
iOpen As Byte
Pfad = "Y:\Daten\MappeA.xls"
iOpen = DateiIstFrei(Pfad)
Select Case iOpen
Case 0
MsgBox "Datei " & Pfad & " ist frei !"
Case 1
MsgBox "Datei " & Pfad & " ist geöffnet !"
Case 2
MsgBox "Datei " & Pfad & " wurde nicht gefunden !"
End Select
End Sub


Function DateiIstFrei(sDateiname As String) As Byte
If Dir(sDateiname) = "" Then
DateiIstFrei = 2
Else
On Error GoTo ERRORHANDLER
Open sDateiname For Random Access Read Lock Read Write As #1
Close #1
End If
ERRORHANDLER:
If Err = 70 Then DateiIstFrei = 1
End Function

Viel Erfolg wünscht
WernerB.
P.S.: Dieses Forum lebt auch von den Rückmeldungen der Fragesteller an die Antworter !
Anzeige
AW: Schreibschutz von Dateien
25.04.2006 14:01:09
Dateien
Vielen Dank Werner
das Makro klappt, oder ich hab nur Teile verwendet, sehr gut. könntest du mir fürs bessere Einbinden die folgende Zeile genauer erklären, insbesondere den hinteren Teil (ab FOR RANDOM ...)
Open sDateiname For Random Access Read Lock Read Write As #1
Close #1
Vielen Dank
AW: Schreibschutz von Dateien
25.04.2006 14:13:14
Dateien
Hallo Joe,
das Makro ist nicht auf meinem Mist gewachsen, deshalb kann ich es auch nur unzureichend erklären.
Mit meinem (gefährlichen!) Halbwissen vermute ich, dass hier eine temporäre Datei geöffnet und wieder geschlossen wird.
Gruß
WernerB.
AW: Schreibschutz von Dateien
25.04.2006 14:25:24
Dateien
Hallo Joe und Werner,
Für Un-, Halb- und Ganzwissende, wie Du und ich ist immer mal wieder die Hilfe gut, die da sagt:
Open-Anweisung
Syntax
Open Pfadname For Modus [Access Zugriff] [Sperre] As [#]Dateinummer [Len=Satzlänge]
Die Syntax der Open-Anweisung besteht aus folgenden Teilen:
Teil Beschreibung
Pfadname Erforderlich. Zeichenfolgenausdruck, der einen Dateinamen festlegt und auch Verzeichnis- oder Ordner- sowie ein Laufwerksangaben enthalten kann.
Modus Erforderlich. Schlüsselwort, das den Zugriffsmodus für die Datei festlegt: Append, Binary, Input, Output oder Random. Wenn kein Modus festgelegt ist, wird die Datei im Zugriffsmodus Random geöffnet.
Zugriff Optional. Schlüsselwort, das die Operationen festlegt, die auf der geöffneten Datei ausgeführt werden können: Read, Write oder Read Write.
Sperre Optional. Schlüsselwort, das die Operationen festlegt, die von anderen Prozessen auf der geöffneten Datei ausgeführt werden können: Shared, Lock Read, Lock Write und Lock Read Write.
Dateinummer Erforderlich. Eine gültige Dateinummer im Bereich von 1 bis 511 (einschließlich). Mit der FreeFile-Funktion erhalten Sie die nächste verfügbare Dateinummer.
Satzlänge Optional. Zahl kleiner oder gleich 32.767 (Bytes). Bei Dateien mit wahlfreiem Zugriff ist dies die Datensatzlänge, bei sequentiellen Dateien die Anzahl der gepufferten Zeichen.
Bemerkungen
Sie müssen eine Datei öffnen, bevor E/A-Operationen darauf ausgeführt werden können. Open reserviert einen E/A-Puffer für die Datei und legt den Zugriffsmodus für diesen Puffer fest.
Wenn die durch Pfadname angegebene Datei nicht existiert, wird sie angelegt, sobald eine Datei im Modus Append, Binary, Output oder Random geöffnet wird.
Wenn die Datei bereits von einem anderen Prozeß geöffnet wurde und der angegebene Zugriffsmodus nicht zulässig ist, wird die Open-Operation abgebrochen, und es tritt ein Fehler auf.
Im Modus Binary wird der Len-Abschnitt nicht beachtet.
Wichtig In den Modi Binary, Input und Random können Sie eine Datei mit einer anderen Dateinummer öffnen, ohne sie zuvor schließen zu müssen. In den Modi Append und Output müssen Sie eine Datei erst schließen, bevor sie mit einer anderen Dateinummer geöffnet werden kann.
Gruss Hansueli
Anzeige
AW: Schreibschutz von Dateien
25.04.2006 15:51:39
Dateien
hallo Hansueli,
ganz schlau bin ich aus deiner beschreibung noch nicht. insbesondere das Neuanlegen, bei Nichtvorhandensein, macht mich nervös. Deswegen schreibe ich unten mal nen Auszug aus meinem Code. Hoffe der reicht.
Auf keinen Fall darf was überschrieben werden, sondern immer nur das geöffnet was da ist und falls geöffnet eine Mitteilung an mich. Was ist die Einschätzung zu diesem Code, kriegt der das hin?
Zweite Frage: was bedeutet die Dateinummer? ist die #1 die richtige?
Vielen Dank im vorraus
gruß, joe
While zieldateiname ""
On Error GoTo FEHLERHANDLER
Open (Laufwerk & PfadZ & zieldateiname) For Random Access Read Lock Read Write As #1
Close #1
'Damit wird ein Fehler verursacht, sobald die zieldatei bereits geöffnet ist. Bei Fehler springt der in die Fehlerschleife
Set zieldatei = Application.Workbooks.Open(Laufwerk & PfadZ & zieldateiname, 1, 0)
'eigentliches Öffnen der Zieldatei
Call Veraenderung(zieldatei, exlCodePfade, NiederlassunG, BST, a)
weiter:
zieldateiname = Dir
Wend
Exit Sub
FEHLERHANDLER:
exlCodePfade.Worksheets("Fehler").Cells(a, 1) = BST
exlCodePfade.Worksheets("Fehler").Cells(a, 2) = i
exlCodePfade.Worksheets("Fehler").Cells(a, 3) = Err.Number
exlCodePfade.Worksheets("Fehler").Cells(a, 4) = NiederlassunG
a = a + 1
resume weiter
End sub
Anzeige
AW: Schreibschutz von Dateien
25.04.2006 17:39:49
Dateien
Hallo Joe,
Das ist nicht meine Beschreibung, sondern die von Microsoft.
Wenn Du im VB Editor den Cursor auf Open stehen hast und F1 drückst kommt's ...
Also, da Du mit "Access Read" öffnest, kannst Du auch nicht darauf schreiben.
#1 identifiziert den Datei-Handle für alle folgenden Befehle, d.h. wenn Du mehrere verschiedene Dateien gleichzeitig öffnest, gibst Du Ihnen halt Nummern wie #1 #2 #3 etc.
Da Du nur 1 Datei öffnest und auch gleich wieder schliesst (Close #1) genügt die #1 völlig.
Gruss Hansueli

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige