C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[3]: Excelで斜線を消したい


(過去ログ 108 を表示中)

[トピック内 5 記事 (1 - 5 表示)]  << 0 >>

■64407 / inTopicNo.1)  Excelで斜線を消したい
  
□投稿者/ nobu (1回)-(2012/11/30(Fri) 16:32:30)

分類:[C#] 

斜線を引く時は
oRange.Borders.get_Item(Excel.XlBordersIndex.xlDiagonalDown).LineStyle = Excel.XlLineStyle.xlDouble;
なソースが出ていたのですが、この線を消す時はどうすれば良いでしょうか?
Excel.XlLineStyle.xlLineStyleNone
で消えなくて他にそれらしいものが見つかりませんでした。



引用返信 編集キー/
■64408 / inTopicNo.2)  Re[1]: Excelで斜線を消したい
□投稿者/ shu (113回)-(2012/11/30(Fri) 16:54:49)
No64407 (nobu さん) に返信
> 斜線を引く時は
> oRange.Borders.get_Item(Excel.XlBordersIndex.xlDiagonalDown).LineStyle = Excel.XlLineStyle.xlDouble;
> なソースが出ていたのですが、この線を消す時はどうすれば良いでしょうか?
> Excel.XlLineStyle.xlLineStyleNone
> で消えなくて他にそれらしいものが見つかりませんでした。
>
Excel.XlLineStyle.xlLineStyleNoneで消えるような気がしますが
どのような処理を行っていますでしょうか?
引用返信 編集キー/
■64409 / inTopicNo.3)  Re[1]: Excelで斜線を消したい
□投稿者/ 魔界の仮面弁士 (98回)-(2012/11/30(Fri) 17:18:52)
No64407 (nobu さん) に返信
> oRange.Borders.get_Item(Excel.XlBordersIndex.xlDiagonalDown).LineStyle = Excel.XlLineStyle.xlDouble;
borders = oRange.Borders;
border = borders.get_Item(Excel.XlBordersIndex.xlDiagonalDown);
border.LineStyle = Excel.XlLineStyle.xlDouble;

にしておかないと、解放時に問題があるかと。


> なソースが出ていたのですが、この線を消す時はどうすれば良いでしょうか?
> Excel.XlLineStyle.xlLineStyleNone
> で消えなくて他にそれらしいものが見つかりませんでした。
普通に消えましたが…。


using System;
using System.Windows.Forms;
using System.Runtime.InteropServices;
using Excel = Microsoft.Office.Interop.Excel;

namespace WindowsFormsApplication1
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            Excel.Application app = new Excel.Application() { Visible = true };
            Excel.Workbooks books = app.Workbooks;
            Excel.Workbook book = books.Add();
            Excel.Sheets sheets = book.Worksheets;
            //dynamic sheet = sheets[1];
            Excel.Worksheet sheet = sheets[1];
            Excel.Range range = sheet.get_Range("B2");
            Excel.Borders borders = range.Borders;
            Excel.Border border = borders.get_Item(Excel.XlBordersIndex.xlDiagonalDown);
            border.LineStyle = Excel.XlLineStyle.xlDouble;
            MessageBox.Show("消してみます。", "Sample", 
                MessageBoxButtons.OK, 
                MessageBoxIcon.Information, 
                MessageBoxDefaultButton.Button1, 
                MessageBoxOptions.ServiceNotification);
            border.LineStyle = Excel.XlLineStyle.xlLineStyleNone;
            MessageBox.Show("消したつもり。", "Sample",
                MessageBoxButtons.OK,
                MessageBoxIcon.Information,
                MessageBoxDefaultButton.Button1,
                MessageBoxOptions.ServiceNotification);
            Release(border);
            Release(borders);
            Release(range);
            Release(sheet);
            Release(sheets);
            book.Close(false);
            Release(book);
            Release(books);
            app.Quit();
            Release(app);
        }

        private void Release(object o)
        {
            if (Marshal.IsComObject(o)) 
            {
                Marshal.ReleaseComObject(o);
            }
        }
    }
}

引用返信 編集キー/
■64411 / inTopicNo.4)  Re[2]: Excelで斜線を消したい
□投稿者/ nobu (2回)-(2012/11/30(Fri) 17:50:44)
ループしてセルの斜線とデータを消したいのですが、


Excel.Worksheet xlsWSheet;
Excel.Range xlsRange;
Excel.Border xlsBorder;

 ↓ ここをループ
xlsRange = (Excel.Range)xlsWSheet.get_Range("F" + ci, Type.Missing);
xlsRange.Value2 = "";
xlsBorder = xlsRange.Borders.get_Item(Excel.XlBordersIndex.xlDiagonalDown);
xlsBorder.LineStyle = Excel.XlLineStyle.xlLineStyleNone;
としても消えません。

今まで、
xlsRange.Borders.get_Item(Excel.XlBordersIndex.xlDiagonalDown).LineStyle = Excel.XlLineStyle.xlLineStyleNone;
としていて消えませんでした。

引用返信 編集キー/
■64413 / inTopicNo.5)  Re[3]: Excelで斜線を消したい
□投稿者/ 魔界の仮面弁士 (99回)-(2012/11/30(Fri) 18:10:16)
No64411 (nobu さん) に返信
> ループしてセルの斜線とデータを消したいのですが、
複数セルを含んだ Range を作り、まとめて消した方が効率が良いですよ。

> xlsBorder = xlsRange.Borders.get_Item(Excel.XlBordersIndex.xlDiagonalDown);
Borders も取得した方が良いかと。

> xlsBorder.LineStyle = Excel.XlLineStyle.xlLineStyleNone;
> としても消えません。
現在は、ループで処理させている消えないコードがあるのですよね。

先の私のコードのように、第三者が実際に動作可能な検証用コードとして提示できますか?
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -