Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


11513 / 13645 ツリー ←次へ | 前へ→

【15662】VB6からExcleの値を使いたい VB初心者 04/7/1(木) 18:15 質問[未読]
【15663】Re:VB6からExcleの値を使いたい IROC 04/7/1(木) 18:23 回答[未読]
【15666】Re:VB6からExcleの値を使いたい VB初心者 04/7/1(木) 18:44 お礼[未読]
【15664】Re:VB6からExcleの値を使いたい ちゃっぴ 04/7/1(木) 18:28 回答[未読]
【15665】Re:VB6からExcleの値を使いたい VB初心者 04/7/1(木) 18:42 お礼[未読]
【15696】Re:VB6からExcleの値を使いたい ちん 04/7/2(金) 21:58 回答[未読]
【15700】Re:VB6からExcleの値を使いたい 初心者 04/7/3(土) 11:38 質問[未読]
【15704】Re:VB6からExcleの値を使いたい IROC 04/7/3(土) 12:45 回答[未読]
【15710】Re:VB6からExcleの値を使いたい ちん 04/7/3(土) 17:07 回答[未読]
【15711】Re:VB6からExcleの値を使いたい 初心者 04/7/3(土) 18:08 お礼[未読]

【15662】VB6からExcleの値を使いたい
質問  VB初心者  - 04/7/1(木) 18:15 -

引用なし
パスワード
   VB6からExcleを表示させて任意の行をアクテイブにして番号を取得して
各セルの値をVB6でしたいのですがどの様にすればできるのでしょうか
フアイル名は指定しないのでExcel表示の後フアイル名を指定してデ−タ表示
しています。Cells(Target.Row, 1).Valueの値をVB6で使用したいのです
VB6で変数を設定してもVBでは無視されてしまいます。
説明がわかりずらいでしょうがどなたかお教えください。
使用環境 VB6(SP5) Excle 2002(SP3)です

VB6で
Private Sub Command3_Click() 'Excleファイルを開く
  Dim xlApp As Object
 
 Set xlApp = CreateObject("Excel.Application")
  xlApp.Visible = True
  MsgBox " eee" '--- Excle画面を表示しておく為  
 xlApp.Application.Quit 
  Set xlApp = Nothing 
  Set xlBook = xlApp.Workbooks.open("c:\aaa.xls")
End Sub

VBで
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
  Dim mo As String
  '指定したセルの値を表示   
  MsgBox Cells(Target.Row, 1).Value: MsgBox Cells(Target.Row, 2).Value
End Sub

【15663】Re:VB6からExcleの値を使いたい
回答  IROC  - 04/7/1(木) 18:23 -

引用なし
パスワード
   >Cells(Target.Row, 1).Valueの値

を、

Worksheet_BeforeDoubleClick マクロの中で、

どこか特定のシートの、特定のセルに書き出しておき、

VB6側で取得しては如何ですか?

つまりセルを値渡しの媒介に使う方法です。

【15664】Re:VB6からExcleの値を使いたい
回答  ちゃっぴ  - 04/7/1(木) 18:28 -

引用なし
パスワード
   >  xlApp.Application.Quit 
>  Set xlApp = Nothing 
>  Set xlBook = xlApp.Workbooks.open("c:\aaa.xls")

エクセルを終了させた後、ブックをオープンさせるというのが
意味がわからないのですが・・・

【15665】Re:VB6からExcleの値を使いたい
お礼  VB初心者  - 04/7/1(木) 18:42 -

引用なし
パスワード
   ▼ちゃっぴ さん:
>>  xlApp.Application.Quit 
>>  Set xlApp = Nothing 
>>  Set xlBook = xlApp.Workbooks.open("c:\aaa.xls")
>
>エクセルを終了させた後、ブックをオープンさせるというのが
>意味がわからないのですが・・・

ありがとうございます。
Set xlBook = xlApp.Workbooks.open("c:\aaa.xls")はサンプルの消し忘れです。
確かにエクセルを終了させた後、ブックをオープンは意味がないですよね

【15666】Re:VB6からExcleの値を使いたい
お礼  VB初心者  - 04/7/1(木) 18:44 -

引用なし
パスワード
   ▼IROC さん:
>>Cells(Target.Row, 1).Valueの値
>
>を、
>
>Worksheet_BeforeDoubleClick マクロの中で、
>
>どこか特定のシートの、特定のセルに書き出しておき、
>
>VB6側で取得しては如何ですか?
>
>つまりセルを値渡しの媒介に使う方法です。

早速の教えありがとうございます。
試ししてみます。

【15696】Re:VB6からExcleの値を使いたい
回答  ちん  - 04/7/2(金) 21:58 -

引用なし
パスワード
   皆さん今晩は、ちんといいます
>  xlApp.Visible = True 命令の下に、
MSGBOX xlApp.Application.Cells(Target.Row, 1).Value を入れてみて下さい。

▼VB初心者 さん:
>VB6からExcleを表示させて任意の行をアクテイブにして番号を取得して
>各セルの値をVB6でしたいのですがどの様にすればできるのでしょうか
>フアイル名は指定しないのでExcel表示の後フアイル名を指定してデ−タ表示
>しています。Cells(Target.Row, 1).Valueの値をVB6で使用したいのです
>VB6で変数を設定してもVBでは無視されてしまいます。
>説明がわかりずらいでしょうがどなたかお教えください。
>使用環境 VB6(SP5) Excle 2002(SP3)です
>
>VB6で
>Private Sub Command3_Click() 'Excleファイルを開く
>  Dim xlApp As Object
> 
>  Set xlApp = CreateObject("Excel.Application")
>  xlApp.Visible = True
Msgbox xlApp.Application.Cells(Target.Row, 1).Value
※この命令を追記すれば、エクセルから値が取得・書換えもできるはずです。
ただし、Excel表のActiveになってる画面からの取得になります。

以上、参考までに・・・

>  MsgBox " eee" '--- Excle画面を表示しておく為  
>  xlApp.Application.Quit 
>  Set xlApp = Nothing 
>  Set xlBook = xlApp.Workbooks.open("c:\aaa.xls")
>End Sub
>
>VBで
>Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
>  Dim mo As String
>  '指定したセルの値を表示   
>  MsgBox Cells(Target.Row, 1).Value: MsgBox Cells(Target.Row, 2).Value
>End Sub

【15700】Re:VB6からExcleの値を使いたい
質問  初心者  - 04/7/3(土) 11:38 -

引用なし
パスワード
   ちんさん回答有り難うございます。
ご指示の様に追記すると変数定義エ−ラが起きます。
ExcleからVB6に(Target.Row)の変数を引き継ぐ方法をお教えください。

▼ちん さん:
>皆さん今晩は、ちんといいます
>>  xlApp.Visible = True 命令の下に、
>MSGBOX xlApp.Application.Cells(Target.Row, 1).Value を入れてみて下さい。
>
>▼VB初心者 さん:
>>VB6からExcleを表示させて任意の行をアクテイブにして番号を取得して
>>各セルの値をVB6でしたいのですがどの様にすればできるのでしょうか
>>フアイル名は指定しないのでExcel表示の後フアイル名を指定してデ−タ表示
>>しています。Cells(Target.Row, 1).Valueの値をVB6で使用したいのです
>>VB6で変数を設定してもVBでは無視されてしまいます。
>>説明がわかりずらいでしょうがどなたかお教えください。
>>使用環境 VB6(SP5) Excle 2002(SP3)です
>>
>>VB6で
>>Private Sub Command3_Click() 'Excleファイルを開く
>>  Dim xlApp As Object
>> 
>>  Set xlApp = CreateObject("Excel.Application")
>>  xlApp.Visible = True
>Msgbox xlApp.Application.Cells(Target.Row, 1).Value
>※この命令を追記すれば、エクセルから値が取得・書換えもできるはずです。
>ただし、Excel表のActiveになってる画面からの取得になります。
>
>以上、参考までに・・・
>
>>  MsgBox " eee" '--- Excle画面を表示しておく為  
>>  xlApp.Application.Quit 
>>  Set xlApp = Nothing 
>>  Set xlBook = xlApp.Workbooks.open("c:\aaa.xls")
>>End Sub
>>
>>VBで
>>Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
>>  Dim mo As String
>>  '指定したセルの値を表示   
>>  MsgBox Cells(Target.Row, 1).Value: MsgBox Cells(Target.Row, 2).Value
>>End Sub

【15704】Re:VB6からExcleの値を使いたい
回答  IROC  - 04/7/3(土) 12:45 -

引用なし
パスワード
   セルを媒介に使うのが嫌でしたら、
テキストファイルを一時的に作成して、
値の受け渡しに使っては如何でしょうか?

【15710】Re:VB6からExcleの値を使いたい
回答  ちん  - 04/7/3(土) 17:07 -

引用なし
パスワード
   こんばんは、ちんといいます。
Private Sub Command1_Click()
  Dim I_xlsBOOK        As Excel.Workbook  'EXCELのブック
  Dim I_xlsSHEET        As Sheets      'EXCELのシート
  
  Set I_xlsBOOK = GetObject("c:\取引先マスタ.xls")

  Set I_xlsSHEET = I_xlsBOOK.Worksheets
  I_xlsBOOK.Application.Visible = True 'Excelを表示する

  I_xlsBOOK.Parent.Windows(1).Visible = True
  DoEvents
  
  
  MsgBox I_xlsSHEET.Application.Cells(1, 2).Value
  MsgBox I_xlsSHEET.Application.Cells(2, 2).Value
  For i1 = 1 To 1000: DoEvents: Next i1

  'EXCELのマクロ(Macro1)を実行する。時は、下記の命令一行追記
  I_xlsBOOK.Application.Run "'c:\取引先マスタ.xls'!Macro1"
  
  DoEvents
  I_xlsBOOK.Application.Quit
  DoEvents
  
  I_xlsBOOK.Application.Quit
  For i1 = 1 To 1000: DoEvents: Next i1
  DoEvents
    
  'EXCELのクローズ
  Set I_xlsBOOK = Nothing
  Set I_xlsSHEET = Nothing
  Sleep (200)
  DoEvents
 
  Exit Sub
  
End Sub

※VB6.0の参照設定でMicrosoft Excel10.0 Objectをチェックして下さい。
IROCさんが言うように、テキストファイルで取得するのと、
Excel表から直接取得するのでは、断然にテキストファイルでの取得が早いですよ。

参考までに、私の場合は、
・Excel表から大量データを取得する場合、
 (1)VB6.0からExcel表を起動する。
 (2)VB6.0からExcel表のマクロ(VBAで作成した言語)を起動する。
 (3)Excel表のマクロで対象データをテキストファイルに出力する。

・VBで抽出した大量データをExcel表にセットする場合、
 (1)VB6.0からExcel表を起動する。
 (2)VB6.0からExcel表のマクロ(VBAで作成した言語)を起動する。
 (3)Excel表のマクロで対象データをExcelの各セルにセットする。
簡単にいうとこんな感じでしょうか?
私は、VB6.0の帳票など、すべてExcel表で印刷指示しております。

ですから、こちらのページはとても参考になります。
以上、参考までに・・・


▼ちん さん:
>皆さん今晩は、ちんといいます
>>  xlApp.Visible = True 命令の下に、
>MSGBOX xlApp.Application.Cells(Target.Row, 1).Value を入れてみて下さい。
>
>▼VB初心者 さん:
>>VB6からExcleを表示させて任意の行をアクテイブにして番号を取得して
>>各セルの値をVB6でしたいのですがどの様にすればできるのでしょうか
>>フアイル名は指定しないのでExcel表示の後フアイル名を指定してデ−タ表示
>>しています。Cells(Target.Row, 1).Valueの値をVB6で使用したいのです
>>VB6で変数を設定してもVBでは無視されてしまいます。
>>説明がわかりずらいでしょうがどなたかお教えください。
>>使用環境 VB6(SP5) Excle 2002(SP3)です
>>
>>VB6で
>>Private Sub Command3_Click() 'Excleファイルを開く
>>  Dim xlApp As Object
>> 
>>  Set xlApp = CreateObject("Excel.Application")
>>  xlApp.Visible = True
>Msgbox xlApp.Application.Cells(Target.Row, 1).Value
>※この命令を追記すれば、エクセルから値が取得・書換えもできるはずです。
>ただし、Excel表のActiveになってる画面からの取得になります。
>
>以上、参考までに・・・
>
>>  MsgBox " eee" '--- Excle画面を表示しておく為  
>>  xlApp.Application.Quit 
>>  Set xlApp = Nothing 
>>  Set xlBook = xlApp.Workbooks.open("c:\aaa.xls")
>>End Sub
>>
>>VBで
>>Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
>>  Dim mo As String
>>  '指定したセルの値を表示   
>>  MsgBox Cells(Target.Row, 1).Value: MsgBox Cells(Target.Row, 2).Value
>>End Sub

【15711】Re:VB6からExcleの値を使いたい
お礼  初心者  - 04/7/3(土) 18:08 -

引用なし
パスワード
   有り難うございます。
参考ソ−スフアイルをみて何とか理解できました。
またわからない時にはご教示をお願いします。

▼ちん さん:
>こんばんは、ちんといいます。
>Private Sub Command1_Click()
>  Dim I_xlsBOOK        As Excel.Workbook  'EXCELのブック
>  Dim I_xlsSHEET        As Sheets      'EXCELのシート
>  
>  Set I_xlsBOOK = GetObject("c:\取引先マスタ.xls")
>
>  Set I_xlsSHEET = I_xlsBOOK.Worksheets
>  I_xlsBOOK.Application.Visible = True 'Excelを表示する
>
>  I_xlsBOOK.Parent.Windows(1).Visible = True
>  DoEvents
>  
>  
>  MsgBox I_xlsSHEET.Application.Cells(1, 2).Value
>  MsgBox I_xlsSHEET.Application.Cells(2, 2).Value
>  For i1 = 1 To 1000: DoEvents: Next i1
>
>  'EXCELのマクロ(Macro1)を実行する。時は、下記の命令一行追記
>  I_xlsBOOK.Application.Run "'c:\取引先マスタ.xls'!Macro1"
>  
>  DoEvents
>  I_xlsBOOK.Application.Quit
>  DoEvents
>  
>  I_xlsBOOK.Application.Quit
>  For i1 = 1 To 1000: DoEvents: Next i1
>  DoEvents
>    
>  'EXCELのクローズ
>  Set I_xlsBOOK = Nothing
>  Set I_xlsSHEET = Nothing
>  Sleep (200)
>  DoEvents
> 
>  Exit Sub
>  
>End Sub
>
>※VB6.0の参照設定でMicrosoft Excel10.0 Objectをチェックして下さい。
>IROCさんが言うように、テキストファイルで取得するのと、
>Excel表から直接取得するのでは、断然にテキストファイルでの取得が早いですよ。
>
>参考までに、私の場合は、
>・Excel表から大量データを取得する場合、
> (1)VB6.0からExcel表を起動する。
> (2)VB6.0からExcel表のマクロ(VBAで作成した言語)を起動する。
> (3)Excel表のマクロで対象データをテキストファイルに出力する。
>
>・VBで抽出した大量データをExcel表にセットする場合、
> (1)VB6.0からExcel表を起動する。
> (2)VB6.0からExcel表のマクロ(VBAで作成した言語)を起動する。
> (3)Excel表のマクロで対象データをExcelの各セルにセットする。
>簡単にいうとこんな感じでしょうか?
>私は、VB6.0の帳票など、すべてExcel表で印刷指示しております。
>
>ですから、こちらのページはとても参考になります。
>以上、参考までに・・・

11513 / 13645 ツリー ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free