|
こんばんは、ちんといいます。
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
|
|