A 回答 (3件)
- 最新から表示
- 回答順に表示
No.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では省略可能なオブジェクトもすべて指定しないといけませんよ
明快な回答ありがとうございました。
いろいろと勉強させていただいた結果解決することができました。
感謝です。
結局最後の選択範囲の取得は
ActiveSheetを指定せずになぜか
oXL.Selection.Rows.Count
で取得することができました。
感激です。
ありがとうございました。
No.2
- 回答日時:
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 を使用してもうまくいかないのですが
やはり甘くみているようで、うまくいきません。
他の方法がないものでしょうか?
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) Excelのマクロコードについて教えてください。 1 2022/03/27 13:25
- Excel(エクセル) 【VBA】エクセルで選択した範囲の値のみをクリップボードにコピーするコードについて 3 2023/03/08 17:41
- Excel(エクセル) エクセル 関数参照範囲のセルの表示 1 2023/03/16 14:55
- Visual Basic(VBA) シート間で同じ値があったら指定範囲をコピーして貼り付け 1 2022/11/07 08:01
- Excel(エクセル) マクロ セルの選択 5 2022/08/12 22:47
- Excel(エクセル) Excel VBAプルダウンの値を変えながら2枚ずつ印刷する方法? 4 2022/05/27 13:04
- Excel(エクセル) エクセルの散布図で新たに入力した値のデータラベルが空欄になる現象 1 2022/04/26 09:31
- Excel(エクセル) エクセルで重複データを行ごとに抽出したい 4 2022/12/05 08:18
- Excel(エクセル) Excelのプルダウンメニューの内容を人によって可変する方法 2 2023/03/28 14:52
- PDF PDFの表がエクセルに貼り付けられなくなってしまいました。 5 2022/06/03 09:07
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
VBAマクロ実行時エラーの修正に...
-
Excelで空白セル直前のセルデー...
-
Excel UserForm の表示位置
-
エクセルVBA 配列からセルに「...
-
【Excel VBA】一番右端セルまで...
-
入力規則のリスト選択
-
関数の引数でrangeを指定したとき
-
VBA:日付を配列に入れ別セルに...
-
複数指定セルの可視セルのみを...
-
VBA にて、条件付き書式で背景...
-
VBAについて
-
Excel VBA IF文がうまく動作し...
-
【VBA】【ユーザーフォーム_Lis...
-
EXCEL VBA 文中の書式ごと複写...
-
DataGridViewのフォーカス遷移...
-
[Excel VBA] このコードでは行...
-
C# DataGridViewで複数選択した...
-
VBAでユーザーフォームにセル値...
-
指定した文字から指定した文字...
-
Excel VBAでCheckboxの名前を変...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
VBAマクロ実行時エラーの修正に...
-
エクセルVBA 配列からセルに「...
-
VBA 複数条件の分岐処理の上手...
-
Excelで空白セル直前のセルデー...
-
Excel UserForm の表示位置
-
EXCEL VBA 文中の書式ごと複写...
-
特定の色のついたセルを削除
-
VBA にて、条件付き書式で背景...
-
VBAでユーザーフォームにセル値...
-
【VBA】写真の貼り付けコードが...
-
【Excel VBA】一番右端セルまで...
-
Excel VBAでCheckboxの名前を変...
-
エクセルの合計を自動で表示さ...
-
【VBA】【ユーザーフォーム_Lis...
-
VBA:日付を配列に入れ別セルに...
-
Excel VBA IF文がうまく動作し...
-
下記のマクロの説明(意味)を...
-
入力規則のリスト選択
-
C# DataGridViewで複数選択した...
-
関数の引数でrangeを指定したとき
おすすめ情報