2015-07-02 76 views
0

我想通過與Documents.Open的字符串打開一個單詞.docm文件。它工作並打開文件,但在WordHandle.Documents(x).Name內部,它始終是「Document1」。另外打開的文檔被命名爲「Document1」VBA Documents.Open名稱=始終「Document1」

我在做什麼錯?

Sub FileOpen(ByVal fileName As String) 
    If Not gb_WordObjSet Then 
      Exit Sub 
    End If 

    If Not FileExists(fileName) Then 
     Exit Sub 
    End If 

    With gh_WordObject 
     .Documents.Open fileName:=fileName, OpenAndRepair:=True 

     With .ActiveWindow.View 
      .Type = 3 
      .ShowAll = True 
     End With 
    End With 
End Sub 

fileName例如, =「C:\ TEMP \ 20150702161254.docm」

gh_WordObject初始化這樣

Set gh_WordObject = CreateObject("Application.Word") 
+0

我們可以看一下你的代碼的其餘部分? – Dportology

+0

我更新了代碼 – Megamind

+0

你如何初始化'gh_WordObjSet'? – EngJon

回答

0

這是相同的行爲,你會看到,如果你手動打開在Word文檔時,使用「打開並修理選項「。要查看此信息,請轉到「文件打開」對話框中的選擇文檔,然後單擊「打開」旁邊的下拉箭頭並選擇「打開並修復」。這將創建一個基於原始文件的新文檔。

要正常打開該文檔,刪除OpenAndRepair參數:

gh_WordObject.Documents.Open FileName:=s_DokFileName 

或將其設置爲False:

gh_WordObject.Documents.Open FileName:=s_DokFileName, OpenAndRepair:=False 
+0

感謝它的工作!有時但很少生成的單詞對象已損壞。 OpenAndRepair解決了這個問題。你知道爲什麼會發生這種腐敗的共同來源?我不得不調試很多代碼= /。 – Megamind

+0

@Megamind - 如果您只是通過Word Object模型訪問文檔(而不是直接操作文件),那麼這種損壞不太可能是由您在代碼中執行的任何操作造成的。如果您在使用特定模板時看到頻繁損壞,則可能表明該模板已損壞。 – Jane

+0

@Megamind如果你想能夠處理有損壞文檔的情況,我會檢查這是否導致Open方法返回一個錯誤。如果確實如此,則可以包含一些錯誤處理,以便在發生錯誤時嘗試使用OpenAndRepair選項打開文檔。 – Jane

相關問題