2017-01-13 2 views
0

Я пытаюсь написать очень простое приложение VB.net, которое откроет файл excel и сохранит его как excel.VB.net Excel ExportAsFixedFormat failed Exception from HRESULT: 0x80010105 (RPC_E_SERVERFAULT))

среда Я работаю над следующим образом:

  • Окна 10
  • Visual Studio 2016
  • Офис 2016

Я успешно удалось открыть лист первенствовать и сохранить в другое место. Однако при попытке открыть Excel и сохранить в формате pdf я получаю следующее сообщение об ошибке

Сервер исключил исключение. (Исключение из HRESULT: 0x80010105 (RPC_E_SERVERFAULT))

Глядя в детали ошибки, я вижу следующее:

System.Runtime.InteropServices.COMException { "Сервер бросил . исключение (исключение из HRESULT: 0x80010105 (RPC_E_SERVERFAULT)) "} код

ошибка: -2147417851

код, я использую, чтобы сделать это следующим образом:

Dim xlApp As New Excel.Application 
    Dim xlWorkBook As Excel.Workbook 
    Dim xlWorkSheet As Excel.Worksheet 
    xlApp.Visible = False 
    xlApp.AlertBeforeOverwriting = False 

    Dim sheetname As String = "d:\test\test.xlsx" 

    xlWorkBook = xlApp.Workbooks.Open(sheetname) 


    xlWorkBook.Activate() 
    xlWorkSheet = xlWorkBook.Sheets("Sheet1") 
    xlWorkSheet.Activate() 
    xlApp.DisplayAlerts = False 
xlWorkSheet.ExportAsFixedFormat(Type:=Excel.XlFixedFormatType.xlTypePDF, Filename:= 
    "d:\test\test.pdf", Quality:=Excel.XlFixedFormatQuality.xlQualityStandard _ 
    , IncludeDocProperties:=True, IgnorePrintAreas:=True, OpenAfterPublish:= 
    False) 





    xlWorkBook.Close(SaveChanges:=False) 
    xlApp.Quit() 
    System.Runtime.InteropServices.Marshal.ReleaseComObject(xlApp) : xlApp = Nothing 
    System.Runtime.InteropServices.Marshal.ReleaseComObject(xlWorkBook) : xlWorkBook = Nothing 
    System.Runtime.InteropServices.Marshal.ReleaseComObject(xlWorkSheet) : xlWorkSheet = Nothing 

Помощь!

вопрос, кажется, возникает из-за лист Excel, имеющее формулы, копирование и вставка содержимого в новый лист (вставить специальные значения и форматирование чисел только) и выполнение кода выше работает

+0

Мне удалось повторить выпуск с Excel 2016. Я сначала попробовал его с чистого листа. Я получил ошибку. Затем я вынул некоторые данные (как обычно, у вас были данные), и ошибка не возникла. У вас есть данные на вашем листе? – Bugs

+0

Да, там есть данные. Вам удалось заставить его работать (с данными на листе) с кодом выше или вам нужно что-то изменить? – user7415753

+0

Нет, я этого не делал. Единственное, что я установил в PDF Add on для Excel 2007, который, как я думал, не был бы уместным, но тем не менее я (и перезагрузил машину). – Bugs

ответ

0

Право! Спасибо всем, кто пытался помочь. Читая ваши ответы, я продолжал пробовать, пока не выяснил проблему.

Похоже, что ExportAsFixedFormat не любит листы Excel с формулами. Чтобы обойти эту проблему, я просто создал новый пустой лист и скопировал и вставлял (только значения) содержимое из моего основного листа в него. Кажется, это работает отлично. Затем я автоматизировал это в своем коде следующим образом:

Dim xlworksheet_static As Excel.Worksheet = xlWorkBook.Worksheets(2) 
    xlWorkSheet.Range("A1", "H35").Copy() 
    xlworksheet_static.Activate() 
    xlworksheet_static.Range("A1", "H35").Select() 
    xlworksheet_static.PasteSpecial(Excel.XlPasteType.xlPasteValuesAndNumberFormats) 

    xlworksheet_static.ExportAsFixedFormat(Type:=Excel.XlFixedFormatType.xlTypePDF, Filename:= 
    "d:\test\test.pdf", Quality:=Excel.XlFixedFormatQuality.xlQualityStandard _ 
    , IncludeDocProperties:=True, IgnorePrintAreas:=True, OpenAfterPublish:= 
    False) 

Возможно, не самый прямой путь, но я не мог заставить его работать иначе!

0

Сохранить это как. PDF-файл:

xlWorkSheet.ExportAsFixedFormat(XlFixedFormatType.xlTypePDF, "d:\test\test.pdf") 
+0

Вот что я пытаюсь сделать выше - это дает ошибка в вопросе :) – user7415753

+0

на моем компьютере это прекрасно работает, поэтому исключение вероятнее развивается из среды – jonathana

Смежные вопросы