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が立上がり問題なく動作します。(但し、ご自分の環境で確認して下さい。 プログラム内容にもよります)
'転載禁止

2002/04/19
2006/12/27


VBレスキュー(花ちゃん)
Visual Basic6.0  VB6.0