Программа
My VB. Net в Visual Studio создает файлы Excel, а затем сохраняет их как PDF, но после стольких (30, 40 или что-то еще, не в точку) выдает ошибку: «Ошибка System.Runtime.InteropServices.COMException : 'Исключение из HRESULT: 0x800A03E C' ". Наверное, я думаю, что это способ закрытия / выпуска Excel?
Ошибка связана с этой строкой кода после того, как я открываю документ Excel и пытаюсь сохранить его как PDF. Опять же, это всегда происходит после того, как некоторые документы уже были сохранены в формате PDF (иногда 30, иногда 50 ...):
xwb.ActiveSheet.ExportAsFixedFormat(0, "\\ken-resourcesan\fileshares\fieldshare\IT\nsantagata\ARStatements_CustomerInvoicesPDF\" & originalCustomerName & " " & customerNumber & " " & todaysDate & ".pdf")
Вот весь код, который у меня есть:
ЭТО СОЗДАЕТ ДОКУМЕНТ EXCEL И ЗАПОЛНЯЕТ ЕГО ДАННЫМИ:
Public Sub PopulateSheet(ByVal dt As Data.DataTable, ByVal File As String)
Dim oXL As Excel.Application = CType(CreateObject("Excel.Application"), Excel.Application)
Dim oWB As Excel.Workbook
Dim oSheet As Excel.Worksheet
Dim oRng As Excel.Range
oWB = oXL.Workbooks.Add
oSheet = CType(oWB.ActiveSheet, Excel.Worksheet)
'****Spreadsheet gets populated
......
'****Then
oWB.SaveAs(File)
oRng = Nothing
oXL.Quit()
GC.Collect()
GC.WaitForPendingFinalizers()
Marshal.FinalReleaseComObject(oXL)
Marshal.FinalReleaseComObject(oSheet)
Marshal.FinalReleaseComObject(oWB)
oSheet = Nothing
oWB = Nothing
oXL = Nothing
НАКОНЕЦ СОХРАНЯЕТ ДОКУМЕНТ В формате PDF:
Dim xl As Object
Dim xwb As Object
xl = CreateObject("Excel.Application")
dt = CreateTable()
PopulateSheet(dt, "\\ken-resourcesan\fileshares\fieldshare\IT\nsantagata\ARStatements_CustomerInvoicesExcel\" & originalCustomerName & " " & customerNumber & " " & todaysDate & ".xlsx")
'****Open xlsx doc to save as pdf
xwb = xl.Workbooks.Open("\\ken-resourcesan\fileshares\fieldshare\IT\nsantagata\ARStatements_CustomerInvoicesExcel\" & originalCustomerName & " " & customerNumber & " " & todaysDate & ".xlsx")
xwb.ActiveSheet.PageSetup.Zoom = False
xwb.ActiveSheet.PageSetup.FitToPagesWide = 1
xwb.ActiveSheet.PageSetup.FitToPagesTall = False
'****Save as pdf
xwb.ActiveSheet.ExportAsFixedFormat(0, "\\ken-resourcesan\fileshares\fieldshare\IT\nsantagata\ARStatements_CustomerInvoicesPDF\" & originalCustomerName & " " & customerNumber & " " & todaysDate & ".pdf")
xl.Quit()
System.Runtime.InteropServices.Marshal.ReleaseComObject(xl)
xl = Nothing
System.Runtime.InteropServices.Marshal.ReleaseComObject(xwb)
xwb = Nothing
GC.Collect()
GC.WaitForPendingFinalizers()
Любая помощь очень оценен. Спасибо
******** Комментарий: ** Я считаю, что существует проблема с тем, как Excel освобождается / закрывается в конце двух процессов Excel. Я думал, потому что программа работает нормально и сохраняет файлы Excel в формате PDF, но каждый раз она никогда не создает все файлы. Он останавливается после создания ряда PDF-файлов на строке, где находится «ExportAsFixedFormat». Он никогда не останавливается на одном и том же файле c, поэтому я бы сказал, что проблем с любым c PDF.
нет.