VB. Net преобразовать файл Excel в PDF: ошибка ExportAsFixedFormat - PullRequest
0 голосов
/ 08 мая 2020

СООБЩЕНИЕ ОБ ОШИБКЕ: System.Runtime.InteropServices.COMException: 'Exception from HRESULT: 0x800A03E C'

Я сузил проблему, но все равно получаю сообщение об ошибке: у меня открывается al oop загружает каждый файл Excel из местоположения, а затем сохраняет его в формате PDF. Он работает и создает несколько PDF-файлов, а затем выводит ошибки в строке ExportAsFixedFormat. Количество создаваемых PDF-файлов варьируется, поэтому я не думаю, что есть проблема с файлом Excel.

Кроме того, я добавил DoEvents и Wait (надеюсь, в нужных местах), но все равно получаю сообщение об ошибке .

Я также заметил, что после получения сообщения об ошибке я перемещаю отладчик на несколько строк назад и снова запускаю ExportAsFixedFormat, и он работает нормально. Он создает этот PDF-файл и продолжает создавать новые.

Пожалуйста, помогите, так как я несколько дней пытался найти решение. Это код, который у меня сейчас есть:

'OPEN XLSX DOC TO SAVE AS PDF
Dim xl As Object
xl = CreateObject("Excel.Application")
Dim xwb As Object
Dim workBooks = xl.Workbooks


System.Windows.Forms.Application.DoEvents()


xwb = workBooks.Open("\\ken-resourcesan\fileshares\fieldshare\IT\nsantagata\ARStatements_CustomerInvoicesExcel\" & originalCustomerName & " " & customerNumber & " 050720.xlsx")

xwb.ActiveSheet.PageSetup.Zoom = False
xwb.ActiveSheet.PageSetup.FitToPagesWide = 1
xwb.ActiveSheet.PageSetup.FitToPagesTall = False


NewDate = DateAndTime.Now.AddSeconds(10)
Do Until DateAndTime.Now > NewDate
     Application.DoEvents()
Loop


Dim newHour = Hour(Now())
Dim newMinute = Minute(Now())
Dim newSecond = Second(Now()) + 10
Dim waitTime = TimeSerial(newHour, newMinute, newSecond)
xl.Wait(waitTime)


'SAVE AS PDF
xwb.ActiveSheet.ExportAsFixedFormat(0, "\\ken-resourcesan\fileshares\fieldshare\IT\nsantagata\ARStatements_CustomerInvoicesPDF\" & originalCustomerName & " " & customerNumber & " " & todaysDate & ".pdf")


xwb.Close()
System.Runtime.InteropServices.Marshal.ReleaseComObject(xwb)
xwb = Nothing
workBooks.Close()
System.Runtime.InteropServices.Marshal.ReleaseComObject(workBooks)
workBooks = Nothing
xl.Quit()
System.Runtime.InteropServices.Marshal.ReleaseComObject(xl)
xl = Nothing
GC.Collect()
GC.WaitForPendingFinalizers()
GC.Collect()
GC.WaitForPendingFinalizers()
...