Come sapere se un file di Excel è aperto utilizzando VB.NET?

Sto esportndo il mio set di dati in un file excel e voglio assicurarmi di tenere sotto controllo i file errori. Uno in particolare che mi preoccupa è accedere a un file già aperto. Viene generato un IOException generale che dice "Il process non può accedere al file" C: \ Reports \ report300.csv "perché viene utilizzato da un altro process." Ecco la linea in cui si verifica l'errore:

Dim output As New IO.StreamWriter(path, False, UnicodeEncoding.Default)

Immagino che potrei solo buttare un tentativo di catturare intorno, ma cosa succede se una IOException accade che non è collegato a questo particolare incidente? C'è un modo per verificare se il file è già aperto prima di consentire l'esecuzione di questo codice? Ho guardato su google ma non ho trovato una risposta diretta, specialmente quando sto utilizzando excel.

Grazie in anticipo.

    È ansible utilizzare Marshal.GetLastWin32Error () per scoprire quale errore di Windows ha causato l'exception. Per esempio:

     Public Shared Function OpenUnlockedFile(ByVal path As String) As StreamWriter Dim sw As StreamWriter = nothing Try sw = New StreamWriter(path) Catch ex As IOException When System.Runtime.InteropServices.Marshal.GetLastWin32Error() = 32 REM locked, return nothing End Try Return sw End Function