1

VB.Net FileSystemWatcherクラスを使用して、Excelファイルの作成用のフォルダーを監視しようとしています。フォルダに.xlsファイルが作成されたときに応答がありますが、次のコードに問題があります。

Private Sub AddWatch()

Dim watch As New FileSystemWatcher

        AddHandler watch.Changed, AddressOf FileChange
        watch.Filter = "*.*"
        watch.NotifyFilter = NotifyFilters.LastWrite
        watch.Path = "C:\Documents and Settings\my.user\Desktop\testing"
        watch.EnableRaisingEvents = True
End Sub

    Private Sub FileChange(ByVal obj As Object, ByVal e As System.IO.FileSystemEventArgs)

        Debug.Print("changetype is: " & e.ChangeType.ToString & ", path is: " & e.FullPath.ToString)
    End Sub

このフォルダにテキストファイルを作成すると、適切なファイル名( "C:\ Documents and Settings \ my.user \ Desktop \ tests \ foo.txt")が返されます。ただし、Excelファイルをフォルダーに保存すると、パスは正しいのですが、ファイル名はガベージです(同じファイル名でも毎回異なり、常に「C:\ Documents andSettings \ my.user\Desktop」のように8文字です。 \ tests \ DE0B5800 "。)この検索Googleまたはここで何かを見つけることができません。いつものようにMSDNはほとんど役に立ちません。誰かが以前にこれに遭遇したり、私がより多くの情報を見つけることができる場所を知っていますか?

4

1 に答える 1

1

http://support.microsoft.com/kb/814068

要約すれば:

Excelがファイルを保存するとき、Excelは次の手順に従います。

  1. Excelは、[名前を付けて保存]ダイアログボックスで指定した保存先フォルダーに、ランダムに名前が付けられた一時ファイル(たとえば、ファイル名拡張子のないCedd4100)を作成します。ブック全体が一時ファイルに書き込まれます。
  2. 変更が既存のファイルに保存されている場合、Excelは元のファイルを削除します。
  3. Excelは一時ファイルの名前を変更します。Excelは、[名前を付けて保存]ダイアログボックスで指定したファイル名(Book1.xlsなど)を一時ファイルに与えます。
于 2010-02-03T02:39:26.450 に答える