質問者
Excel2000で文字列の下線

全般的な情報交換
-
お世話になります。
VisualBasic2005から以下のようなExcelを参照するプログラムを作っています
下線の付いた文字列を出力したいのですがExcel2003では問題無く動作するのですが
Excel2000では書き込まれはするのですがExcelのプロセスが開放されなくなってしまいます。
objFont.Underline = xlUnderlineStyleSingle
の一行を外せばプロセスは開放されるのですが。
どうしても下線を表示したい場合、どのように記述したら宜しいのでしょうか?
Borderオブジェクトを参照してもプロセスが開放されなくなります。
罫線も出力したいです。
何方か御指導下さいますよう、よろしくお願いいたします。Dim objSheet As Object
Dim objCell As Object
Dim objFont As Object
objCell = objSheet.Cells(4, 27)
objCell.FormulaR1C1 = "文字列:"
objFont = objCell.Font
objFont.Underline = xlUnderlineStyleSingle '←
objFont.Size = 13
System.Runtime.InteropServices.Marshal.ReleaseComObject(objCell)
objFont = Nothing
System.Runtime.InteropServices.Marshal.ReleaseComObject(objFont)
objCell = Nothing- 種類を変更済み 大久保直美Microsoft employee 2009年4月7日 6:36 種類変更
すべての返信
-
-
Excel2000で試してみましたが問題なく開放されました。
Dim objSheet As Object Dim objCell As Object Dim objFont As Object Dim objBorders As Object Dim objBorder As Object For r As Integer = 1 To 1000 For c As Integer = 1 To 100 objCell = objSheet.Cells(r, c) objCell.Value = r * c objFont = objCell.Font objFont.Underline = 2 objFont.Size = 13 objBorders = objCell.Borders objBorder = objBorders(7) objBorder.LineStyle = 1 System.Runtime.InteropServices.Marshal.ReleaseComObject(objBorder) objBorder = objBorders(8) objBorder.LineStyle = 4 System.Runtime.InteropServices.Marshal.ReleaseComObject(objBorder) System.Runtime.InteropServices.Marshal.ReleaseComObject(objBorders) System.Runtime.InteropServices.Marshal.ReleaseComObject(objFont) System.Runtime.InteropServices.Marshal.ReleaseComObject(objCell) objBorder = Nothing objBorders = Nothing objFont = Nothing objCell = Nothing Next c Next r
罫線無しテストでは100列×10000行でも開放できました。
罫線有りテストでは100列×1000行でも開放できました。
ある程度の量というのはどれくらいなのか・・・もっと多くの操作をしないと再現しませんか?