簡體   English   中英

如何判斷是否使用VB.NET打開了某個Excel文件?

[英]How to tell if a certain Excel file is open using VB.NET?

我正在將數據集導出到一個excel文件,並且我想確保自己可以控制所有文件錯誤。 我特別關心的一個問題是訪問一個已經打開的文件。 出現一般的IOException,內容為“該進程無法訪問文件'C:\\ Reports \\ report300.csv',因為該文件正在被另一個進程使用。” 這是將發生錯誤的行:

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

我想我可以嘗試一下,但是如果發生與該特定事件無關的IOException怎么辦? 有沒有一種方法可以在允許我運行此代碼之前檢查文件是否已打開? 我在Google上看過,但找不到直接的答案,尤其是當我使用excel時。

提前致謝。

您可以使用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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM