Live-Forum - Die aktuellen Beiträge
Datum
Titel
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
1548to1552
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
Inhaltsverzeichnis

Vor Schreiben in Datei prüfen, ob offen

Vor Schreiben in Datei prüfen, ob offen
20.03.2017 18:10:52
Tim
Hallo,
ich verwende folgenden Code, um Werte aus einer Datei in eine andere zu schreiben.
Soweit klappt damit alles gut, ich würde allerdings gerne noch eine Fehlerroutine einbauen:
Normalerweise ist die Zieldatei geschlossen, es könnte aber theoretisch sein, dass ein User sie einmal genau dann geöffnet hat, wenn ich per Makro dort hineinschreiben möchte.
Kann mir jemand sagen, ob und wie ich prüfen kann, ob die Datei gerade geöffnet ist bzw. wie ich sicherstellen kann, dass ich entweder hineinschreiben und speichern kann oder eine Fehlermeldung (MsgBox) anzeigen kann ?

Mein Code:
    Dim varPath As String
varPath = Worksheets(1).Range("StoragePath").Value & "Reporting-Log.xlsx"
Application.ScreenUpdating = False
Workbooks.Open Filename:=varPath
With Worksheets(1)
.Select
.Cells(1, 1).End(xlDown).Offset(1, 0).Value = varRowCount
.Cells(1, 2).End(xlDown).Offset(1, 0).Value = Format(Now, "yyyy-mm-dd hh:mm:ss")
.Cells(1, 3).End(xlDown).Offset(1, 0).Value = Environ("Username")
End With
ActiveWorkbook.Save
ActiveWindow.Close
Application.ScreenUpdating = True
Vielen Dank im Voraus für Eure Hilfe,
Tim

3
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Vor Schreiben in Datei prüfen, ob offen
20.03.2017 18:26:40
Tim
On Error Resume Next
Open ("C:\test\Reporting-Log.xlsx") For Binary Access _
Read Lock Read As 1
Close #1
If Err.Number 0 Then
MsgBox "Reporting-Log.xlsx ist geöffnet"
Else
MsgBox "Reporting-Log.xlsx ist NICHT geöffnet"
End If
AW: Vor Schreiben in Datei prüfen, ob offen
20.03.2017 19:33:15
Werner
Hallo Tim,
quick and dirty..
Public Sub bbb()
On Error GoTo Fehler
'Name der Datei sowie des Blattes anpassen
Evaluate Workbooks("Test.xlsx").Sheets("Tabelle1").Range("A1")
MsgBox "offen"
Exit Sub
Fehler:
MsgBox "zu"
On Error GoTo 0
End Sub
Du musst im Code nur die Datei und das Tabellenblatt an deine Bedingungen anpassen. Es muss sich um ein Blatt handeln, das in der Datei (die du auf offen oder geschlossen prüfen willst) auch tatsächlich existiert, sonst liefert der Code immer zu.
Gruß Werner
Anzeige
oder über eine Funktion
20.03.2017 22:35:20
KlausF
Hallo Tim,
oder mit nachfolgender Funktion:
Function IstGeoeffnet(sDatei As String)
Dim iFNum As Integer
  On Error Resume Next
  iFNum = FreeFile()
  Open sDatei For Input Lock Read As #iFNum
  Select Case Err.Number
    Case 0
      IstGeoeffnet = False
    Case 70
      IstGeoeffnet = True
    Case Else
      IstGeoeffnet = True
      MsgBox "Zugriffsfehler:" & vbCr & _
          Err.Description
  End Select
  Close iFNum
  Err.Clear
  On Error GoTo 0
End Function
z.B.:
Sub OeffneDatei()
Dim sDateipfad As String
  sDateipfad = "C:\Excel\Abrechnung.xls"
  If IstGeoeffnet(sDateipfad) = False Then
    Workbooks.Open sDateipfad
  End If
End Sub
Gruß
Klaus
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige