プロが教える店舗&オフィスのセキュリティ対策術

visual vasic 6.0を使っています。

エクセルにおいて選択範囲のセルの値あるいはテキストを取得する

方法を教えていただけないでしょうか?

よろしくお願いいたします。

A 回答 (3件)

VB6側からExcelを起動するなら CreateObject


既起動のExcelを取得するなら GetObject
を使用します

dim oXL as Object
Set oXL = nothing
On Error Resume Next
Set oXL = GetObject(,"Excel.Application")
On Error goto 0
if oXL is Nothing then
  On Error Resume Next
  Set oXL = CreateObject("Excel.Application")
  On Error goto 0
End if
if oXL is Nothing then
  MsgBox "Excelの取得および起動に失敗しました"
  Exit Sub
end if

選択範囲の取得は
dim oRng as Object
Set oRng = oXL.ActiveSheet.Selection
等として 選択されているオブジェクトを取得しましょう
その上で
oRng.Rows.Count
等を取得すればいいでしょう

Excel-VBAでは省略可能なオブジェクトもすべて指定しないといけませんよ
    • good
    • 0
この回答へのお礼

明快な回答ありがとうございました。

いろいろと勉強させていただいた結果解決することができました。
感謝です。

結局最後の選択範囲の取得は
ActiveSheetを指定せずになぜか
oXL.Selection.Rows.Count
で取得することができました。
感激です。

ありがとうございました。

お礼日時:2008/09/29 20:57

VB6から、Excel.ApprecationをCreateしてVisibleにして


シート名をパス名.ブック.シート名のカタチでObjectを捉える(Sheetとする)。
http://homepage1.nifty.com/rucio/main/technique/ …
ほかWEBで多数実例が載っている。「Createobject excel」ででも
Googleなどで照会。
後は
下記コードを入れたブックから実行して、Book2.xlsのシート1のRange("A1:B2")を表示する例
Sub test01()
Dim cl As Range
Dim ExcelApp As Object 'Excel.Application
Dim Book As Object 'Excel.Workbook
Dim Sheet As Object 'Excel.Worksheet
Set ExcelApp = CreateObject("Excel.Application")
ExcelApp.Visible = True
ExcelApp.Workbooks.Open "Book2.xls"
Set Book = ExcelApp.Workbooks("Book2.xls")
Set Sheet = Book.Worksheets(1)
Sheet.Range("B2").Value = "こんにちは"
'---
For Each cl In Sheet.Range("A1:B2")
MsgBox cl
Next
'---
Book.Close
ExcelApp.Quit
End Sub
のように、エクセルの世界にはいって、セルを対象にするときは上記で言うSheet すなわちSheet.XXXのように普通のエクセル内でのVBAでは、つけない場合でも、Sheet.をつけてコードを書いてください。
またエクセルの定数xlxxxの使用は注意すること。
ーーー
>セルの値あるいはテキストを取得する・・
エクセルには、セルの値(Value)として
数値 かまたは
文字列
論理値
が入っており、この文字列のことを質問者は「テキスト」といっているのでしょうが、コントロールのようにテキストというプロパティはセルにありませんので不適切用法と思う。
ーーー
VBは判っていても、エクセルの世界にはいると、エクセルVBAのこと(エクセルの操作との対応性など)を経験して・知ってないと、コードがかけない。甘く見ないこと。

この回答への補足

ありがとうございます。
コードまでつけていただきありがとうございます。

もう一つ質問ですが、
現在立ち上がっている状態にある
エクセルシート内のセル範囲を
VBのコードから取得したいのですが、
Selection.Rows.Count を使用してもうまくいかないのですが

やはり甘くみているようで、うまくいきません。
他の方法がないものでしょうか?

補足日時:2008/09/27 20:41
    • good
    • 0

http://hanatyan.sakura.ne.jp/
「Excel & Word関係」が参考になると思います。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!