- - PR -
VB.netからExcel経由での印刷ができない
1
投稿者 | 投稿内容 |
---|---|
|
投稿日時: 2005-03-22 13:57
VisualBasic.NET 2003からExcel 97経由でプリンタに出力しようとしたところ、PrintOut関数が終了せず(デバッグモードだとPrintOut関数の次に制御が来ない)固まってしまいます。何か設定などが必要なのか、どなたかお知恵を拝借できるとありがたいです。
タスクマネージャで見ると、VB のアプリは実行中のまま(プロセスのCPUは0%)、ExcelのプロセスのCPUは一瞬5%程度になりますが、その後0%です。 OSは、Windows XP Professional SP2です。 ちなみに、XP Home + Excel 2000の組合せでも同じでした。 ちょっと長くなりますが、以下にコードを示します。 ちなみにExcel 8.0 Object Libraryを参照の追加で設定してありますが、この他にも必要なコンポーネントがあるのでしょうか? 以上宜しくお願いします。 Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click Dim objExcel As Excel.Application Dim objBooks As Excel.Workbooks Dim objBook As Excel.Workbook Dim objSheets As Excel.Sheets Dim objSheet As Excel.Worksheet Dim objCell As Excel.Range Try objExcel = CreateObject("Excel.Application") objBooks = Nothing objBook = Nothing objSheets = Nothing objSheet = Nothing objCells = Nothing objCell = Nothing objBooks = objExcel.Workbooks 'フルパスで指定しないとOpenできなかった objBook = objBooks.Open("c:\test.xls") objSheets = objBook.Sheets objSheet = objSheets(1) objCell = objSheet.Cells objCell(1, 1) = 12345 'Excelファイルに保存 objBook.SaveAs("c:\aaa.xls", Excel.XlFileFormat.xlExcel9795) '印刷プレビュー後印刷の予定だが、うまく行かない objSheet.PrintOut(From:=1, Preview:=True) Catch ex As Exception MessageBox.Show(ex.Message, "Excel エラー") End Try '以下を実行しないとexcelのプロセスが残ってしまうようだ System.Runtime.InteropServices.Marshal.ReleaseComObject(objCell) objCell = Nothing System.Runtime.InteropServices.Marshal.ReleaseComObject(objSheet) objSheet = Nothing System.Runtime.InteropServices.Marshal.ReleaseComObject(objSheets) objSheet = Nothing objBook.Close(False) System.Runtime.InteropServices.Marshal.ReleaseComObject(objBook) objBook = Nothing System.Runtime.InteropServices.Marshal.ReleaseComObject(objBooks) objBooks = Nothing objExcel.Quit() End Sub |
|
投稿日時: 2005-03-23 02:10
流し読みで間違っていると申し訳ないのですが、
多分エクセルのアプリケーションのVisibleプロパティがFalseなんでは ないでしょうか。 もしそうであればプレビュー前にVisibleをTrue、プレビュー後に必要なら Falseにしてやれば動くと思います。 [ メッセージ編集済み 編集者: べーちゃん 編集日時 2005-03-23 02:13 ] |
|
投稿日時: 2005-03-23 09:28
べーちゃんさん、コメントありがとうございます。
objExcel.Visible = True を追加しただけで、動作するようになりました。 ありがとうございました。 |
1