tagCANDY CGI VBレスキュー(花ちゃん) - VBレスキュー(花ちゃん)の投稿サンプル用掲示板 - Visual Basic 6.0 VB2005 VB2010
VB2005用トップページへVBレスキュー(花ちゃん)のトップページVB6.0用のトップページ
VBレスキュー(花ちゃん)の投稿サンプル用掲示板
     サンプル投稿用掲示板  VB2005 〜 用トップページ  VB6.0 用 トップページ
Excelの異なるバージョン間で同じプログラムを使用する(VB6.0 基本編) ( No.15 )  [親スレッドへ]
日時: 2007/08/16 22:22
名前: 花ちゃん

***********************************************************************************
* カテゴリー:[エクセル][][]                                                      *
* キーワード:参照設定,バージョン,,                                     *
***********************************************************************************

元質問:複数のCSVデータ⇒XLSブック - Blue  2003/05/30-17:12 No.4200
CSVデータを1枚のXLSシートのように扱ってブックにすることはできないでしょうか?

-----------------------------------------------------------------------------------
Excelの異なるバージョン間で同じプログラムを使用するには - 花ちゃん  2007/08/16
-----------------------------------------------------------------------------------
Excel の起動部分を下記から実行時バインディングの方法で起動すると参照設定の必要が
なくなり、異なるバージョン間で使用する事ができます。
(ここのサイトの下記でも掲載しております。)
http://hanatyan.sakura.ne.jp/vbhlp/Excel01.htm

'==================================================================
'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 の代わりにシート名でも可
   'エクセルを表示します。(非表示でも動作します)
   xlApp.Visible = True

'==================================================================

  変更後(実行時バインディング(レイトバインディング))
'==================================================================
'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)  '1 の代わりにシート名でも可
   'エクセルを表示します。(非表示でも動作します)
   xlApp.Visible = True

'==================================================================

但し、上記の方法でExcel を操作するにはいくつかの注意が必要です。

1.使用するExcelの定数等は、別途ご自分で宣言するか、定数値のようなものを使用しないと
  VBAの定数は使用できません。
    http://hanatyan.sakura.ne.jp/logbbs1/wforum.cgi?mode=allread&no=2295&page=1230

2.Excelのバージョン間で互換性のないメソッドやプロパティ等は使用できません。
  例えば、Open メソッド や SaveAs メソッドのようなものでも、バージョン間で引数の型
    が違ってきていますので、十分確認する事が必要です。

3.自動メンバ表示などのインテリセンス機能が使用できないのでコードの入力間違いの
    チェックが十分できないので注意が必要です。

4.従って、使用するであろう、バージョンのExcelで十分に動作確認する事が必要になります。

又、Excel のプロセスが残る等の問題が多く発生する可能性があり、解決も難しくなります。

少なくても、VBからExcelを操作する事に熟知されてから使用するようにして下さい、でないと
後で、エラーが発生したり、Excelのプロセスが解放されない等の問題が発生し、結局時間を
とられて、各バージョンに合ったプログラムを別々にインストールした方が楽だったという事
になります。

上記の問題点をクリアできれば、ある程度は、Excel の各バージョン間で使用できますが、
Excel95以前やExcel2007以降のように範囲が広がると複雑な処理をした場合は、大抵問題が
発生するかと思いますので、くどいようですが、事前に対象のバージョンで十分テストをして
使用されるようにお願いします。



 [スレッド一覧へ] [親スレッドへ]