在VB.NET中使用Microsoft.Office.Interop.Excel保存/另存为.xls和 .xlt文件时无法完成,尽管信任中心中的文件阻止设置未勾选
我有一个用VB.NET开发的Windows窗体应用。我要打开一个Excel文件,通过添加新的工作表和数据来进行处理,然后使用 Microsoft.Office.Interop.Excel 将其保存。
除了 .xls 和 .xlt 以外,其他Excel文件扩展名都按预期工作。对于这两个扩展名,应用程序会抛出如下错误:
错误: Exception from HRESULT: 0x800A03EC
该问题仅在MS Office 365版本中发生。在Excel 2024中按预期工作。
错误发生在以下代码行:
wb.SaveAs(pstrDestFileName, Excel.XlFileFormat.xlExcel8)
代码
VB.NET
Sub Main()
Dim xlApp As New Microsoft.Office.Interop.Excel.Application
Dim wb As Microsoft.Office.Interop.Excel.Workbook
Try
xlApp = CreateObject("Excel.Application")
xlApp.Interactive = False
xlApp.DisplayAlerts = False
xlApp.EnableEvents = False
Dim pstrSrcFileName = "C:\Files\Book1.xls"
Dim pstrDestFileName = "C:\Files\einfotree Copy of Book1.xls"
wb = xlApp.Workbooks.Open(pstrSrcFileName, False, False, , "", "", , , , , , , False)
wb.SaveAs(pstrDestFileName, Excel.XlFileFormat.xlExcel8)
wb.Close(False)
xlApp.Quit()
Catch ex As Exception
'
End Try
End Sub
注:是否在Microsoft Office的版本或安全设置中有变更,现限制使用Interop保存 .xls 或 .xlt 文件?
回复前请务必查看该链接及所有评论,因为这是我在Microsoft Q&A上发布的同一问题。完整阅读讨论将有助于理解确切的问题并以正确的方向进行排查,从而避免多次来回的往返。
谢谢,
Akbar Husain。
解决方案
在Office 365里,有一个信任中心设置,你可以在其中定义信任哪些文件类型。我最近才注意到这一点(因为我需要打开一个非常旧的Excel 4工作簿),但我不能确定它是什么时候引入的,默认设置是否最近有变动。
你可以通过以下路径进入这些设置:
- 文件 -> 选项
- 信任中心 -> 信任中心设置
- 文件阻止设置
xls-files可以包含宏(你从外部看不出它们是否包含宏)。勾选“打开”或“保存”时,Excel会阻止你打开或保存这些文件,因此在我的情况下,允许打开xls文件。
更新 还没仔细查看链接的MS端页面,对此表示抱歉。因此我的回答基本上是在重复那点。
为了缩小问题范围:你有没有尝试用VBA直接完成同样的操作?
Sub testSaveAs()
Const pstrSrcFileName = "C:\Files\Book1.xls"
Const pstrDestFileName = "C:\Files\einfotree Copy of Book1.xls"
Dim Wb As Workbook
Set Wb = Workbooks.Open(pstrSrcFileName)
Wb.SaveAs pstrDestFileName, xlExcel8
Wb.Close False
End Sub
如果这不起作用,问题在Excel端。如果它能工作但你的VB.NET代码不行,那就可能与Office自动化有关。
站内所有文章版权归属LeftHeroAI导航站,无授权禁止任何主体转载、抄袭、复制内容,亦不得私自架设镜像站点。一经侵权,本站将通过法律途径追责。
