tagCANDY CGI VBレスキュー(花ちゃん) の Visual Basic 2010 用 掲示板(VB.NET 掲示板) [ツリー表示へ]   [Home]
一括表示(VB.NET VB2005)
タイトルExcelファイル
記事No2616
投稿日: 2005/11/22(Tue) 11:36
投稿者奉行侍
[OSのVer]:Windows Xp   [VBのVer]:VB.NET   2003

Excelファイルを読み込んだとときに
Excelを入力してある最終行を取得するにはどうすればいいのでしょうか?
最終行だけを取得する事は出来ますか?

[ツリー表示へ]
タイトルRe: Excelファイル
記事No2617
投稿日: 2005/11/22(Tue) 12:02
投稿者魔界の仮面弁士
> Excelを入力してある最終行を取得するにはどうすればいいのでしょうか?
VBA 的には、Sheet1.Cells.SpecialCells(xlCellTypeLastCell).Row …かな?
# VB.NET の場合は、COMの解放処理が必要になるので、それぞれを変数にとる必要がありますけど。

> 最終行だけを取得する事は出来ますか?
上記の応用で取得できるとは思いますが、たとえば、データは入っていないけれど、
セルに対して条件付書式、罫線情報、背景色などが指定してある物までカウントするのか
しないのかは、別途考慮しておいた方が良いでしょうね。

[ツリー表示へ]
タイトルRe^2: Excelファイル
記事No2621
投稿日: 2005/11/22(Tue) 15:34
投稿者奉行侍
[OSのVer]:Windows    [VBのVer]:VB.NET  

返信ありがとうございます。
Excelファイルを開くのでBook、Sheetなどの開放はしています。
>VBA 的には、Sheet1.Cells.SpecialCells(xlCellTypeLastCell).Row …かな?
でVB.Netでも可能でしょうか?

VBAは↑ので取得できましたが
VBはどのようにすればよいのですか?
xlCellTypeLastCellの引数の所をどうすればいいかわかりません

最終行は値(計算式は含まない)が入っている所までと考えています

[ツリー表示へ]
タイトルRe^3: Excelファイル
記事No2629
投稿日: 2005/11/24(Thu) 10:05
投稿者花ちゃん
> VBAは↑ので取得できましたが
> VBはどのようにすればよいのですか?
> xlCellTypeLastCellの引数の所をどうすればいいかわかりません

下記では。
hhttp://www.bcap.co.jp/hanafusa/dotnet/Excel03.htm#teisuu

又、下記も
hhttp://www.bcap.co.jp/hanafusa/dotnet/Excelflm.htm

[ツリー表示へ]
タイトル管理人さん宛て
記事No2631
投稿日: 2005/11/24(Thu) 11:27
投稿者魔界の仮面弁士
> .Location(Excel.XlChartLocation.xlLocationAsObject, xlSheet.Name)
> を使用するとプロセスが終了しないのですが、解決方法が見つからず使用しておりません。

実際に確認はしていませんが、Locationメソッドの戻り値もまた、COMオブジェクトですよね。
そちらの解放処理は行っていますか?

[ツリー表示へ]
タイトル開放処理は解決
記事No2633
投稿日: 2005/11/24(Thu) 14:10
投稿者花ちゃん
> > .Location(Excel.XlChartLocation.xlLocationAsObject, xlSheet.Name)
> > を使用するとプロセスが終了しないのですが、解決方法が見つからず使用しておりません。
>
> 実際に確認はしていませんが、Locationメソッドの戻り値もまた、COMオブジェクトですよね。
> そちらの解放処理は行っていますか?

あれを書いていた当時一応、変数に受けて開放処理を色々試して見たのですが、うまくいかず
それっきりになっております。(使用しなくても動作しているので)
又、頭のスッキリしている時にでも(そんな時がないかも)再度挑戦してみます。

今、再度挑戦してみましたら、難なくできました。
.Location を変数に受けようとしていたのがだめだったようです。

お騒がせしました。

[ツリー表示へ]
タイトルRe^3: Excelファイル
記事No2687
投稿日: 2005/12/01(Thu) 10:00
投稿者奉行侍
[OSのVer]:Windows    [VBのVer]:VB.NET  

返信が遅れました

花ちゃんさんの
>下記では。
>hhttp://www.bcap.co.jp/hanafusa/dotnet/Excel03.htm#teisuu

>又、下記も
>hhttp://www.bcap.co.jp/hanafusa/dotnet/Excelflm.htm

の所を見たのですが、最終行の取得の所が書いてあるのでしょうか?

[ツリー表示へ]
タイトルRe^4: Excelファイル
記事No2688
投稿日: 2005/12/01(Thu) 10:46
投稿者花ちゃん
> 花ちゃんさんの
> >下記では。
> >hhttp://www.bcap.co.jp/hanafusa/dotnet/Excel03.htm#teisuu
>
> >又、下記も
> >hhttp://www.bcap.co.jp/hanafusa/dotnet/Excelflm.htm
>
> の所を見たのですが、最終行の取得の所が書いてあるのでしょうか?

そのようなレスはしておりません。
そもそも最終行の取得はできているのでは。? > VBAは↑ので取得できましたが

------------------------------------------------------------
> VBAは↑ので取得できましたが
> VBはどのようにすればよいのですか?
> xlCellTypeLastCellの引数の所をどうすればいいかわかりません

下記では。
hhttp://www.bcap.co.jp/hanafusa/dotnet/Excel03.htm#teisuu

又、下記も
hhttp://www.bcap.co.jp/hanafusa/dotnet/Excelflm.htm
------------------------------------------------------------


VBA では取得できているとの事ですので、VBAのコードを .NET 用に
書き換えればいいのでは、と思い [引数の所をどうすればいいかわかりません] との 
質問に対して定数の取得仕方、.NET からExcelのVBAを操作する場合の注意事項等が
書いてあるリンクを紹介したまでです。

解らないコードは、Excel上でマクロを取ってそれを参考にコードを修正するのは
VB6.0 でも .NET でも同じかと、ただ、.NET でExcelのVBAを操作する場合は、
VB6.0 と少し違いがあるので、その辺がかいてあるリンクを貼っております。

それに、以前にも同じような質問に答えていたと思うのですが。
hhttp://www.bcap.co.jp/hanafusa/bbs/wforum.cgi?no=1168&reno=no&oya=1168&mode=msgview

[ツリー表示へ]
タイトルRe^5: Excelファイル
記事No2689
投稿日: 2005/12/01(Thu) 14:08
投稿者奉行侍
[OSのVer]:Windows    [VBのVer]:VB.NET  

> VBA では取得できているとの事ですので、VBAのコードを .NET 用に
> 書き換えればいいのでは、と思い [引数の所をどうすればいいかわかりません] との 
> 質問に対して定数の取得仕方、.NET からExcelのVBAを操作する場合の注意事項等が
> 書いてあるリンクを紹介したまでです。
>
> 解らないコードは、Excel上でマクロを取ってそれを参考にコードを修正するのは
> VB6.0 でも .NET でも同じかと、ただ、.NET でExcelのVBAを操作する場合は、
> VB6.0 と少し違いがあるので、その辺がかいてあるリンクを貼っております。

すいません。最終行を取得するような事が書いてあるとばかり思っていました。
組込定数一覧を見てみましたが
一覧にxlCellTypeLastCellというのがありません。
XL95というのがよくわからないのですが
Excel95という意味なのですか? Excel95にこの定数がないと出来ないという意味なのでしょうか?

[ツリー表示へ]
タイトルRe^6: Excelファイル
記事No2690
投稿日: 2005/12/01(Thu) 14:30
投稿者花ちゃん
> 組込定数一覧を見てみましたが
> 一覧にxlCellTypeLastCellというのがありません。
ありますが、[Excelの定数を調べる方法]に書いてあるようにオブジェクトブラウザで
検索して調べてみましたか?

因みに、あそこに書いてるどちらの方法でも見つける事ができました。

今一度下記の ★ Excelの定数の調べ方 に書いてある事をよく読んで下さい。
hhttp://www.bcap.co.jp/hanafusa/dotnet/Excel03.htm#teisuu

[ツリー表示へ]
タイトルRe^7: Excelファイル
記事No2709
投稿日: 2005/12/06(Tue) 12:02
投稿者奉行侍
[OSのVer]:Windows    [VBのVer]:VB.NET  

遅くなりました。

VBAで調べてみると

「Value   省略可能です。バリアント型 (Variant) の値を使用します。引数 Type に
xlCellTypeConstants または xlCellTypeFormulas を設定し、引数 Value を使うと、特定の種類の定数
や数式を含むセルだけを取得することができます。複数の値を加算して指定すると、複数の種類の定数
や数式を指定できます。この引数を省略すると、すべての定数および数式が対象になります。
XlSpecialCellsValues クラスの定数を使用します。」
と書かれています。

引数の所にExcel.XlSpecialCellsValueを入れるのですよね?
.SpecialCells(Excel.XlSpecialCellsValue).Row ←こういう事になるのでしょうか?
Excel.XlSpecialCellsValue ←にはまだ何か必要ですよね?
このあとはどうすればよいのですか?

Excel.XlSpecialCellsValue.xlLogical を入力すると空白の行で最終行扱いとなってしまいます。
本当の最終行を取得するにはどうすればよいのでしょうか?

[ツリー表示へ]
タイトルRe^8: Excelファイル
記事No2710
投稿日: 2005/12/06(Tue) 14:21
投稿者花ちゃん
> 「Value   省略可能です。バリアント型 (Variant) の値を使用します。引数 Type に

こちらは、第二引数で、下記では省略していたのでは。
> >VBA 的には、Sheet1.Cells.SpecialCells(xlCellTypeLastCell).Row …かな?
> VBAは↑ので取得できましたが

> .SpecialCells(Excel.XlSpecialCellsValue).Row ←こういう事になるのでしょうか?

第一引数の Type  は XlCellType クラスの定数を使用します。と書いてありますよね。

.SpecialCells(Excel. と入力すれば、候補に XlCellType が表示されますよね。
.SpecialCells(Excel.XlCellType. と入力すれば、候補に xlCellTypeLastCell が表示
されませんか?

> Excel.XlSpecialCellsValue.xlLogical を入力すると空白の行で最終行扱いとなってしまいます。
???

> 本当の最終行を取得するにはどうすればよいのでしょうか?
一度入力したが、後で削除したような行を除いたり、色々条件があるのなら、まず、
上記で最終行を取得してから逆順に、セル(行)の入力状態を調べて行けばいいのでは。
(シートの入力状態のパターンがある程度解っているなら他の方法もあるかと)

又、下記の リスト5 のように方法も。(これを応用するのも可)
hhttp://www.moug.net/skillup/nksw/nksw02-02.htm

[ツリー表示へ]
タイトルRe^9: Excelファイル
記事No2711
投稿日: 2005/12/06(Tue) 15:18
投稿者奉行侍
[OSのVer]:Windows    [VBのVer]:VB.NET  

花ちゃんさん、最後までありがとうございました。
魔界の仮面弁士さんもありがとうございました。

VB.NetとVBAは似ているのに、なして同じように出来ればいいのにと思ってしまいました。
COM(Excel等)の使い方は気をつけないといけないですね。

[ツリー表示へ]