[リストへもどる]
一括表示

投稿時間:2003/03/29(Sat) 09:41
投稿者名:ひとし
Eメール:
URL :
タイトル:
VBからEXCELで選択されているセル範囲を取得したい
VB初心者で、ここを参考にいろいろプログラムを作らせてもらっています。
今回、VBでのEXCELのセル選択範囲の取得方法がわからず困っています。
お教えください。

<やりたいこと>
1.VBで指定のEXCELファイルを起動します。
2.EXCELのセル範囲を指定してもらいます。(手動)
3.VBのプログラムを実行するとEXCELの選択セル範囲を取得する。
4.その選択範囲の内容をテキストにし、保存する。

上記の3項目がわからなくて行き詰っています。
よろしくお願いいたします。

投稿時間:2003/03/29(Sat) 11:00
投稿者名:花ちゃん
Eメール:
URL :
タイトル:
Re: VBからEXCELで選択されているセル範囲を取得したい
ここのExcel&Word関係に書いてありますので見て下さい。

投稿時間:2003/03/29(Sat) 12:24
投稿者名:ひとし
Eメール:
URL :
タイトル:
VBからEXCELで選択されているセル範囲を取得したい
> ここのExcel&Word関係に書いてありますので見て下さい。

すでに見たのですがわかりませんでした。
申し訳けありませんが、どの項目かお教えください。

私の書き方が悪かったかもしれないので、もう少し書きます。

起動させたEXCELで利用者が選び直したセル範囲(任意)の
セルの位置を知りたいのです。
セルがわかれば、その値をテキストにまとめて行くのですが。。。

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

投稿時間:2003/03/29(Sat) 15:57
投稿者名:花ちゃん
Eメール:
URL :
タイトル:
Re: VBからEXCELで選択されているセル範囲を取得したい
下記を試して見て下さい。

    Debug.Print xlApp.Selection.Address
    Debug.Print xlApp.Selection.Address(False, False)

又は

With xlApp.Selection
  MsgBox "選択範囲の左上のセルの行数は " & .Row & "行目,"
  MsgBox "選択範囲の左上のセルの列数は " & .Columns(1).Column & "列目"
  MsgBox "選択範囲の右下のセルの行数は " & .Rows(.Rows.Count).Row & "行目,"
  MsgBox "選択範囲の右下のセルの列数は " & .Columns(.Columns.Count).Column & "列目"
  MsgBox "選択範囲の右上のセルの行数は " & .Row & "行目,"
  MsgBox "選択範囲の右上のセルの列数は " & .Columns(.Columns.Count).Column & "列目"
  MsgBox "選択範囲の左下のセルの行数は " & .Rows(.Rows.Count).Row & "行目,"
  MsgBox "選択範囲の左下のセルの列数は " & .Columns(1).Column & "列目"
End With

投稿時間:2003/03/29(Sat) 23:11
投稿者名:ひとし
Eメール:
URL :
タイトル:
Re^2: VBからEXCELで選択されているセル範囲を取得したい
お教えいただいたものをコピーして使用しました。
試してみましたが、以下のようなメッセージが出て動作しません。
「実行時エラー '91'  オブジェクト変数または With ブロック変数が設定されていません。」
どこが悪いんでしょうか?
お手数をお掛けしますが、よろしくお願い致します。

投稿時間:2003/03/29(Sat) 23:59
投稿者名:花ちゃん
Eメール:
URL :
タイトル:
Re^3: VBからEXCELで選択されているセル範囲を取得したい
エラーが出るコードを投稿して下さい(省略はしないで)
それとExcelのバージョン等の環境も忘れずに、又参照設定は何にしているのかも

下記を試して下さい。(参照設定は忘れずに)
Private Sub Command1_Click()
    Dim xlApp   As Excel.Application
    Dim xlBook  As Excel.Workbook
    Dim xlSheet As Excel.Worksheet
    Set xlApp = CreateObject("Excel.Application")
    Set xlBook = xlApp.Workbooks.Add
    Set xlSheet = xlBook.Worksheets(1)
    xlApp.Visible = True
    
    MsgBox "範囲を選択して下さい"
    
    With xlApp.Selection
        MsgBox "選択範囲は" & .Address & "です"
        MsgBox "選択範囲は" & .Address(False, False) & "です"
        
        MsgBox "選択範囲の左上のセルの行数は " & .Row & "行目,"
        MsgBox "選択範囲の左上のセルの列数は " & .Columns(1).Column & "列目"
        MsgBox "選択範囲の右下のセルの行数は " & .Rows(.Rows.Count).Row & "行目,"
        MsgBox "選択範囲の右下のセルの列数は " & .Columns(.Columns.Count).Column & "列目"
        MsgBox "選択範囲の右上のセルの行数は " & .Row & "行目,"
        MsgBox "選択範囲の右上のセルの列数は " & .Columns(.Columns.Count).Column & "列目"
        MsgBox "選択範囲の左下のセルの行数は " & .Rows(.Rows.Count).Row & "行目,"
        MsgBox "選択範囲の左下のセルの列数は " & .Columns(1).Column & "列目"
    End With
    
    xlApp.Quit
    Set xlSheet = Nothing
    Set xlBook = Nothing
    Set xlApp = Nothing
End Sub

投稿時間:2003/03/30(Sun) 10:02
投稿者名:ひとし
Eメール:
URL :
タイトル:
Re^4: VBからEXCELで選択されているセル範囲を取得したい
すみません。
こういった書き込みは、初めてなので。

私がやってみたものは、以下のものです。

Public xlApp   As Excel.Application
Public xlBook As Excel.Workbook
Public xlSheet As Excel.Worksheet

'-------------------------------------------------

Private Sub Command6_Click()
    Text4.Text = "E:\workvb\読上\TEST.XLS"
    'セル選択範囲を取得
    Set xlApp = New Excel.Application
    Set xlBook = GetObject(Text4.Text)
    Set xlSheet = xlBook.ActiveSheet
    With xlApp
        iDAd11G = CStr(Selection.Row)   '選択セルの左上の行番号   <----------ここで止まります
        iDAd11R = CStr(Selection.Columns(1).Column)    '選択セルの左上の列番号
        iDAd12G = CStr(Selection.Rows(Selection.Rows.Count).Row)   '選択セルの右下の行番号
        iDAd12R = CStr(Selection.Columns(Selection.Columns.Count).Column)    '選択セルの右下の列番号
    End With

'---------ここから取得したセル位置を利用し、処理します。---------------

End Sub

次の書いていただいたコードも早速やってみます。
ありがとうございます。

投稿時間:2003/03/30(Sun) 11:36
投稿者名:花ちゃん
Eメール:
URL :
タイトル:
Re^5:EXCELの選択セル範囲を取得
コードを省略したり、環境を書いてもらわないとExcelの場合エラーが発生して
止まった所に原因があるとは限りませんので適切なアドバイスが出来ないし、
解決を長引かせるだけです。

このコードですと、(GetObject(Text4.Text))Excelファイルが表示されていない状態
(ウィンドウが閉じたまま)です。従ってエラーが発生しております。
又、どこでExcelのシートの範囲を選択するのですか?範囲が選択されていないのに
選択範囲を取得しても!!

少し変更して見ました。
Option Explicit

Public xlApp   As Excel.Application
Public xlBook As Excel.Workbook
Public xlSheet As Excel.Worksheet

'-------------------------------------------------

Private Sub Command6_Click()
    Dim iDAd11G As String
    Dim iDAd11R As String
    Dim iDAd12G As String
    Dim iDAd12R As String
    
    Text4.Text = "E:\workvb\読上\TEST.XLS"
    'セル選択範囲を取得
    Set xlApp = New Excel.Application
    
    '============以下の部分変更===============
    Set xlBook = xlApp.Workbooks.Open(Text4.Text)
    Set xlSheet = xlBook.Worksheets(1)
    
    xlApp.Visible = True
    MsgBox "範囲を選択して下さい"
    
    With xlApp.Selection
        iDAd11G = CStr(.Row)   '選択セルの左上の行番号   <----------ここで止まります
        iDAd11R = CStr(.Columns(1).Column)    '選択セルの左上の列番号
        iDAd12G = CStr(.Rows(.Rows.Count).Row)   '選択セルの右下の行番号
        iDAd12R = CStr(.Columns(.Columns.Count).Column)    '選択セルの右下の列番号
    End With

'---------ここから取得したセル位置を利用し、処理します。---------------
   ' xlApp.Quit
    Set xlSheet = Nothing
    Set xlBook = Nothing
    Set xlApp = Nothing
End Sub

投稿時間:2003/03/30(Sun) 13:27
投稿者名:ひとし
Eメール:
URL :
タイトル:
Re^6:Excelの選択セル範囲を
本当にすみませんでした。

それから、お書きいただいたコードでプログラムが
動作しました。
本当にありがとうございました。

また、不慣れな部分、お詫びいたします。
また、疑問点が出た時は、お願いいたします。
その時は、今回の質問方法のご指導を生かし、
少しでもご迷惑をおかけしないようがんばります。

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