tagCANDY CGI VBレスキュー(花ちゃん) の Visual Basic 2010 用 掲示板(VB.NET 掲示板) [ツリー表示へ]   [Home]
一括表示(VB.NET VB2005)
タイトルExcel2000が利用できない
記事No510
投稿日: 2003/10/29(Wed) 11:13
投稿者川村
[OSのVer]:Windows 2000 Server    [VBのVer]:VB.NET 

概要
 Windows2000 Server,Office XPの開発環境で、
 Excelにデータを転送する処理を行っています。
 「Excelブックの新規追加」及び
 「既存のExcelブックの利用」の
 処理を行っております。
 (参考コードは文末)

アドバイスをお願いしたい問題点
 Excel2000のパソコンにプログラムを配布し動作させると、
 「Excelブックの新規追加」では、問題なく処理されますが、
 「既存のExcelブックの利用」の場合、
 xlFormBook = CType(xlApp.Workbooks.Open(wkPathFile), Excel.Workbook)
 で
 「オブジェクト参照がオブジェクト インスタンスに設定されていません。」
 のエラーウィンドウが表示し、Excelへデータは転送されません。
 なお、プログラムの配布は、開発環境パソコンの
 該当「bin」フォルダ直下の全ファイルをコピーして行っています。

Excel2000パソコンが問題でないかと判断した理由
 以下の動作結果による
  Windows XP Pro      + Office XP   -> OK
  Windows 2000 Server + Office XP   -> OK
 Windows 2000        + Office 2000 -> NG
  Windows 98 SE       + Office 2000 -> NG

 Microsoft Excel Object Libraryのバージョン違い(関係ないか?)
   Microsoft AccessのモジュールでのExcel関連の
  参照設定のリストにおいて
    Access2002(Office XP)は
      Microsoft Excel 10.0 Object Library
      で今回VB.NETでの「参照の追加」と同じ
    Access2000(Office 2000)は
      Microsoft Excel 9.0 Object Library

過去のログで、
 「参照の追加」をせず「遅延バインディング」での利用
 があり、トライをしてみました。
 しかし、Excelの参照設定を削除すると、Excel.Workbook 
 のコードでエラーが発生した事、またこの方法が不具合の
 解決につながるのかわからなかったこともあり、
 これ以上のテストなどは行っていません。

問合せのできる相手が1人もいないため、
見当はずれの基本的なところで間違っているかもしれません。



Excelブックの新規追加-----------------------------
        Dim xlBook As Excel.Workbook
        Dim xlSheet As Excel.Worksheet
        ExcelApp起動()
        xlBook = CType(xlApp.Workbooks.Add, Excel.Workbook)
        xlSheet = CType(xlBook.Worksheets(1), Excel.Worksheet)

既存のExcelブックの利用-------------------------
        Dim xlBook As Excel.Workbook
        Dim xlFormBook As Excel.Workbook
        Dim xlSheet As Excel.Worksheet
        Dim wkPathFile As String
        wkPathFile = CurDir() & "\AAA\BBB\KKKKK.xls"
        ExcelApp起動()
        xlBook = CType(xlApp.Workbooks.Add, Excel.Workbook)
        MessageBox.Show("パスファイル" & wkPathFile)
        xlFormBook = CType(xlApp.Workbooks.Open(wkPathFile), Excel.Workbook)
        MessageBox.Show("パスファイルコピー前" & wkPathFile)
        xlFormBook.Sheets("ZZZ").Copy(Before:=xlBook.Sheets(1))
        MessageBox.Show("パスファイルコピー後" & wkPathFile)
        xlApp.DisplayAlerts = False
        xlFormBook.Close()
        xlApp.DisplayAlerts = True
        xlSheet = CType(xlBook.Worksheets("ZZZ"), Excel.Worksheet)

   (MessageBoxは、エラー発生箇所を特定するため一時的なもの。)

------------------------------------------------
    Public pubExcelOn As Boolean
    Public xlApp As Excel.Application

    Public Sub ExcelApp起動()
        If pubExcelOn = False Then
            xlApp = CType(CreateObject("Excel.Application"),Excel.Application)
            pubExcelOn = True
        End If
        xlApp.DisplayFullScreen = True
        xlApp.DisplayFullScreen = False
    End Sub


 

[ツリー表示へ]