VBからエクセルを操作する(その1) |
新規にシートを開きデータを書き込み計算してシートを保存します。 (011) 動作確認 : WindowsXP(SP2) VB6.0(SP6) / Excel 2000 Excel 2002 Excel 2007 |
|
|
まず、VBからExcel及びWordを操作する時の注意事項を見て下さい Option Explicit Private Sub Command1_Click() '★プロジェクト→参照設定でMicrosoft Excel *.* ObjectLibraryに ' チェックを入れておいて下さい。 'テスト用ファイル(xlTestFile)は各自準備して下さい。 '================================================================== ' Excel の起動処理 'オブジェクトへの参照を格納する変数を宣言(事前バインディング) Dim xlApp As Excel.Application '転載禁止 Dim xlBook As Excel.Workbook '転載禁止 Dim xlSheet As Excel.Worksheet '転載禁止 '変数にオブジェクトの参照を代入します。 '新規 workbookとworksheet オブジェクトを作成します。 Set xlApp = CreateObject("Excel.Application") Set xlBook = xlApp.Workbooks.Add Set xlSheet = xlBook.Worksheets(1) '1 の代わりにシート名でも可 '================================================================== 'Excel 操作部分 'エクセルを表示します。(非表示でも動作します) xlApp.Visible = True ' Excel のセルに値を代入します。 xlSheet.Cells(1, 1).Value = "12" xlSheet.Cells(2, 1).Value = "34" 'Formula プロパティを使ってセルに式を挿入します。 xlSheet.Cells(3, 1).Formula = "=A1+A2" ' "=SUM(A1:A2)" '================================================================== '下記コードはこのサンプルとは直接、関係ありません。 '動作確認の為に Excel を5秒間表示して置く為のものです。 Dim lngSt As Long lngSt = Timer Do While Timer - lngSt < 5 DoEvents Loop '================================================================== '終了処理 '保存時の問合せを非表示に設定転載禁止 xlApp.DisplayAlerts = False 'Worksheet を名前をつけて保存します転載禁止 xlSheet.SaveAs xlTestFile 'オブジェクトを解放します Set xlSheet = Nothing xlBook.Close 'Book を閉じる Set xlBook = Nothing xlApp.Quit 'Quit メソッドを使って Excel を終了します。 Set xlApp = Nothing 'これで、タスクマネージャーのプロセス欄からExcel.exe が消えていれば、OK です。 'プログラムを終了しないと消えないのではだめです。 '2〜3度続けて実行して確認しておいて下さい、1度目は OK でも2〜3度続けて '実行すると NG になる場合があります。 '尚、Excel を終了処理後、数秒(5秒以内)待ってから確認して下さい。 End Sub |
オブジェクト変数を代入するのに下記の方法でもいいのですが Set xlApp1 = New Excel.Application MSDNに下記のように書いてあったのでCreateObject 関数を使用 http://support.microsoft.com/kb/244264/ja [Microsoft Office アプリケーションのインスタンスを作成する場合は、New ではなく CreateObject を使用します。] CreateObject 関数は、ほとんどの Visual C++ クライアントが使用する作成プロセスに、より密接にマップし、バージョン間でサーバーの CLSID に考えられる変更を考慮します。 CreateObject 関数は、事前バインディング、実行時バインディングのどちらのオブジェクトでも使用可能です。'転載禁止 参照設定で、バージョンの異なるExcel を複数同じパソコンに導入している場合は、それぞれの共通となるバージョンで設定しておくと、どのパソコンで使用できるようです。 例、開発環境(9.0 で参照設定) 実行環境(Excel2000/Excel2002/Excel2007) でExcel 2007が立上がり問題なく動作します。(但し、ご自分の環境で確認して下さい。 プログラム内容にもよります) |