2011-03-25 93 views
2

我在VB6應用程序中自動化Word,當主機使用Word 2007或2010而不是在運行Word 2003的計算機上時出現異常。例外情況是Word 2003與2007/2010自動化

運行時錯誤「4605」:「此方法或屬性不可用,因爲對象引用>表格行的末尾。」

拋出異常以下循環的第七次迭代,在其試圖插入分頁符行:

For num = 1 To breakArrCount 
    Set myRange = oworddoc.Paragraphs(breakArr(num)).Range 
    With myRange 
     On Error Resume Next 
     .Collapse Direction:=wdCollapseEnd 
     .InsertBreak Type:=wdPageBreak 
    End With 
Next 

的陣列,breakArr,存儲段的指標中文件,後面跟着一個分頁符。有趣的是,如果我在例外之前(即在第6次迭代之後)跳出循環並查看生成的文檔,我注意到分頁符(對於前6個頁面)被插入到不同的點中Word 2007/2010比2003年。

爲什麼會有差異?有人知道我應該做什麼不同嗎?

謝謝。

回答

2

歡迎來到開發Multiversion有針對性的Word自動化應用程序的世界。

儘管如此,你會打這些類型的問題+山+。我知道不同版本的詞句插入頁面以不同的方式在不同的地方中斷。然後開發了一個插件,將多個word文檔智能合併到一個單一的普通(非主文檔)文件中,結果出現了很多問題。

最好的事情是測試像heck,並建立例外例程來處理特定版本的Word,當你得到這樣的異常。希望你不會遇到很多,但我可以說那裏有很多。

在這種特殊情況下,選中的段落可能在表格中,並且您正在摺疊到段落的結束位置,然後嘗試插入某些內容,這與您單元格的單元格標記結束有關,重新輸入。不同版本的文字處理方式有所不同。在一種情況下(我特別忘記了這一點),如果您在表格中的VERY LAST CELL中執行該操作,則在保存文檔時會損壞文檔,但直到您嘗試重新打開文檔時纔會知道該文檔。

通常情況下,您可以通過檢測您在表格中解決此特定問題,如果是,請摺疊到最後,然後備份一個字符(如果可能,單元格可能爲空),然後插入您的分頁符。