VBからエクセルを操作する(その2) |
ExcelをVBから操作する(異なるExcelのバージョン間で使用) (012) 動作確認 : WindowsXP(SP2) VB6.0(SP6) / Excel 2000 Excel 2002 Excel 2007 |
|
まず、VBからExcel及びWordを操作する時の注意事項を見て下さい 1.実行時バインディングでの起動。 こちらは、Microsoft Excel *.* ObjectLibrary への参照設定は必要ありま せんが、下記のような注意点が必要です。 Option Explicit Private Sub Command1_Click() 'テスト用ファイル(xlTestFile)は各自準備して下さい。 '================================================================== ' Excel の起動処理 'オブジェクトへの参照を格納する変数を宣言(実行時バインディング) Dim xlApp As Object '転載禁止 Dim xlBook As Object '転載禁止 Dim xlSheet As Object '転載禁止 '変数にオブジェクトの参照を代入します。 '新規 workbookとworksheet オブジェクトを作成します。 Set xlApp = CreateObject("Excel.Application") Set xlBook = xlApp.Workbooks.Add Set xlSheet = xlBook.Worksheets(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 |
|
異なるExcelのバージョン間で使用したい場合にご利用下さい。 但し、下記のような事に注意が必要です。 1.使用するExcelの定数等は、別途ご自分で宣言するか、定数値のようなものを使用しないと VBAの定数は使用できません。 2.Excelのバージョン間で互換性のないメソッドやプロパティ等は使用できません。 例えば、Open メソッド や SaveAs メソッドのようなものでも、バージョン間で引数の型が違って きていますので、十分確認する事が必要です。 3.自動メンバー表示などのインテリセンス機能が使用できないのでコードの入力間違いのチェックが 十分できないので注意が必要です。 4.従って、使用するであろう、バージョンのExcelで十分に動作確認する事が必要になります。 又、Excel のプロセスが残る等の問題が多く発生する可能性があり、解決も難しくなります。 |