VB6からEXCELを制御するには

VB6,VBA,VBS,EXCEL,DOS,BAT,WSH,WORDの小技メモ

HTML/ CSS/ CGI-Perl/ JavaScript/ JavaApplet/ AccessUp/ Internet/ EnglishLearn/ ちゃいちゃん天使/ 天使メッセージ/ 飯田ワールド/ 結城ワールド/ プロフィール/ WEB相談室/ WEBアンテナ/ 燈明日記/ Perlノート/ 漢字起源/ yahoo

はじめに

本ページは、ウインドウズ系全般のティプスメモです。

そう、はじめはVB系のティプスメモだったのですが…いつの間にか、ウインドウズ系全般のティプスメモになってしまいました。

ちなみに、ティプス(Tips)とは、マニュアルに書かれていない技法や裏わざのことですが、本ページでは、私が経験してこれはと思ったノウハウのメモになっています。

尚、以下は本サイトの最新情報(ブログ)です。

それでは、本ページが何かのお役に立てれば幸いです。ごゆっくりご覧ください。

◆ VB6からEXCELを制御するには

VBAは内部からEXECLを制御しますが、VB6なら以下のサンプルのように外部からも制御ができます。

注意点としては、シートやブックのメソッドやプロパティは、必ずオブジェクト名変数で修飾します。

アクティブになっているシートなどのメソッドやプロパティは、オブジェクト名修飾なしでも、あたかも問題なく動いているようですが、水面下で問題(メモリリーク)を起こしているとのことです。

また、アーリーバインディングとは、事前バインディングことで、実行時バインディング(レイトバインディング)より一般的に処理が速くなり、コーディング時は、自動メンバ表示等をしてくれます。

あと、インスタンス生成は、CreateObjectを使用します(EXCELに関してMSが推奨)。

尚、VB6からEXCELを制御する前準備として、参照設定でEXCELの Object Library をチェックする。

VB6からのEXCEL制御サンプル

  
'変数は宣言を必須とする。
Option Explicit 
Sub main()

    'エラー割り込みがあったら、次のステップから実行する。
    On Error Resume Next

    'アーリーバインディング(ちなみにレイトバインディングはObject型で宣言する)
    Dim xlsApp    As Excel.Application

    'ブックオブジェクト名変数の宣言
    Dim bokBook   As Excel.Workbook

    'シートオブジェクト名変数の宣言
    Dim shtWork   As Excel.Worksheet

    'EXCELのときは、Newではなく、CreateObjectでインスタンスする。
    Set xlsApp = CreateObject("Excel.Application")

    'ブックをオープンする。
    Set bokBook = xlsApp.Workbooks.Open("C:\TEST01.xls")
    
    'シートのオブジェクトを格納する。
    Set shtWork = bokBook.Worksheets(1)
    
    'シート内のセルの編集する
    shtWork.Cells(1, 1).Value = "12345"     
    shtWork.Cells(2, 1).Value = "ABCDEF"
    shtWork.Cells(1, 2).Value = "2006/08/25"
    shtWork.Cells(2, 2).Value = 98765
    
    'ファイルを保存する。
    bokBook.Save

    '終了処理をする。
    xlsApp.Quit
    Set shtWork = Nothing
    Set bokBook = Nothing
    Set xlsApp = Nothing
End Sub

おわりに

以下のページには、すべてのTIPSがあります。もしよろしければ、どうぞ!

尚、ご感想、ご意見、誤字、脱字、間違い等がありましたら遠慮なくVB-TIPS掲示板へご指摘ください。

人のよいところをどんどん見つけよう