tagCANDY CGI VBレスキュー(花ちゃん) の Visual Basic 2010 用 掲示板(VB.NET 掲示板) [ツリー表示へ]   [Home]
一括表示(VB.NET VB2005)
タイトルエクセル印刷時に0x800A03ECが発生
記事No6566
投稿日: 2007/11/17(Sat) 11:29
投稿者
いつもお世話になっています。
以前にも投稿させていただいた、Kと申します。

環境:WInXP SP2+VB.net2003+Excel2003 SP3+Access2003 SP3
今回はAccessから読み込んだデータをExcelのシートに張り付けを行い
印刷する処理を作っていますが、印刷時に下記のエラーが発生します。
-------------------------------------------------------------------------------
'System.Runtime.InteropService.COMException'のハンドルされていない例外が実行.exeで
発生しました。
追加情報:HRESULTからの例外です:0x800A03EC。
-------------------------------------------------------------------------------
同じプロジェクト内で処理としては全く同じ処理をしいてデータを引っ張ってくる時の条件が違うだけの別の関数ではうまく動作しています。
ソースをコピーし必要な所だけ修正した2つめの関数でのみこのエラーが発生します。
シートにデータを貼り付けようとはしているみたいですが、実際には張り付きません。
データそのものはきちんとAccessから読み込み、変数に入っています。
少し長くなりますがソースを要約したものを下記に載せます。お気づきの点がありましたらお教え願えないでしょうか?
説明不足がありましたら、ご指摘をお願いします。

    Private Sub ボタン_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles ボタン.Click
        Dim DataBase As String
        Dim oleCn As New OleDb.OleDbConnection
        Dim oleCmd As OleDb.OleDbCommand
        Dim oleReader As OleDb.OleDbDataReader
        Dim Split_data(3) As String
        Dim _buf As String
        Dim n, i, flg, P_Page As Integer
        Dim 変数A(10000) As String
        Dim 変数B(10000) As String

        Dim xlApp As New Excel.Application
        Dim xlBooks As Excel.Workbooks = xlApp.Workbooks
        Dim xlBook As Excel.Workbook = xlBooks.Open("【雛型】.xls")
        Dim xlSheets As Excel.Sheets = xlBook.Worksheets
        Dim xlSheet As Excel.Worksheet = xlSheets.Item(1)
        Dim xlRange As Excel.Range
        Dim xlCells As Excel.Range

        xlApp.Visible = True

        '見積管理システムデータベースの格納場所を記述したコンフィグファイルを開く
        Dim srFile As New System.IO.StreamReader("kensaku.cfg", _
                                System.Text.Encoding.Default)
        'コンフィグファイルの内容を読込
        DataBase = srFile.ReadLine
        'ファイルを閉じる
        srFile.Close()

        '利用データベース定義
        oleCn.ConnectionString = _
            "Provider=Microsoft.Jet.OLEDB.4.0;" & _
            "Data Source=" & DataBase & ";" & _
            "Persist Security info=False"

        'データベースオープン
        oleCn.Open()

        '管理表に必要な情報を検索
        oleCmd = New OleDb.OleDbCommand("select 項目A, 項目B, " & _
                                        "from テーブル " & _
                                        "where 項目C like " & Chr(34) & "条件A外%" & Chr(34) & " " & _
                                        "or 項目C like " & Chr(34) & "条件B%" & Chr(34) & " " & _
                                        "order by 項目A" _
                                        , oleCn)
        oleReader = oleCmd.ExecuteReader()

        n = 0
        While (oleReader.Read())
            Try
                変数A(n) = oleReader.GetString(0)
            Catch ex As Exception
                変数A(n) = ""
            End Try
            Try
                変数B(n) = oleReader.GetString(1)
            Catch ex As Exception
                変数B(n) = ""
            End Try
            n = n + 1
        End While
        oleReader.Close()

        xlCells = xlSheet.Cells
        For i = 0 To n - 1
            '変数A
            xlRange = xlCells(i + 6, 2)
            xlRange.Value = 変数A(i)
            MRComObject(xlRange)
            '変数B
            xlRange = xlCells(i + 6, 3)
            xlRange.Value = 変数B(i)
            MRComObject(xlRange)
        Next
        'プリント処理
        P_Page = i / 51 + 1
        xlSheet.PrintOut(From:=1, To:=P_Page, preview:=False)

        xlApp.DisplayAlerts = False
        xlBooks.Close()

        'エクセル起動用変数開放
        MRComObject(xlSheet)
        MRComObject(xlSheets)
        MRComObject(xlBook)
        MRComObject(xlBooks)
        MRComObject(xlApp)
    End Sub

[ツリー表示へ]