- 締切済み
エクセルの選択範囲のセルの値を取得する方法(VB6.0)
visual vasic 6.0を使っています。 エクセルにおいて選択範囲のセルの値あるいはテキストを取得する 方法を教えていただけないでしょうか? よろしくお願いいたします。
- みんなの回答 (3)
- 専門家の回答
みんなの回答
- redfox63
- ベストアンサー率71% (1325/1856)
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では省略可能なオブジェクトもすべて指定しないといけませんよ
- imogasi
- ベストアンサー率27% (4737/17069)
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のこと(エクセルの操作との対応性など)を経験して・知ってないと、コードがかけない。甘く見ないこと。
補足
ありがとうございます。 コードまでつけていただきありがとうございます。 もう一つ質問ですが、 現在立ち上がっている状態にある エクセルシート内のセル範囲を VBのコードから取得したいのですが、 Selection.Rows.Count を使用してもうまくいかないのですが やはり甘くみているようで、うまくいきません。 他の方法がないものでしょうか?
- n-jun
- ベストアンサー率33% (959/2873)
http://hanatyan.sakura.ne.jp/ 「Excel & Word関係」が参考になると思います。
お礼
明快な回答ありがとうございました。 いろいろと勉強させていただいた結果解決することができました。 感謝です。 結局最後の選択範囲の取得は ActiveSheetを指定せずになぜか oXL.Selection.Rows.Count で取得することができました。 感激です。 ありがとうございました。