excel com組件的bug(字符超過911)

     最近開發一個工具,需要填寫excel,研究接口後決定使用.net調用excel com組件的以二維數組(string[,])寫的方法一次性寫一個sheet,開發一切順利,進程不能關閉問題也順利解決,但是最後測試時發現一個問題始終無法解決,肯定重現,就是當需要寫入某個cell中的字符數過多時,會捕捉到異常,檢查程序其他地方並觀察二維數據數據均無問題後,懷疑是excel com組件的問題(參數buffer設置不夠,o(∩_∩)o...哈哈)。

     後經過反覆測試,證明當字符數達到一定大小時就出錯,其餘情況均無問題。雖然後來採取其他方式規避,插入文本附件,但是還是在microsoft網站找到了問題描述,呵呵,但是偶的報錯缺不是 1004 啊(白查了半天msdn,提醒什麼時區錯誤),寒。。。後來看到這篇文章後,不經感慨。。原來官方預警文檔中也有“可能會收到類似於以下內容的錯誤消息:”這樣的語句。。。再寒。。。

   原文地址:

http://support.microsoft.com/kb/213841/zh-cn?spid=2512&sid=251

在 Excel 區域中插入大型數組字符串時出現“Run-time Error 1004”(運行時錯誤 1004)

文章編號 : 818808
最後修改 : 2003年11月26日
修訂 : 1.1

症狀

在 Office Excel 2003 中,當您以編程方式用包含大型字符串的數組設置某個區域值時,可能會收到類似於以下內容的錯誤消息:
Run-time error '1004'.
Application-defined or operation-defined error.

回到頂端

原因

如果數組(單元格區域)中有一個或多個單元格所包含的字符串被設置爲包含 911 個以上的字符,就可能會發生此問題。

回到頂端

替代方法

要避免此問題,請編輯腳本,以便數組中的單元格所包含的字符串都不會包含 911 個以上的字符。

例如,下面的示例代碼塊中的以下代碼行定義了一個包含 912 個字符的字符串:
Sub XLTest()
Dim aValues(4)
 
  aValues(0) = "Test1"
  aValues(1) = "Test2"
  aValues(2) = "Test3"
 
  MsgBox "First the Good range set."
  aValues(3) = String(911, 65)
  
  Range("A1:D1").Value = aValues
 
  MsgBox "Now the bad range set."
  aValues(3) = String(912, 66)
  Range("A2:D2").Value = aValues
 
End Sub

回到頂端

更多信息

字符串是一系列以組的形式進行操縱的字符。字符串的長度通常是它所包含的字符的數量,或者其長度是預先定義的(如同本示例中一樣)。

回到頂端

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章