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では省略可能なオブジェクトもすべて指定しないといけませんよ
VB6から、Excel.ApprecationをCreateしてVisibleにして
シート名をパス名.ブック.シート名のカタチでObjectを捉える(Sheetとする)。
http://homepage1.nifty.com/rucio/main/technique/teq_15.htm
ほか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のこと(エクセルの操作との対応性など)を経験して・知ってないと、コードがかけない。甘く見ないこと。
お礼
明快な回答ありがとうございました。 いろいろと勉強させていただいた結果解決することができました。 感謝です。 結局最後の選択範囲の取得は ActiveSheetを指定せずになぜか oXL.Selection.Rows.Count で取得することができました。 感激です。 ありがとうございました。