2011-11-24 110 views
3

我已經在Excel中創建了一個Visual Basic腳本來打開,抓取內容並關閉一個數字(超過一百)的Word文檔。代碼的我該如何解決這個Excel Visual Basic運行時錯誤'62'?

部分是:

Private Function GrabTextFile(ByVal file_name As String) As String 
Dim fnum As Long 
    fnum = FreeFile() 
    Open file_name For Input As #fnum 
    GrabTextFile = Input$(LOF(fnum), #fnum) 
    Close #fnum 
End Function 

(的代碼的其餘部分在很大程度上基於this page from VB helper

腳本上行失敗:

GrabTextFile = Input$(LOF(fnum), #fnum) 

與消息:

Run-time error '62': 

Input past end of file 

它在文檔34上失敗。但是,如果我刪除特定文檔,然後重新運行該腳本,它將在該位置的新文檔上失敗。這意味着我有一個解放內存的問題(?)。

+0

該代碼看起來不錯。當文件實際上是二進制文件或包含dbcs字符時,如果嘗試使用'For Input'進行讀取時,99%的時間會出現此錯誤,請嘗試'strconv(InputB(LOF(fnum),#fnum),vbUnicode)' –

+0

@ AlexK。謝謝,但是當我嘗試Excel崩潰! – Wikis

+1

您可以重命名文件,使當前文檔#34移動到位置#33,當前#3​​3移到#34?這會告訴你,如果你有關於特定文檔的問題或用盡某些資源的問題 – barrowc

回答

3

既然這些都是Word文檔,我建議您嘗試GrabWordFile函數,而不是VB Helper page上列出的GrabTextFile函數。

+1

這是必要的,因爲沒有工作的文檔使用新的.docx擴展名而不是簡單的.doc。一旦我將.docx或.docx代碼構建到If .doc Then GrabWordFile代碼中,它就可以正常工作。 –