@IT会議室は、ITエンジニアに特化した質問・回答コミュニティ「QA@IT」に生まれ変わりました。ぜひご利用ください。
- PR -

EXCELファイルが保存できない

1
投稿者投稿内容
なな
ベテラン
会議室デビュー日: 2003/09/18
投稿数: 79
投稿日時: 2004-03-16 12:42
いつも参考にさせていただいております。
現在、ASP.NETで開発を行っております。
その中の処理で、
EXCELを別フォルダからコピーし、新規のフォルダを作り(ユーザー毎)
その中にコピーしたEXCELファイルを置く。
コピーしたEXCELファイルをASP.NET側でOPENし、DBから取得したデータをもとに編集し、
保存するという処理を行っております。
下記がEXCELを保存し、終了、JavaScriptでクライアント側に表示するまでのソースです。

Sub ExcelTest()
Dim objExcelApp As Excel.Application
objExcelApp = CType(CreateObject("Excel.Application"), Excel.Application)
Dim objExcelBook As Excel.Workbooks = objExcelApp.Workbooks
Dim book As Excel.Workbook = objExcelBook.Open("D:\\UserFile\\text.xls")
objExcelApp.DisplayAlerts = False
Dim objExcelSheets As Excel.Sheets = book.Worksheets
Dim sheet1 As Excel.Worksheet = CType(objExcelSheets("EXCEL1"), Excel.Worksheet)

--DBからデータを取得し、EXCELに編集.....


book.Save()
'EXCEL終了処理
book.Close(False)
objExcelApp.DisplayAlerts = True
objExcelApp.Quit()
System.Runtime.InteropServices.Marshal.ReleaseComObject(sheet1)
System.Runtime.InteropServices.Marshal.ReleaseComObject(objExcelSheets)
System.Runtime.InteropServices.Marshal.ReleaseComObject(book)
System.Runtime.InteropServices.Marshal.ReleaseComObject(objExcelBook)
System.Runtime.InteropServices.Marshal.ReleaseComObject(objExcelApp)
objExcelApp = Nothing
End Sub

--EXCEL編集処理をしたCLASSをNothingする。

--JavaScriptでクライアント側に表示する
strScript = strScript & "<Script Language='JavaScript'>"
strScript = strScript & "window.open("
strScript = strScript & "'../UserFile/text.xls" & "',"
strScript = strScript & " 'self','resizable=yes,toolbar=yes,directories = yes,menubar = yes');"
strScript = strScript & "</script>"
Response.Write(strScript)

※UserFileは仮想ディレクトリとして指定しています。(参照はD:\\UserFile\\)

上記のようにWindow.Openで表示しているのですがたまに編集された
EXCELがSaveされないまま表示されることがあります。
不思議なのは保存されないまま、クライアント側に表示され、
EXCELファイルが表示されたブラウザを閉じた後、
同じ処理をもう一度行ったりすると今度はきちんと編集されたものが
保存されてクライアント側に表示されます。
エラーが拾えればまだ原因追求できるのですが
処理自体は保存されていてもいなくても
正常に終了します。
現象はランダムなので正直、原因がつかめません。
もし、これではないか?とおもう情報でも良いので
ご教授願います。
なな
ベテラン
会議室デビュー日: 2003/09/18
投稿数: 79
投稿日時: 2004-03-18 21:23
自己レスです。
単にcatchでうまくエラーを拾えず、
プログラムは正常終了したと見なし、EXCELを表示していただけのようです。
ご迷惑をおかけいたしました。
1

スキルアップ/キャリアアップ(JOB@IT)