Abfragekontrolle nach geöffneter Datei

doosenhuub

Grünschnabel
Hallo,

ich versuch mein Problem kurz zu erklären: In meinem Projekt in VBA habe ich eine Excel-Datei, die die Steuerung übernimmt und eine, aus der gelesen und in die geschrieben wird. Letztere wird erst im Programmverlauf geöffnet bzw. neu erstellt. Zu Ende des Programms möchte ich das aktuelle Projekt speichern lassen. Wenn allerdings die Lese/Schreib-Datei nicht geöffnet ist, kommt natürlich eine Fehlermeldung, sprich ein Abbruch. Wie kann ich vorher den Fall abfangen, wenn keine Datei geöffnet ist? Ich habe das Problem mit der if-then-else Schleife, da ich keine Idee habe eine vernünftige Abfrage zu stellen...

Danke und Grüße
Torsten
 
Hab hier was gefunden, weiß aber nicht ob es geht.
Code:
' Prüfen, ob Datei in Benutzung
Private Function FileInUse(ByVal sFile As String) As Boolean
  Dim F As Integer

  On Error Resume Next
  ' Versuch, Datei EXKLUSIV zu öffnen
  F = FreeFile
  Open sFile For Binary Lock Read Write As #F

  ' Bei Fehler 70 ist die Datei in Benutzung
  FileInUse = (Err.Number = 70)

  Close #F
  On Error Goto 0
End Function
 
nee, so klappt es leider nicht.

kurz zur weiteren erklärung:

mit folgender prozedur öffne ich normalerweise eine datei:

Code:
Sub CommandButtonspeichern_Click()
  Dim result As Variant
  result = Application.GetOpenFilename("Excel-Dateien,*.xl?", 1)
  If result = False Then Exit Sub
  
  Workbooks.Open result
  
    Set result1 = ActiveWorkbook
        
  Workbooks("oberfläche_test_1.4_tb191004.xls").Activate
    
End Sub

Das bedeutet, dass das aktive workbook ein anderes ist. Falls ich nun speichern will,

Code:
Sub CommandButton_AbsoluteKosten1dateispeichern_Click()
result1.Activate
          
          
                    Do
                        fname = Application.GetSaveAsFilename
                    Loop Until fname <> False
                    result1.SaveAs Filename:=fname, FileFormat:=xlNormal, _
                    Password:="", WriteResPassword:="", ReadOnlyRecommended:=False, _
                    CreateBackup:=False
result1.Close
Workbooks("oberfläche_test_1.4_tb191004.xls").Activate

End Sub

aber vorher mit besagter prozedur nicht eine datei geöffnet habe, kommt ein fehler, klar. nun würde ich gern vorher prüfen, ob result1 ein workbook als wert zugewiesen wurde oder nicht.

Kann ich überhaupt einer Variable "result1" so etwas zuweisen? Müsste Sie dann als Konstante definiert werden? Global? Ich bin wirklich ein Rookie und das ist gerade so die erste richtig große Hürde...

danke nochmals
 
Zurück