tagCANDY CGI VBレスキュー(花ちゃん) の Visual Basic 2010 用 掲示板(VB.NET 掲示板) [ツリー表示へ]   [Home]
一括表示(VB.NET VB2005)
タイトルエクセルの罫線描画でプロセスが残る
記事No1660
投稿日: 2005/05/04(Wed) 17:02
投稿者匿名希望
[OSのVer]:Windows 2000    [VBのVer]:VB.NET 2003

いつも参考にさせて頂いています。
 エクセルで、罫線描画をしているのですが、
 プロセスが残ってしまいます。アドバイスの程、宜しくお願い致します。
 罫線は上、下、横で線の太さを変更したいのです。

  Dim objCells As Excel.Range
  Dim R1, R2 As Excel.Range
  Dim objRange As Excel.Range
  Dim objBorders As Excel.Borders

  objCells = xlsSheet.Cells

  R1 = DirectCast(objCells._Default(intSetRow, 1), Excel.Range)
  R2 = DirectCast(objCells._Default(intSetRow + intCnt, 16), Excel.Range)
  objRange = xlsSheet.Range(R1, R2)

 objBorders = objRange.Borders

  ' 下記を有効にすると、プロセスは残らない
  'objBorders.LineStyle = Excel.XlLineStyle.xlContinuous

   '下記を有効にするとプロセスが残る 
   objBorders(Excel.XlBordersIndex.xlEdgeBottom).LineStyle = Excel.XlLineStyle.xlDash

   System.Runtime.InteropServices.Marshal.ReleaseComObject(R1)
   System.Runtime.InteropServices.Marshal.ReleaseComObject(R2)
   System.Runtime.InteropServices.Marshal.ReleaseComObject(objRange)
   System.Runtime.InteropServices.Marshal.ReleaseComObject(objBorders)
   System.Runtime.InteropServices.Marshal.ReleaseComObject(objCells)

[ツリー表示へ]
タイトルRe: エクセルの罫線描画でプロセスが残る
記事No1661
投稿日: 2005/05/04(Wed) 17:44
投稿者花ちゃん
>  プロセスが残ってしまいます。アドバイスの程、宜しくお願い致します。

  hhttp://www.bcap.co.jp/hanafusa/hazimeni.htm#no2
 
  hhttp://www.bcap.co.jp/hanafusa/dotnet/Excel08.htm

[ツリー表示へ]
タイトルRe^2: エクセルの罫線描画でプロセスが残る
記事No1662
投稿日: 2005/05/04(Wed) 18:02
投稿者匿名希望
[OSのVer]:Windows    [VBのVer]:VB.NET  
> >  プロセスが残ってしまいます。アドバイスの程、宜しくお願い致します。
>
>   hhttp://www.bcap.co.jp/hanafusa/hazimeni.htm#no2
>  
>   hhttp://www.bcap.co.jp/hanafusa/dotnet/Excel08.htm

ご指摘有難う御座います。
このサイトを参考にさせて頂き、全ての箇所を見直しております。
罫線の描画も囲み罫線だと、上手くいくのですが、
セルの上や下だけの罫線を変更する場合が
調べても解らなかったのですが、もう少し調べて見ます。
申し訳御座いません。


      

[ツリー表示へ]
タイトルRe^3: エクセルの罫線描画でプロセスが残る
記事No1663
投稿日: 2005/05/04(Wed) 21:40
投稿者花ちゃん

>'下記を有効にするとプロセスが残る 
>objBorders(Excel.XlBordersIndex.xlEdgeBottom).LineStyle = Excel.XlLineStyle.xlDash

上記の部分に開放漏れがある事が解っているのだから、開放するようにすればいいだけでは。

objBorders(Excel.XlBordersIndex.xlEdgeBottom) この部分を一旦変数に受ける
都度開放してみる 等を試してみれば解るかと思いますよ。

色々試して、どうしても解らなければ再度投稿して下さい。
(でも、出来る限り自分で理解するようにしないと、毎回他人に頼る事になるかと・・・)

[ツリー表示へ]
タイトル修正し、解決しました
記事No1665
投稿日: 2005/05/05(Thu) 09:37
投稿者匿名希望
[OSのVer]:Windows    [VBのVer]:VB.NET  
>
> >'下記を有効にするとプロセスが残る 
> >objBorders(Excel.XlBordersIndex.xlEdgeBottom).LineStyle = Excel.XlLineStyle.xlDash
>
> 上記の部分に開放漏れがある事が解っているのだから、開放するようにすればいいだけでは。
>
> objBorders(Excel.XlBordersIndex.xlEdgeBottom) この部分を一旦変数に受ける
> 都度開放してみる 等を試してみれば解るかと思いますよ。
>
> 色々試して、どうしても解らなければ再度投稿して下さい。
> (でも、出来る限り自分で理解するようにしないと、毎回他人に頼る事になるかと・・・)


ご指摘有難う御座いました
試行錯誤の上、下記に修正し、解決いたしました。
勉強不足で申し訳御座いませんでした。


   Dim objBorder As Excel.Border  '新しく変数をとる

   R1 = DirectCast(objCells._Default(intSetRow, 1), Excel.Range)
   R2 = DirectCast(objCells._Default(intSetRow + intCnt, 16), Excel.Range)
   objRange = xlsSheet.Range(R1, R2)

   objBorders = objRange.Borders

   objBorder = objBorders(Excel.XlBordersIndex.xlEdgeBottom)

   objBorder.LineStyle = Excel.XlLineStyle.xlDash

   System.Runtime.InteropServices.Marshal.ReleaseComObject(R1)
   System.Runtime.InteropServices.Marshal.ReleaseComObject(R2)
   System.Runtime.InteropServices.Marshal.ReleaseComObject(objRange)
   System.Runtime.InteropServices.Marshal.ReleaseComObject(objBorder)
   System.Runtime.InteropServices.Marshal.ReleaseComObject(objBorders)
   System.Runtime.InteropServices.Marshal.ReleaseComObject(objCells)

[ツリー表示へ]