Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
892to896
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
892to896
892to896
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Dateizugriff

Dateizugriff
09.08.2007 09:24:00
Manfred
Hallo zusammen,
ich habe da ein Problem, und keine vernünftige Lösung.
Zuerst der Ablauf: Auf einem Rechner werden alle 2 Sekunden Daten (Zahlen) gesammelt und dann per Copy-Befehl auf einen Server kopiert (26 Dateien im Textformat: z.B. Band.TXT).
Diese Daten (Dateien) weden von ca. 20-100 Rechnern durch Excel-Macros im Rythmus von 5-7 Sekunden ausgelesen.
Nun das Problem: Es passiert jetzt immer häufiger (weil mehr Rechner zugreifen), das eine (beliebige) Datei durch einen der 20-100 Rechnern geöffnet, aber nicht mehr geschlossen wird (ca. 1-5 mal pro Tag) .
Dadurch können "alle" Rechner diese Datei leider nicht mehr öffnen.
Nun meine Frage: Wie kann man diese Dateien trotzdem nochmal öffnen, oder sollte ich einen anderen Weg einschlagen. Ich möchte aber eine Datenbank (aus organisatorischen Gründen) auf jeden Fall vermeiden (also entweder Xls oder Txt Dateien).
Desweiteren währe eine HTML-Lösung aus Zeitgründen nicht möglich.
Hier der Quelltext zum Auslesen der Datei:

Sub Calculat()
Dim Wert(41), Werte
Dim Dateinummer, Index As Integer
Dim Dateiname As String
On Error GoTo Error_Handler
Dateinummer = FreeFile
Dateiname = "Bock_6W_PLC2" & ".TXT"
Open PfadVisualisierungExtern & Dateiname For Input As #Dateinummer
Do While Not EOF(Dateinummer)
Input #Dateinummer, Index, Werte
Wert(Index) = Werte
Loop
Close #Dateinummer
Wert_Tag = Wert(3)
Wert_Frueh = Wert(4)
Wert_Spaet = Wert(5)
Wert_Nacht = Wert(6)
Error_Handler:
If Err.Number  0 Then
Err.Clear    ' Clear Err object properties.
End If
On Error Resume Next
On Error GoTo 0
End Sub


6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Dateizugriff
09.08.2007 09:37:36
Ramses
Hallo
ungetestet aber probier mal
Open PfadVisualisierungExtern & Dateiname For Input Shared As #Dateinummer
Dann kann die Datei mehrfach geöffnet werden.
Optionen/Limitation zur Open-Methode findest du auch in der VBA-Online-Hilfe
Gruss Rainer

AW: Dateizugriff
09.08.2007 10:16:00
Manfred
Hallo Ramses,
ich habe schon alle Kombinationen von Input und Output mit und ohne Shared ausprobiert, leider ohne Erfolg.
Gruß Manfred

Noch offen...
09.08.2007 10:21:23
Ramses
Hallo
"..Dadurch können "alle" Rechner diese Datei leider nicht mehr öffnen...."
Das ist nicht möglich, wenn die Datei mit "Shared" geöffnet wird.
"..ich habe schon alle Kombinationen von Input und Output ..."
Das klingt etwas absurd.
Warum sollte eine Datei mit "Output" geöffnet werden, wenn sie zum einlesen "Input" benötigt wird.
Sorry,.. der Code als solches funktioniert.
Vielleicht solltet ihr wirklich mal über eine Datenbank nachdenken die abgefragt werden kann.
Gruss Rainer

Anzeige
AW: Noch offen...
09.08.2007 13:27:56
Manfred
Hallo Ramses,
ich meinte eigentlich "Input, Random, Output".
Output habe ich ausprobiert, um zu testen, ob die Datei danach von einem anderen Rechner mit Input geöffnet werden kann (einfach um alle Kombinationsmöglichkeiten auszuprobieren).
Trotzaledem, wenn ich mit einem Rechnermacro die Datei geöffnet habe, können die anderen Rechner nicht mehr zugreifen und springen zum "Error_Handler:".
Gruß Manfred

AW: Noch offen...
09.08.2007 19:17:00
Ramses
Hallo
Probier das mal aus

Sub testOpen()
    Dim openFile As String
    Dim arr1(3), arr2(3), arr3(3)
    Dim i As Integer
    openFile = "C:\Test.txt"
    Open openFile For Input Shared As #1
    Open openFile For Input Shared As #2
    Open openFile For Input Shared As #3
    i = 0
    Do While Not EOF(1)
        Line Input #1, arr1(i)
        i = i + 1
    Loop
    i = 0
    Do While Not EOF(2)
        Line Input #2, arr2(i)
        i = i + 1
    Loop
    i = 0
    Do While Not EOF(3)
        Line Input #3, arr3(i)
        i = i + 1
    Loop
    MsgBox "Aus 1. öffnen: " & arr1(0)
    MsgBox "Aus 2. öffnen: " & arr2(1)
    MsgBox "Aus 3. öffnen: " & arr3(2)
    Close #1
    Close #2
    Close #3
End Sub

Speichere eine Textdatei in "C:\Test.txt" mit diesem Inhalt
Muster 1
Muster 2
Muster 3
Die Daten werden aus unterschiedlichen Arrays aber von der gleichen Datei eingelesen.
Die Datei wurde 3x zur gleichen Zeit geöffnet.
Gruss Rainer

Anzeige
AW: Noch offen...
09.08.2007 13:33:40
Manfred
Hallo Ramses,
ich meinte eigentlich "Input, Random, Output".
Output habe ich ausprobiert, um zu testen, ob die Datei danach von einem anderen Rechner mit Input geöffnet werden kann (einfach um alle Kombinationsmöglichkeiten auszuprobieren).
Trotzaledem, wenn ich mit einem Rechnermacro die Datei geöffnet habe, können die anderen Rechner nicht mehr zugreifen und springen zum "Error_Handler:".
Gruß Manfred

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige