- PR -

Excelシートのセルを変数で指定したいのですけれど

投稿者投稿内容
初心者です
会議室デビュー日: 2006/07/04
投稿数: 14
投稿日時: 2006-07-04 15:15
VB.net(2003)でExcelシートに罫線を
xlSheet.Range("A30:K30").Borders(7).LineStyle = 1
のような記述で引きたいのですけれど
"A30:K30" を変数で指定したいのですけれど、思ったように指定出来ません。
どのようにしたら良いのでしょうか?
じゃんぬねっと
ぬし
会議室デビュー日: 2004/12/22
投稿数: 7811
お住まい・勤務地: 愛知県名古屋市
投稿日時: 2006-07-04 15:23
引用:

未記入さんの書き込み (2006-07-04 15:15) より:

VB.net(2003)でExcelシートに罫線を xlSheet.Range("A30:K30").Borders(7).LineStyle = 1 のような記述で引きたいのですけれど "A30:K30" を変数で指定したいのですけれど、思ったように指定出来ません。


"A30:K30" はリテラル文字列です。

変数で表すと、
 Dim s As Strng = "A30:K30"
です。

おそらく、そんなことを伺っているのではないかと思いますが、
上記の文章からですと、'どのように' 指定したいのかがわからないです。

_________________
C# と VB.NET の入門サイト
じゃんぬねっと日誌
初心者です
会議室デビュー日: 2006/07/04
投稿数: 14
投稿日時: 2006-07-04 15:37
説明不足で申し訳ありません。
"A30:K30"を

Dim s As Strng  (sはA30の変数)
Dim x As Strng  (xはK30の変数)

のように定義した変数 s x に
プログラムでセルを指定して、罫線を引くようにしたいのですけれど。

初心者の為、うまく説明が出来ないのですけれど、
よろしくお願いします。
salf
会議室デビュー日: 2006/06/29
投稿数: 5
投稿日時: 2006-07-04 15:54
引用:

説明不足で申し訳ありません。
"A30:K30"を

Dim s As Strng  (sはA30の変数)
Dim x As Strng  (xはK30の変数)

のように定義した変数 s x に
プログラムでセルを指定して、罫線を引くようにしたいのですけれど。



上記のようには指定する方法は知りませんが、

コード:
Range(Cells(RowIndex,ColumnIndex),Cells(RowIndex,ColumnIndex)


というふうに指定できますよ。

じゃんぬねっと
ぬし
会議室デビュー日: 2004/12/22
投稿数: 7811
お住まい・勤務地: 愛知県名古屋市
投稿日時: 2006-07-04 16:04
引用:

未記入さんの書き込み (2006-07-04 15:37) より:

"A30:K30"を

Dim s As Strng  (sはA30の変数)
Dim x As Strng  (xはK30の変数)

のように定義した変数 s x に
プログラムでセルを指定して、罫線を引くようにしたいのですけれど。


Strng とは文字列のことでしょうか?

文字列であるならば、結局のところ、
 Dim s As String = "A30"
 Dim x As String = "K30"
 Dim xlRange As Excel.Range = xlSheet.Range(s & ":" & x)
という意味になっちゃいますけど、そんなことがしたいわけではないですよね?

それと、

引用:

VB.net(2003)で


と書いてありますが、Excel へのアクセスは何で行っているんでしょうか?
COM Interop (Microsoft Excel xx.x Object Library) の場合、

引用:

xlSheet.Range("A30:K30").Borders(7).LineStyle = 1


このような書き方は危険です。
メモリリークを起こし、Excel のプロセスが解放されなくなります。

# これは、何度か書かせて頂いていることですので、詳細は検索すれば見つかると思います。

_________________
C# と VB.NET の入門サイト
じゃんぬねっと日誌
初心者です
会議室デビュー日: 2006/07/04
投稿数: 14
投稿日時: 2006-07-04 17:29
回答ありがとうございます。
  MRComObject(xlSheet) 'xlSheet の解放
MRComObject(xlSheets) 'xlSheets の解放
MRComObject(xlBook) 'xlBook の解放
MRComObject(xlBooks) 'xlBooks の解放
MRComObject(xlApp) 'xlApp を解放
のような記述で解放はおこなっていますけれど、
  xlSheet.Range("A30:K30").Borders(7).LineStyle = 1
このような記述で罫線を引くのは危険なのでしょうか?
(検索をおこなったのですけれど、詳細がわからなかったので
 参照先等 教えてください)

また、
正しい罫線の引き方の参照先等 お手数ですけれど、教えてください。
じゃんぬねっと
ぬし
会議室デビュー日: 2004/12/22
投稿数: 7811
お住まい・勤務地: 愛知県名古屋市
投稿日時: 2006-07-04 17:40
引用:

未記入さんの書き込み (2006-07-04 17:29) より:

xlSheet.Range("A30:K30").Borders(7).LineStyle = 1
このような記述で罫線を引くのは危険なのでしょうか?


COM オブジェクトなのですから、Excel.Worksheet だろうと、Excel.Range だろうと同じことです。

引用:

MRComObject(xlSheet) 'xlSheet の解放
MRComObject(xlSheets) 'xlSheets の解放
MRComObject(xlBook) 'xlBook の解放
MRComObject(xlBooks) 'xlBooks の解放
MRComObject(xlApp) 'xlApp を解放


これらと同様に、参照カウントをデクリメントしなければなりません。

# ところで、MRComObject というメソッドは、花ちゃんさんのサイトから引用したものですね?
# コメントがあるので、何をしているのか大体わかりますが...

引用:

正しい罫線の引き方の参照先等 お手数ですけれど、教えてください。


そういうわけで、他の COM オブジェクトと '同じ扱い' をするだけで良いです。
現状そうしているであろう、xlApp, xlBooks, xlBook, xlSheets, xlSheet のように、
参照を取り、System.Runtime.InteropServices.Marshal.ReleaseComObject メソッドで解放してください。

# 本題の、セルの位置指定の件は、あんなもので宜しかったのでしょうか...?

_________________
C# と VB.NET の入門サイト
じゃんぬねっと日誌
初心者です
会議室デビュー日: 2006/07/04
投稿数: 14
投稿日時: 2006-07-04 17:51
本題の、セルの位置指定の件は、アドバイスを参考にさせて頂き
出来るようになりました。
ありがとうございました。

スキルアップ/キャリアアップ(JOB@IT)