2017-11-07 5 views
0

これは私を夢中にしています。どんな助けも歓迎です。VBA - Excelファイルサイズを増やすことができません。

私は常にテキストファイルに書き込む数値シミュレーションを持っています。ファイルサイズは常に増加します。私はファイルサイズを報告し、それがまだ増加しているかどうか、または増加が止まっていないかどうかを確認する必要があります。

VBAではファイルのサイズが大きくなっても検出されないようですが、同じサイズを登録しています。しかし、もし私がWindowsエクスプローラのファイルフォルダにoppenedとF5キーを押すと、VBAのサイズが増加します。

Windowsがファイルをどのように索引付けするか、何か間違っているのでこの方法で動作するはずです。

私はすでにworkarroundを見つけた

filelen()filesystemobject.filezise()datelastmodified()datelastacessed()と何を...使用している:私は一時ファイルに問題のファイルをコピーし、一時ファイルのサイズを読めば、私はサイズの変化を検出することができます。しかし、これは醜い解決策です。ファイルサイズを確認して正しい結果を得たいと思っています。

ご迷惑をおかけして申し訳ございません。必要があれば、私はさらに明確にすることを喜んでします。

これは私が使っているコードですが、テストするために、たとえば、ビデオエンコードのようなファイルの書き込み状況を模倣する必要があります。メモ帳で編集したテキストファイルで行うと、それを保存する行為はまた、情報をvbaに更新する。

Public fileSizeLastStep as long 

Public Sub sizeWatch() 
    dim fso as new fileSystemObject 
    dim fileToMeasure as File 
    dim fileSizeNow as long 

    Set fileToMeasure = fso.GetFile("C:\filename.txt") 
    fileSizeNow = fileToMeasure.Size 

    If fileSizeNow <> fileSizeLastStep Then 
     fileSizeLastStep = fileSizeNow 
     Set fso = Nothing 
     Call Application.OnTime(Now + TimeValue("00:02:00"), "sizeWatch") 
    Else 
     MsgBox "Simulation Finished!" 
     'calls whathever function that starts next simulation 
    End If 
End Sub 

ありがとうございます。

+0

ファイルサイズを監視しようとしているときにExcelに外部からファイルを書き込むプロセスはありますか? –

+0

Robin、Yes os外部プロセスによって書かれたBering。 –

答えて

1

おそらくそれはこれで問題だ:記事から https://blogs.msdn.microsoft.com/oldnewthing/20111226-00/?p=8813

引用:

あなたは本当に今、実際のファイルサイズが必要な場合は、最初の顧客がした 何と通話することができますGetFileSize。この関数は、 をディレクトリエントリではなく実際のファイルで処理するので、実際の 情報を取得し、シャドウコピーは取得しません。ファイルが に継続的に書き込まれている場合、あなたが受け取る値はすでに の瞬間に間違っています。

代わりにGetFileSizeを使用してみてください。

Declare Function GetFileSize Lib "kernel32.dll" (ByVal hFile As Long, lpFileSizeHigh As Long) As Long 
+0

YouTube Eliotに感謝します。その戦争は非常に明確です。 –

+0

ありがとう、エリオット。 That Wars非常に明確化し、また、ファイルをコピー/アクセスするよりもエレガントな方法で問題を解決します。どうもありがとうございました –

関連する問題