【问题标题】:VB.net Excel ExportAsFixedFormat fails Exception from HRESULT: 0x80010105 (RPC_E_SERVERFAULT))VB.net Excel ExportAsFixedFormat 失败 HRESULT 异常:0x80010105 (RPC_E_SERVERFAULT))
【发布时间】:2017-01-13 16:59:21
【问题描述】:

我正在尝试编写一个非常简单的 VB.net 应用程序,它可以打开一个 excel 文件并将其保存为 excel。

我工作的环境如下:

  • Windows 10
  • Visual Studio 2016
  • Office 2016

我已成功打开 Excel 工作表并保存到另一个位置。但是,当尝试打开 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 工作表具有公式、将内容复制并粘贴到新工作表(仅粘贴特殊值和数字格式)并运行上述代码而导致的

【问题讨论】:

  • 我已经设法用 Excel 2016 复制了您的问题。我首先用一张白纸进行了尝试。我得到了错误。然后我弹出了一些数据(通常你会有数据)并且没有发生错误。您的工作表中有数据吗?
  • 是的,里面有数据。您是否设法使用上面的代码使其正常工作(使用工作表中的数据),还是需要更改任何内容?
  • 不,我没有。唯一的事情是我为 Excel 2007 安装了 PDF 插件,我认为这并不相关,但我还是做了(并重新启动了机器)。
  • D 是在您的本地 PC 上还是在另一台 PC 上?我用我的C盘。我猜 D 是本地的。
  • 我会尝试安装插件,是的,d 驱动器是本地驱动器

标签: excel vb.net


【解决方案1】:

像这样将其保存为 .PDF:

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

【讨论】:

  • 这就是我在上面尝试的 - 它给出了问题中的错误:)
  • 在我的电脑上它工作正常,所以异常可能是从环境演变而来的
【解决方案2】:

对!感谢所有试图提供帮助的人。通过阅读您的回复,我一直在尝试直到找出问题所在。

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)

可能不是最直接的方法,但我无法让它工作!

【讨论】:

    猜你喜欢
    • 2017-05-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-07-12
    • 1970-01-01
    • 1970-01-01
    • 2011-05-23
    • 1970-01-01
    相关资源
    最近更新 更多