タイトル | : エクセル印刷時に0x800A03ECが発生 |
記事No | : 6566 |
投稿日 | : 2007/11/17(Sat) 11:29 |
投稿者 | : K |
いつもお世話になっています。 以前にも投稿させていただいた、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
|