我正在尝试冻结在vb.net项目中创建的excel工作表中的窗格。我创建了以下测试代码:
Dim xlApp = New Microsoft.Office.Interop.Excel.Application
Dim xlBook = xlApp.Workbooks.Add
Dim xlSheet = xlBook.Worksheets(1)
Dim xlWindow = xlApp.Windows(1)
With xlApp.ActiveWindow
.SplitColumn = 1
.SplitRow = 0
End With
xlApp.ActiveWindow.FreezePanes = True
问题是这样可以正常写入,但是如果我将.SplitRow改为大于0的任何值,我会在freezepanes行上出错 -
mscorlib.dll中出现未处理的“System.Runtime.InteropServices.COMException”类型异常
其他信息:无法设置Window类的FreezePanes属性
我也尝试用单行完全替换with块:
xlSheet.Cells(6, 2).Select()
这不会引发错误,但它也只会冻结第6列。
我想补充一点,这是一个较旧的程序,我每年使用一次,去年它工作正常,但我已经升级到Office 365(64位版本)。我仍在使用办公室15的互操作程序集,但未能找到更新版本。
答案 0 :(得分:0)
由于没有人能够回答这个问题,我找到了一个解决方法,我想我会为遇到此问题的其他人发布答案。我不接受这个答案,因为应该有一个使用微软自己的DLL的解决方案。
我找到了一个名为spire office的免费dll,通过e-iceblue可以在不安装办公室的情况下操作excel文件(这使得它与版本无关)。免费版本有一些限制,但它们似乎不适用于仅xls文件的转换任务。这可以拆分窗格。