tagCANDY CGI VBレスキュー(花ちゃん) の Visual Basic 2010 用 掲示板(VB.NET 掲示板)
VBレスキュー(花ちゃん) の Visual Basic 2010 用 掲示板(VB.NET 掲示板)
[ツリー表示へ]  [ワード検索]  [Home]

タイトル 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(…
最初のコードと比べると、微妙に変わってますね。(^^;

- 関連一覧ツリー をクリックするとツリー全体を一括表示します)

古いスレッドにレスはつけられません。