为什么当Excel是一个COM对象时,ActiveWindow.SplitColumn不工作?

我有一些相当古老的技术,Office Web Components(OWC)。

这意味着我的网页上我有Excel作为一个OLE对象embedded

<object classid="clsid:0002E551-0000-0000-C000-000000000046" id="Spreadsheet1" width="1100" height="750"> <param name="DataType" value="XMLDATA" /> <param name="AllowPropertyToolbox" value="-1" /> <param name="AutoFit" value="1" /> <param name="Calculation" value="-4105" /> <param name="Caption" value="Microsoft Office-regneark" /> <param name="DisplayColumnHeadings" value="-1" /> <param name="DisplayGridlines" value="-1" /> <param name="DisplayHorizontalScrollBar" value="-1" /> <param name="DisplayOfficeLogo" value="-1" /> <param name="DisplayPropertyToolbox" value="0" /> <param name="DisplayRowHeadings" value="-1" /> <param name="DisplayTitleBar" value="0" /> <param name="DisplayToolbar" value="-1" /> <param name="DisplayVerticalScrollBar" value="-1" /> <param name="DisplayWorkbookTabs" value="1" /> <param name="EnableEvents" value="-1" /> <param name="MaxHeight" value="80%" /> <param name="MaxWidth" value="80%" /> <param name="MoveAfterReturn" value="-1" /> <param name="MoveAfterReturnDirection" value="-4121" /> <param name="RightToLeft" value="0" /> <param name="ScreenUpdating" value="-1" /> <param name="EnableUndo" value="-1" /> <!--param name="XMLURL" value="rangeirange.xml"--> </object> 

我想这不是太重要,但是我想冻结一些列,通常我可以在JavaScript中使用所有的VBA,但是这个代码失败了:

 exlObj = document.all.Spreadsheet1; exlObj.ActiveWindow.SplitColumn = 3; 

exlObj确实有ActiveWindow属性,但它没有SplitColumn属性。

编辑:

现在我已经调查了,这里是代码问题。 注意这是JavaScript,但它模仿VBA,因为这是COM如何工作的。

  exlObj.Sheets(1).Activate(); exlObj.ActiveWindow.FreezePanes = false; exlObj.Sheets(1).Range('B2').Activate(); exlObj.ActiveCell.Value = 'Foo'; //exlObj.ActiveWindow.SplitRow = 10; exlObj.ActiveWindow.FreezePanes = true; // <- this is the line 

我的问题是FreezePanes属性总是为false,甚至在最后一行之后。

可能是这样的一个属性的问题呢? 我有一些旧代码aproximatly相同,并工作。

事实certificate,我只需要使用select,而不是激活

  exlObj.Sheets(1).Activate(); exlObj.ActiveWindow.FreezePanes = false; exlObj.Sheets(1).Range('B2').Select(); <-- changed Activate() to Select() exlObj.ActiveCell.Value = 'Foo'; //exlObj.ActiveWindow.SplitRow = 10; exlObj.ActiveWindow.FreezePanes = true; // <- this is the line