2011-12-30 9 views
0

オープンファイルのコンテキストで、次のようなコード作業を行う必要があります。このコードは、現在開いている文書をデータベースに書き込むために、Excelアドインで実行する必要があります。 3行目のSystem.IO.File.ReadAllBytes()は、ドキュメントが現在使用中であることを示すエラーが発生します。開いているドキュメントで動作する同等のメソッドはありますか?そうでない場合、解決策は何ですか?「System.IO.File.ReadAllBytes()」などの方法を使用して、開いているファイルをデータベースにコピーするにはどうすればよいですか?

Foo.DataClasses1DataContext db = new Foo.DataClasses1DataContext(); 
string ThisDocument = Globals.ThisAddIn.Application.ActiveWorkbook.FullName; 
byte[] inputBuffer = System.IO.File.ReadAllBytes(ThisDocument); 
Foo.RFP_Document rfpDocument = new Foo.RFP_Document(); 
rfpDocument.DocumentName = "Some Name"; 
rfpDocument.DocumentFile = new System.Data.Linq.Binary(inputBuffer); 
db.RFP_Documents.InsertOnSubmit(rfpDocument); 
db.SubmitChanges(); 

ここにVBに関連する同様の質問へのリンクがあります。 How do I copy an open file in VB6?

+1

私は一般的に、データベースにファイル全体を保存することは避けます。特にファイルが大きい場合は避けてください。なぜファイルを特定のフォルダにファイルとして保存してから、そのファイルパスに(データベースから)ポイントしますか? –

+0

私は一般的にそうしています。しかし、この場合、私はファイルが常に小さくなることを知っています。そして、私は各文書の内容を検索可能にしたい。 – hughesdan

+0

私はまだ1メガバイトが大きすぎると主張します。 Afterallは、UTF8エンコーディングで約1.000.000文字(バイト)です。なぜファイルそのものを検索してみませんか? –

答えて

0

Workbook.SaveCopyAsを使用してファイルのコピーを保存するだけで、このファイルを使用して後で削除できます。

関連する問題