投稿者 たくみ  (学生) 投稿日時 2020/4/12 15:44:00
るきお様

お世話になります。

Webアプリは、Aで実行しています。

指定したExceファイルlを開き、印刷後終了するという流れなのですが、VisualStudioのデバッグでは、きちんと印刷されます。 localhostに公開(印刷用のWebFormは開きます)し実行するとエラーとなってしまいます。


最小限のコードになります。
申し訳ありませんが、宜しくお願い致します。


    Protected Sub BtnPrint_Click(sender As Object, e As EventArgs) Handles BtnPrint.Click
       Dim objExcel As Object = Nothing                       'Excel Application
        Dim objWorkBooks As Object = Nothing                  'Excel WorkBooks
        Dim objWorkBook As Object = Nothing                   'Excel Workbook
        Dim objSheets As Object = Nothing                     'Excel WorkSheet
        Dim objSheet As Object = Nothing                      'Excel WorkSheet
        Dim objRange As Object = Nothing                      'Excel Range
        Dim _xlsFile As String = Server.MapPath("~/prt/表.xlsx")

            'EXCEL オープン処理
            objExcel = CreateObject("Excel.Application")
            objWorkBooks = objExcel.Workbooks
            objWorkBook = objWorkBooks.Open(_xlsFile)
            objSheets = objWorkBook.Sheets
            objSheet = objSheets("01")

            'EXCEL 出力処理
            With objSheet
                .PrintOut(Copies:=1, Collate:=True)
            End With

            objWorkBook.Saved = True  '保存済みとする

            ' EXCEL終了処理
            MRComObject(objPageSetup)
            MRComObject(objRange)
            MRComObject(objSheet)
            MRComObject(objSheets)
            MRComObject(objWorkBook)
            MRComObject(objWorkBooks)
            objExcel.Quit() : MRComObject(objExcel)
            System.GC.Collect() 
    End Sub

    ' --- COM オブジェクトの解放
    Public Sub MRComObject(ByRef objCom As Object)
        'COM オブジェクトの使用後、明示的に COM オブジェクトへの参照を解放する 
        Try
            '提供されたランタイム呼び出し可能ラッパーの参照カウントをデクリメントします 
            If Not objCom Is Nothing AndAlso
       System.Runtime.InteropServices.Marshal.IsComObject(objCom) Then
                System.Runtime.InteropServices.Marshal.ReleaseComObject(objCom)
            End If
        Catch
        Finally
            '参照を解除する 
            objCom = Nothing
        End Try
    End Sub