Ошибка при создании PDF-файлов в ExportAsFixedFormat: System.Runtime.InteropServices.COMException - PullRequest
0 голосов
/ 07 мая 2020

Сообщение об ошибке: System.Runtime.InteropServices.COMException: 'Exception from HRESULT: 0x800A03E C'

Здравствуйте! В моем приложении VB. Net, я думаю, есть проблема с тем, как Excel освобождается / закрывается в конце двух процессов Excel. Я думал, потому что программа работает нормально и сохраняет файлы Excel в формате PDF, но каждый раз она никогда не создает все файлы: она останавливается случайным образом после создания нескольких файлов PDF в строке, где есть «ExportAsFixedFormat». Он никогда не останавливается на одном и том же файле c, поэтому я бы сказал, что проблем с любым c PDF нет. Я пытался решить эту проблему вечно и просматривал бесконечное количество форумов, но все равно безуспешно. Пожалуйста, помогите. Большое спасибо

ЭТО СТРОКА, ОШИБКИ ИХ:

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)

System.Runtime.InteropServices.Marshal.ReleaseComObject(oRng)
oRng = Nothing
System.Runtime.InteropServices.Marshal.ReleaseComObject(oSheet)
oSheet = Nothing
oWB.Close()
System.Runtime.InteropServices.Marshal.ReleaseComObject(oWB)
oWB = Nothing
oXL.Quit()
System.Runtime.InteropServices.Marshal.ReleaseComObject(oXL)
oXL = Nothing
GC.Collect()
GC.WaitForPendingFinalizers()
GC.Collect()
GC.WaitForPendingFinalizers()

ДОКУМЕНТ СОХРАНЯЕТСЯ В КАЧЕСТВЕ 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")

Dt.Dispose()

xwb.Close()
System.Runtime.InteropServices.Marshal.ReleaseComObject(xwb)
xwb = Nothing
xl.Quit()
System.Runtime.InteropServices.Marshal.ReleaseComObject(xl)
xl = Nothing
GC.Collect()
GC.WaitForPendingFinalizers()
GC.Collect()
GC.WaitForPendingFinalizers()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...