2010-05-26 7 views
1

내 데이터 집합을 Excel 파일로 내보내고 있으며 파일 오류를 제어하고 싶습니다. 특히 내가 이미 열려있는 파일에 액세스하는 것이 걱정됩니다. "프로세스가 다른 프로세스에서 사용 중이기 때문에 'C : \ Reports \ report300.csv'파일에 액세스 할 수 없습니다."라는 일반적인 IOException이 발생합니다.VB.NET을 사용하여 특정 Excel 파일이 열려 있는지 확인하는 방법은 무엇입니까?

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

을 난 그냥 주위에 시도 캐치를 던질 수도 있겠죠,하지만 IOException가 밤은이 특정 사건에 관련된 것을 발생하는 경우 : 여기에 라인이있는 오류가 발생할 것입니까? 이 코드를 실행하기 전에 파일이 이미 열려 있는지 확인할 수있는 방법이 있습니까? 나는 구글을 보았지만, 특히 엑셀을 사용할 때 곧바로 답을 찾을 수 없었다.

미리 감사드립니다.

답변

1

Marshal.GetLastWin32Error()를 사용하여 예외를 일으킨 Windows 오류를 확인할 수 있습니다. 예 :

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 
+0

니스! 나는 그렇게 쉬울 것이라고 생각하지 않았다. 많은 감사합니다! – broke

관련 문제