タイトル : Re^5: EXCELへの印字部分処理に関して 投稿日 : 2007/10/14(Sun) 01:47 投稿者 : 魔界の仮面弁士
> Dim xlsApp As Object = Server.CreateObject("Excel.Application") ……うん? Server.CreateObject ということは、もしかして、ASP.NET でしょうか。 だとすれば、Excel ライブラリはサーバサイドに対応した設計にはなっていませんし、 ライセンス的にもおすすめできるものではありません。別の手法を検討した方が良いかと。 http://support.microsoft.com/kb/257757/ja # ExcelCreator とか、SpreadsheetGear とか、XML スプレッドシートを XSLT で生成するとか。 > MsgBox(strMsg) あれ? MsgBox を使っているという事は、Webアプリでもなさそうですね。 うーん。分からなくなってしまいました。 とりあえず、普通のデスクトップアプリだという前提で回答します。 > SetDictionary_XlsNameData(xlsBook, dicXlsName) この部分は、ブラックボックスですね。 上記メソッドの内容については、掲示板には一切書かれていないので、もしも その中で、何か問題のある処理が行われていたとしても、こちらでは判断できません。 念のため、上記の行を削除(コメントアウト)した場合に、プロセスが 残ってしまうのかどうか、検証された方が良いかも知れません。 > '印字するデータを設定します > Get_Name_Data() データの「設定」なのに「Get」という点に奇妙さを感じますが、それはさておき。 コードの全体像が見えないので判断に困りますが、 このメソッドは、戻り値も引数指定も無いのですか? データの読み書きを行うメソッドであるなら、 Get_Name_Data(foo) 'fooを使ってデータを編集する または fooにデータが埋め込まれる または foo = Get_Name_Data() '戻り値 foo にデータが返される の形式になりそうな気がするのですけれども。 > Finally > 'ここで使用したEXCEL関連のオブジェクトの解放を行います > MRComObject(xlsSheet) > MRComObject(xlsSheets) > xlsBook.Close(False) > MRComObject(xlsBook) > MRComObject(xlsBooks) > xlsApp.Quit() > MRComObject(xlsApp) > MRComObject(dicXlsName) > > End Try このコードは危険だと思いますよ。 もし、処理の途中でエラーが発生していた場合には、Finally ブロックに入るわけですが、 エラーの発生位置によっては、たとえば「xlsBook が Nothing 状態」の可能性もあるわけです。 そうした場合、xlsBook.Close のメソッドが失敗しますから、さらにそこで エラーが発生し、それ以降の解放処理が行われなくなってしまうかと。 > Private Sub OUT_XLS_Data(… 最初のコードと比べると、微妙に変わってますね。(^^; |