如何判断某个Excel文件使用VB.NET是开放的?(How to tell if a certai

2019-10-22 07:36发布

我在我的出口数据集到Excel文件,我想确保我控制住任何文件中的错误。 其中特别是我关心的是访问一个文件,该文件已经打开。 一般发生IOException,说:“该进程无法访问文件‘C:\报告\ report300.csv’,因为它正被另一个进程使用。” 以下是这将发生错误的行:

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

我想我可以只是把它周围的尝试捕捉,但如果一个IOException恰巧心不是与此相关的特定事件? 有没有一种方法,我可以检查,看看是否该文件已经允许该代码运行前打开? 我看着谷歌,但找不到一个直接的答案,尤其是当我在使用Excel。

提前致谢。

Answer 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


文章来源: How to tell if a certain Excel file is open using VB.NET?